diff --git a/src/pages/PublicNoticeDetail_GLD/ApplicationDetailCard.js b/src/pages/PublicNoticeDetail_GLD/ApplicationDetailCard.js index 312c6d6..3c7afdd 100644 --- a/src/pages/PublicNoticeDetail_GLD/ApplicationDetailCard.js +++ b/src/pages/PublicNoticeDetail_GLD/ApplicationDetailCard.js @@ -39,8 +39,10 @@ import DownloadIcon from '@mui/icons-material/Download'; const ApplicationDetailCard = ( { applicationDetailData, setStatus, - // isCollectData, - // updateUserObject, + setReload, + isEditMode, + setUpdateApplicationObject, + setiIsSave, // isNewRecord } ) => { @@ -53,8 +55,24 @@ const ApplicationDetailCard = ( // const navigate = useNavigate() // const params = useParams(); + const [editMode, setEditMode] = useState(false); + const onEditClick = () => () => { + setEditMode(true); + isEditMode(true); + }; + + const onSaveClick = () => () => { + //upload latest data to parent + const values = getValues(); + const objectData ={ + ...values, + } + setUpdateApplicationObject({objectData}); + setiIsSave(true) + }; + const {register, - // getValues + getValues } = useForm() useEffect(() => { @@ -84,8 +102,13 @@ const ApplicationDetailCard = ( }); }; + const reloadHandle = () => () => { + setReload(true) + setEditMode(false) + }; + const acceptedClick = () => () =>{ - setStatus("accepted") + setStatus("accept") }; const rejectedClick = () => () =>{ @@ -108,7 +131,7 @@ const ApplicationDetailCard = ( border={false} content={false} > - {verified? + {verified && currentApplicationDetailData.status != "rejected"? - + {editMode? + <> + + + : + <> + + + + + } + {currentApplicationDetailData.status =="accepted"? - diff --git a/src/pages/PublicNoticeDetail_GLD/index.js b/src/pages/PublicNoticeDetail_GLD/index.js index 3568d31..c688843 100644 --- a/src/pages/PublicNoticeDetail_GLD/index.js +++ b/src/pages/PublicNoticeDetail_GLD/index.js @@ -25,7 +25,11 @@ const ClientDetailCard = Loadable(lazy(() => import('./ClientDetailCard'))); const TabTableDetail = Loadable(lazy(() => import('./tabTableDetail/TabTable'))); import { GET_PUBLIC_NOTICE_APPLY_DETAIL, - SET_PUBLIC_NOTICE_STATUS_ACCEPTED + UPDATE_PUBLIC_NOTICE_APPLY_DETAIL, + SET_PUBLIC_NOTICE_STATUS_ACCEPTED, + SET_PUBLIC_NOTICE_STATUS_REJRCTED, + SET_PUBLIC_NOTICE_STATUS_COMPLATED, + SET_PUBLIC_NOTICE_STATUS_WITHDRAW } from "utils/ApiPathConst"; const StatusChangeDialog = Loadable(lazy(() => import('./StatusChangeDialog'))); import * as DateUtils from "utils/DateUtils"; @@ -38,18 +42,31 @@ const PublicNoticeDetail_GLD = () => { // const navigate = useNavigate() const [applicationDetailData, setApplicationDetailData] = useState({}); // const [refApplicationDetailData, setRefApplicationDetailData] = React.useState({}); + const [reload, setReload] = useState(false); + const [isLoading,setLoading] = useState(false); + const LoadingComponent = Loadable(lazy(() => import('../extra-pages/LoadingComponent'))); + + //pageTitle const [appNo, setAapNo] = useState(""); const [gazetteIssue, setGazetteIssue] = useState(""); const [issueDate,setIssueDate] = useState(""); const [issueNum,setIssueNum] = useState(""); const [groupNo, setGroupNo] = useState(""); - const [groupTitle, setGroupTitle] = useState(""); + // const [groupTitle, setGroupTitle] = useState(""); + + //statusWindow const [open, setOpen] = useState(false); const [getStatus, setStatus] = useState(""); const [statusWindowAccepted, setStatusWindowAccepted] = useState(false); const [selectedGazetteGroup, setSelectedGazetteGroup] = useState({}); const [selectedGazetteGroupInputType, setSelectedGazetteGroupInputType] = useState(""); + //editMode + const [updateApplicationObject, setUpdateApplicationObject] = useState({}); + const [editMode, isEditMode] = useState(false); + const [isSave, setiIsSave] = useState(false); + + const BackgroundHead = { backgroundImage: `url(${titleBackgroundImg})`, width: '100%', @@ -57,14 +74,26 @@ const PublicNoticeDetail_GLD = () => { backgroundSize:'cover' } - const title = groupNo!=""?("Application / "+appNo+", "+gazetteIssue+", "+groupNo+" , "+groupTitle):("Application / "+appNo+", "+gazetteIssue) + const title = groupNo!=null?("Application / "+appNo+", "+gazetteIssue+", "+issueNum+" , "+groupNo):("Application / "+appNo+", "+gazetteIssue+", "+issueNum) useEffect(() => { - loadApplicationDetail() + loadApplicationDetail() }, []); - + + useEffect(() => { + if (reload){ + loadApplicationDetail() + } + }, [reload]); + + useEffect(() => { + if(editMode&&isSave){ + onUpdateClick(updateApplicationObject) + } + }, [updateApplicationObject]); + const loadApplicationDetail = () => { - if(params.id > 0 ){ + if(params.id > 0){ axios.get(`${GET_PUBLIC_NOTICE_APPLY_DETAIL}/${params.id}`) .then((response) => { if (response.status === 200) { @@ -74,10 +103,8 @@ const PublicNoticeDetail_GLD = () => { setGazetteIssue(gazetteIssueDetail.year +" Vol "+gazetteIssueDetail.volume); setIssueNum(" No. "+gazetteIssueDetail.issueNo); setIssueDate(DateUtils.dateFormat(gazetteIssueDetail.issueDate, "D MMM YYYY (ddd)")); - if (gazetteIssueDetail.data!==null&&gazetteIssueDetail.data!==undefined){ - setGroupNo("No. "+gazetteIssueDetail.data.groupNo); - setGroupTitle("No. "+gazetteIssueDetail.data.groupTitle); - } + setGroupNo(response.data.data.groupNo); + setLoading(false); } }) .catch(error => { @@ -87,6 +114,29 @@ const PublicNoticeDetail_GLD = () => { } } + const onUpdateClick = (updateApplicationObject) => { + const data = updateApplicationObject.objectData + if(params.id > 0 ){ + setLoading(true); + axios.post(`${UPDATE_PUBLIC_NOTICE_APPLY_DETAIL}/${params.id}`, + { + contactPerson:data.contactPerson, + contactFaxNo:data.contactFaxNo, + contactTelNo:data.contactTelNo, + } + ) + .then((response) => { + if (response.status === 200) { + loadApplicationDetail() + } + }) + .catch(error => { + console.log(error); + return false; + }); + } + }; + useEffect(() => { // console.log(getStatus) if(getStatus!==""){ @@ -108,8 +158,7 @@ const PublicNoticeDetail_GLD = () => { useEffect(() => { if(statusWindowAccepted){ - console.log(selectedGazetteGroup) - if(getStatus == "accepted"){ + if(getStatus == "accept"){ onAcceptedClick() }else if (getStatus== "reject"){ onRejectedClick() @@ -123,7 +172,12 @@ const PublicNoticeDetail_GLD = () => { const onAcceptedClick = () => { if(params.id > 0 ){ - axios.get(`${SET_PUBLIC_NOTICE_STATUS_ACCEPTED}/${params.id}`) + axios.post(`${SET_PUBLIC_NOTICE_STATUS_ACCEPTED}/${params.id}`, + { + "groupTitle": selectedGazetteGroup.title, + "groupNo": selectedGazetteGroup.type, + } + ) .then((response) => { if (response.status === 204) { setOpen(false); @@ -138,7 +192,7 @@ const PublicNoticeDetail_GLD = () => { } }; - const onRejectedClick = () => () => { + const onRejectedClick = () => { if(params.id > 0 ){ axios.get(`${SET_PUBLIC_NOTICE_STATUS_REJRCTED}/${params.id}`) .then((response) => { @@ -155,7 +209,7 @@ const PublicNoticeDetail_GLD = () => { } }; - const onComplatedClick = () => () => { + const onComplatedClick = () => { if(params.id > 0 ){ axios.get(`${SET_PUBLIC_NOTICE_STATUS_COMPLATED}/${params.id}`) .then((response) => { @@ -172,7 +226,7 @@ const PublicNoticeDetail_GLD = () => { } }; - const onWithdrawnClick = () => () => { + const onWithdrawnClick = () => { if(params.id > 0 ){ axios.get(`${SET_PUBLIC_NOTICE_STATUS_WITHDRAW}/${params.id}`) .then((response) => { @@ -192,7 +246,7 @@ const PublicNoticeDetail_GLD = () => { return ( @@ -214,13 +268,18 @@ const PublicNoticeDetail_GLD = () => { - : + + /> + } diff --git a/src/utils/ApiPathConst.js b/src/utils/ApiPathConst.js index c53edbd..56e0ed7 100644 --- a/src/utils/ApiPathConst.js +++ b/src/utils/ApiPathConst.js @@ -63,6 +63,7 @@ export const SET_PUBLIC_NOTICE_STATUS_REJRCTED = apiPath+'/application/applicati export const SET_PUBLIC_NOTICE_STATUS_CANCELLED = apiPath+'/application/application-detail-status-cancelled'; export const SET_PUBLIC_NOTICE_STATUS_COMPLATED = apiPath+'/application/application-detail-status-complated'; export const SET_PUBLIC_NOTICE_STATUS_WITHDRAW = apiPath+'/application/application-detail-status-withdrawn'; +export const UPDATE_PUBLIC_NOTICE_APPLY_DETAIL = apiPath+'/application/save'; //User Group export const POST_AND_UPDATE_USER_GROUP = apiPath+'/group/save'; \ No newline at end of file diff --git a/src/utils/ComboData.js b/src/utils/ComboData.js index 9794148..95e5a2a 100644 --- a/src/utils/ComboData.js +++ b/src/utils/ComboData.js @@ -34,9 +34,9 @@ export const publicNoticeStaticEng = [ ]; export const groupTitle = [ - { key: 1, label: 'Private Bill', type: 'A' }, - { key: 2, label: 'Companies Ordinance', type: 'B' }, - { key: 3, label: 'High Court', type: 'C' }, - { key: 4, label: 'Notices', type: 'D' }, - { key: 5, label: 'Miscellaneous (Companies)', type: 'E' }, + { key: 1, label: 'A - Private Bill', title: 'Private Bill', type: 'A'}, + { key: 2, label: 'B - Companies Ordinance', title: 'Companies Ordinance', type: 'B' }, + { key: 3, label: 'C - High Court', title: 'High Court', type: 'C' }, + { key: 4, label: 'D - Notices', title: 'Notices', type: 'D' }, + { key: 5, label: 'E - Miscellaneous (Companies)', title: 'Miscellaneous  (Companies)', type: 'E' }, ]; \ No newline at end of file