diff --git a/src/pages/PublicNotice/ListPanel/BaseGrid.js b/src/pages/PublicNotice/ListPanel/BaseGrid.js index 85001ff..ce74361 100644 --- a/src/pages/PublicNotice/ListPanel/BaseGrid.js +++ b/src/pages/PublicNotice/ListPanel/BaseGrid.js @@ -8,11 +8,17 @@ import { } from '@mui/material'; import * as DateUtils from "utils/DateUtils" import * as StatusUtils from "./PublicNoteStatusUtils"; +import {useNavigate} from "react-router-dom"; + // ==============================|| EVENT TABLE ||============================== // export default function BaseGrid({rows}) { const [rowModesModel] = React.useState({}); + const navigate = useNavigate() + const handleDetailClick = (params) => () => { + navigate('/publicNotice/'+ params.id); + }; const columns = [ { id: 'appNo', @@ -75,8 +81,8 @@ export default function BaseGrid({rows}) { headerName: '', width: 80, cellClassName: 'actions', - renderCell: () => { - return ; + renderCell: (params) => { + return ; }, } ]; diff --git a/src/pages/PublicNotice/ListPanel/PendingPaymentTab.js b/src/pages/PublicNotice/ListPanel/PendingPaymentTab.js index 1c6b97f..be446a7 100644 --- a/src/pages/PublicNotice/ListPanel/PendingPaymentTab.js +++ b/src/pages/PublicNotice/ListPanel/PendingPaymentTab.js @@ -11,12 +11,17 @@ import { } from '@mui/material'; import * as DateUtils from "utils/DateUtils" import * as StatusUtils from "./PublicNoteStatusUtils"; +import {useNavigate} from "react-router-dom"; // ==============================|| EVENT TABLE ||============================== // export default function SubmittedTab({ rows }) { const [selectedRowItems, setSelectedRowItems] = React.useState([]); const [isPopUp, setIsPopUp] = React.useState(false); + const navigate = useNavigate() + const handleDetailClick = (params) => () => { + navigate('/publicNotice/'+ params.id); + }; const columns = [ { @@ -82,8 +87,8 @@ export default function SubmittedTab({ rows }) { headerName: '', width: 100, cellClassName: 'actions', - renderCell: () => { - return ; + renderCell: (params) => { + return ; }, } ]; diff --git a/src/pages/PublicNotice/ListPanel/SearchPublicNoticeTable.js b/src/pages/PublicNotice/ListPanel/SearchPublicNoticeTable.js index 3cb57ea..789f050 100644 --- a/src/pages/PublicNotice/ListPanel/SearchPublicNoticeTable.js +++ b/src/pages/PublicNotice/ListPanel/SearchPublicNoticeTable.js @@ -9,11 +9,17 @@ import { import { useEffect } from "react"; import * as DateUtils from "utils/DateUtils"; import * as StatusUtils from "./PublicNoteStatusUtils"; +import {useNavigate} from "react-router-dom"; // ==============================|| EVENT TABLE ||============================== // export default function SearchPublicNoticeTable({ recordList }) { const [rows, setRows] = React.useState(recordList); const [rowModesModel] = React.useState({}); + const navigate = useNavigate() + + const handleDetailClick = (params) => () => { + navigate('/publicNotice/'+ params.id); + }; useEffect(() => { setRows(recordList); @@ -82,8 +88,8 @@ export default function SearchPublicNoticeTable({ recordList }) { headerName: '', width: 100, cellClassName: 'actions', - renderCell: () => { - return ; + renderCell: (params) => { + return ; }, } ]; diff --git a/src/pages/PublicNoticeDetail/ApplicationDetailCard.js b/src/pages/PublicNoticeDetail/ApplicationDetailCard.js index 2c005b3..4d1960e 100644 --- a/src/pages/PublicNoticeDetail/ApplicationDetailCard.js +++ b/src/pages/PublicNoticeDetail/ApplicationDetailCard.js @@ -23,9 +23,10 @@ const LoadingComponent = Loadable(lazy(() => import('../extra-pages/LoadingCompo // import {useParams} from "react-router-dom"; import * as HttpUtils from "utils/HttpUtils" import * as StatusUtils from "../PublicNotice/ListPanel/PublicNoteStatusUtils"; +import * as DateUtils from "utils/DateUtils"; -import BorderColorOutlinedIcon from '@mui/icons-material/BorderColorOutlined'; -import DoneIcon from '@mui/icons-material/Done'; +// import BorderColorOutlinedIcon from '@mui/icons-material/BorderColorOutlined'; +// import DoneIcon from '@mui/icons-material/Done'; import CloseIcon from '@mui/icons-material/Close'; import EditNoteIcon from '@mui/icons-material/EditNote'; import DownloadIcon from '@mui/icons-material/Download'; @@ -42,6 +43,8 @@ const ApplicationDetailCard = ( const [companyName, setCompanyName] = useState({}); const [fileDetail, setfileDetail] = useState({}); const [onReady,setOnReady] = useState(false); + const [issueNum,setIssueNum] = useState(""); + const [issueDate,setIssueDate] = useState(""); const {register, // getValues } = useForm() @@ -49,10 +52,14 @@ const ApplicationDetailCard = ( useEffect(() => { //if user data from parent are not null // console.log(applicationDetailData) - if (Object.keys(applicationDetailData).length > 0) { + if (Object.keys(applicationDetailData).length > 0 &&applicationDetailData.data!==null) { setCurrentApplicationDetailData(applicationDetailData.data); setCompanyName(applicationDetailData.companyName); setfileDetail(applicationDetailData.fileDetail); + setIssueNum(applicationDetailData.gazetteIssueDetail.volume+"/"+applicationDetailData.gazetteIssueDetail.year + +" No. "+applicationDetailData.gazetteIssueDetail.issueNo); + setIssueDate(DateUtils.dateFormat(applicationDetailData.gazetteIssueDetail.issueDate, "D MMM YYYY (ddd)")); + } }, [applicationDetailData]); @@ -96,8 +103,8 @@ const ApplicationDetailCard = ( border={false} content={false} > - - + + - - - - - - {currentApplicationDetailData.status =="submitted"? - <> - - - : - <> - - - - } - Application Details + 公共啟事申請資料
@@ -206,7 +150,7 @@ const ApplicationDetailCard = ( - Application No: + 申請編號: @@ -228,7 +172,7 @@ const ApplicationDetailCard = ( - Status: + 申請狀態: @@ -245,7 +189,7 @@ const ApplicationDetailCard = ( - Applicant: + 申請人: @@ -276,31 +220,21 @@ const ApplicationDetailCard = ( - - Contact Phone: + 憲報期數: - + - - - - + @@ -314,7 +248,7 @@ const ApplicationDetailCard = ( - Contect Person: + 聯絡人: @@ -334,31 +268,21 @@ const ApplicationDetailCard = ( - - Contact Fax: + 發布日期: - + - - - - + @@ -366,17 +290,83 @@ const ApplicationDetailCard = ( + + + + 聯絡電話: + + + + + + + + + + + + + + + + + + 傳真號碼: + + + + + + + + + + + + + + - + - - Manuscript File: + 犒件檔案: - + diff --git a/src/pages/PublicNoticeDetail/ClientDetailCard.js b/src/pages/PublicNoticeDetail/ClientDetailCard.js deleted file mode 100644 index 28cf4b5..0000000 --- a/src/pages/PublicNoticeDetail/ClientDetailCard.js +++ /dev/null @@ -1,357 +0,0 @@ -// material-ui -import { - FormControl, - Button, - Grid, - // InputAdornment, - Typography, FormLabel, - OutlinedInput, - Stack -} from '@mui/material'; -import MainCard from "../../components/MainCard"; -import * as React from "react"; -import {useForm} from "react-hook-form"; -import { - useEffect, - useState - } from "react"; -// import Checkbox from "@mui/material/Checkbox"; -import Loadable from 'components/Loadable'; -import { lazy } from 'react'; -const LoadingComponent = Loadable(lazy(() => import('../extra-pages/LoadingComponent'))); -//import {useParams} from "react-router-dom"; -import ContentPasteSearchIcon from '@mui/icons-material/ContentPasteSearch'; -import CheckCircleOutline from '@mui/icons-material/CheckCircleOutline'; -import HighlightOff from '@mui/icons-material/HighlightOff'; -import {useNavigate} from "react-router-dom"; - -// ==============================|| DASHBOARD - DEFAULT ||============================== // -const ClientDetailCard = ( - { applicationDetailData, - // isCollectData, - // updateUserObject, - // isNewRecord - } - ) => { - // const params = useParams(); - const [currentApplicationDetailData, setCurrentApplicationDetailData] = useState({}); - const [onReady,setOnReady] = useState(false); - const [companyName, setCompanyName] = useState({}); - const {register, - // getValues - } = useForm() - const navigate = useNavigate() - - useEffect(() => { - //if user data from parent are not null - if (Object.keys(applicationDetailData).length > 0 && applicationDetailData !== undefined) { - setCurrentApplicationDetailData(applicationDetailData.userData); - setCompanyName(applicationDetailData.companyName); - } - }, [applicationDetailData]); - - useEffect(() => { - //if state data are ready and assign to different field - // console.log(currentApplicationDetailData) - if (Object.keys(currentApplicationDetailData).length > 0) { - setOnReady(true); - } - }, [currentApplicationDetailData]); - - const handleViewClick = () => () => { - console.log(currentApplicationDetailData) - currentApplicationDetailData.type == "ORG"? - navigate('/orgUser/'+ currentApplicationDetailData.id): - navigate('/indUser/'+ currentApplicationDetailData.id); - }; - - // useEffect(() => { - // //upload latest data to parent - // const values = getValues(); - // const objectData ={ - // ...values, - // locked: locked, - // } - // updateUserObject(objectData); - // }, [isCollectData]); - - return ( - !onReady ? - - : - - - - - - - - - - Client Details - - - - - {currentApplicationDetailData.verifiedBy!==null? - - - Verified - - - : - - - Not Verified - - - - } - - - - - Client Type: - - - - - - - - {currentApplicationDetailData.type==="ORG"? - <> - - - Company Name (English): - - - - - - - - - - Company Name (Chinese): - - - - - - - - - - English Name: - - - - - - - - - - Contact Phone: - - - - - - - - - - - - - - - Email: - - - - - - - - : - <> - - - English Name: - - - - - - - - - - Chinese Name: - - - - - - - - - - Contact Phone: - - - - - - - - - - - - - - - Email: - - - - - - - - - } - - - - ); -}; - -export default ClientDetailCard; diff --git a/src/pages/PublicNoticeDetail/GazetteDetailCard.js b/src/pages/PublicNoticeDetail/GazetteDetailCard.js deleted file mode 100644 index 3676a09..0000000 --- a/src/pages/PublicNoticeDetail/GazetteDetailCard.js +++ /dev/null @@ -1,189 +0,0 @@ -// material-ui -import { - FormControl, - // Button, - Grid, - // InputAdornment, - Typography, FormLabel, - OutlinedInput, -} from '@mui/material'; -import MainCard from "../../components/MainCard"; -import * as React from "react"; -import {useForm} from "react-hook-form"; -import { - useEffect, - useState - } from "react"; -// import Checkbox from "@mui/material/Checkbox"; -import Loadable from 'components/Loadable'; -import { lazy } from 'react'; -const LoadingComponent = Loadable(lazy(() => import('../extra-pages/LoadingComponent'))); -//import {useParams} from "react-router-dom"; -import * as DateUtils from "utils/DateUtils"; - -// ==============================|| DASHBOARD - DEFAULT ||============================== // -const GazetteDetailCard = ( - { applicationDetailData, - // isCollectData, - // updateUserObject, - // isNewRecord - } - ) => { - // const params = useParams(); - // const [currentApplicationDetailData, setCurrentApplicationDetailData] = useState({}); - const [onReady,setOnReady] = useState(false); - const [issueNum,setIssueNum] = useState(""); - const [issueDate,setIssueDate] = useState(""); - const [gazetteCode,setGazetteCode] = useState(""); - const [groupTitle,setGroupTitle] = useState(""); - const {register, - // getValues - } = useForm() - - useEffect(() => { - //if user data from parent are not null - // console.log(applicationDetailData) - if (Object.keys(applicationDetailData).length > 0) { - setIssueNum(applicationDetailData.gazetteIssueDetail.volume+"/"+applicationDetailData.gazetteIssueDetail.year - +" No. "+applicationDetailData.gazetteIssueDetail.issueNo); - setIssueDate(DateUtils.dateFormat(applicationDetailData.gazetteIssueDetail.issueDate, "D MMM YYYY (ddd)")); - setGazetteCode(applicationDetailData.data.groupNo) - setGroupTitle(applicationDetailData.data.groupTitle) - } - }, [applicationDetailData]); - - useEffect(() => { - //if state data are ready and assign to different field - // console.log(currentApplicationDetailData) - if (issueNum.length > 0) { - setOnReady(true); - } - }, [issueNum]); - - // useEffect(() => { - // //upload latest data to parent - // const values = getValues(); - // const objectData ={ - // ...values, - // locked: locked, - // } - // updateUserObject(objectData); - // }, [isCollectData]); - - - return ( - !onReady ? - - : - - - Gazette Details - -
- - - - - - - Issue Number: - - - - - - - - - - - - - Gazette Code: - - - - - - - - - - - - - - - Issue Date: - - - - - - - - - - - - - Group Title: - - - - - - - - - - - - -
-
- ); -}; - -export default GazetteDetailCard; diff --git a/src/pages/PublicNoticeDetail/index.js b/src/pages/PublicNoticeDetail/index.js index 1d408a6..f0821cb 100644 --- a/src/pages/PublicNoticeDetail/index.js +++ b/src/pages/PublicNoticeDetail/index.js @@ -20,12 +20,11 @@ import axios from "axios"; import titleBackgroundImg from 'assets/images/dashboard/gazette-bar.png' const ApplicationDetailCard = Loadable(lazy(() => import('./ApplicationDetailCard'))); -const GazetteDetailCard = Loadable(lazy(() => import('./GazetteDetailCard'))); -const ClientDetailCard = Loadable(lazy(() => import('./ClientDetailCard'))); -const TabTableDetail = Loadable(lazy(() => import('./tabTableDetail/TabTable'))); +// const TabTableDetail = Loadable(lazy(() => import('./tabTableDetail/TabTable'))); import { GET_PUBLIC_NOTICE_APPLY_DETAIL, } from "utils/ApiPathConst"; +import {useNavigate} from "react-router-dom"; // ==============================|| Body - DEFAULT ||============================== // @@ -33,7 +32,9 @@ import { const DashboardDefault = () => { const params = useParams(); const [applicationDetailData, setApplicationDetailData] = useState({}); + const [appNo, setAapNo] = useState(""); // const [refApplicationDetailData, setRefApplicationDetailData] = React.useState({}); + const navigate = useNavigate() const BackgroundHead = { backgroundImage: `url(${titleBackgroundImg})`, @@ -41,10 +42,7 @@ const DashboardDefault = () => { height: '100%', backgroundSize:'cover' } - const appNo = "G2023-343" - const gazetteIssue = "2023 Vol 027" - const issueNo = "No. 36" - const issueDate = "A001" + // const appNo = "G2023-343" useEffect(() => { if(params.id > 0 ){ @@ -52,7 +50,7 @@ const DashboardDefault = () => { .then((response) => { if (response.status === 200) { setApplicationDetailData(response.data); - // setRefApplicationDetailData(response.data); + setAapNo(response.data.data.appNo); } }) .catch(error => { @@ -62,26 +60,32 @@ const DashboardDefault = () => { } }, []); + useEffect(() => { + if(applicationDetailData.data === null){ + navigate('/publicNotice'); + } + }, [applicationDetailData]); + return ( - +
- Application + 我的公共啟事
- Application / {appNo}, {gazetteIssue}, {issueNo} , {issueDate} + 我的公共啟事 / {appNo} - - - - - - + + + {/* */} + {/* */} + + { /> - - - - - - - + {/* + - - - - - - - - - - - - + */} + {/* */} + {/* */} diff --git a/src/pages/PublicNoticeDetail_GLD/index.js b/src/pages/PublicNoticeDetail_GLD/index.js index 1d408a6..2f01745 100644 --- a/src/pages/PublicNoticeDetail_GLD/index.js +++ b/src/pages/PublicNoticeDetail_GLD/index.js @@ -34,6 +34,10 @@ const DashboardDefault = () => { const params = useParams(); const [applicationDetailData, setApplicationDetailData] = useState({}); // const [refApplicationDetailData, setRefApplicationDetailData] = React.useState({}); + const [appNo, setAapNo] = useState(""); + const [gazetteIssue, setGazetteIssue] = useState(""); + const [groupNo, setGroupNo] = useState(""); + const [groupTitle, setGroupTitle] = useState(""); const BackgroundHead = { backgroundImage: `url(${titleBackgroundImg})`, @@ -41,10 +45,10 @@ const DashboardDefault = () => { height: '100%', backgroundSize:'cover' } - const appNo = "G2023-343" - const gazetteIssue = "2023 Vol 027" - const issueNo = "No. 36" - const issueDate = "A001" + // const appNo = "G2023-343" + // const gazetteIssue = "2023 Vol 027" + // const issueNo = "No. 36" + // const issueDate = "A001" useEffect(() => { if(params.id > 0 ){ @@ -52,7 +56,13 @@ const DashboardDefault = () => { .then((response) => { if (response.status === 200) { setApplicationDetailData(response.data); + const gazetteIssueDetail = response.data.gazetteIssueDetail; // setRefApplicationDetailData(response.data); + setAapNo(response.data.data.appNo); + setGazetteIssue(gazetteIssueDetail.year +" Vol "+gazetteIssueDetail.volume); + setGroupNo("No. "+gazetteIssueDetail.data.groupNo); + setGroupTitle("No. "+gazetteIssueDetail.data.groupTitle); + } }) .catch(error => { @@ -73,7 +83,7 @@ const DashboardDefault = () => { - Application / {appNo}, {gazetteIssue}, {issueNo} , {issueDate} + Application / {appNo}, {gazetteIssue}, {groupNo} , {groupTitle} diff --git a/src/routes/PublicUserRoutes.js b/src/routes/PublicUserRoutes.js index 99bdae7..9e3aa05 100644 --- a/src/routes/PublicUserRoutes.js +++ b/src/routes/PublicUserRoutes.js @@ -10,6 +10,7 @@ const DashboardDefault = Loadable(lazy(() => import('pages/publicDashboard'))); const ManageOrgUser = Loadable(lazy(() => import('pages/ManageOrgUserPage'))); const PublicNotice = Loadable(lazy(() => import('pages/PublicNotice/ListPanel'))); const PublicNoticeApplyForm = Loadable(lazy(() => import('pages/PublicNotice/ApplyForm'))); +const PublicNoticeDetail = Loadable(lazy(() => import('pages/PublicNoticeDetail'))); // ==============================|| MAIN ROUTING ||============================== // @@ -39,7 +40,11 @@ const PublicDashboard = { { path: 'publicNotice/apply', element: - } + }, + { + path: 'publicNotice/:id', + element: + }, ] }, ]