Przeglądaj źródła

update status ui

master
Alex Cheung 1 rok temu
rodzic
commit
9ac3e11f82
7 zmienionych plików z 131 dodań i 67 usunięć
  1. +2
    -2
      src/pages/PublicNotice/ListPanel/PublicNoteStatusUtils.js
  2. +11
    -2
      src/pages/PublicNoticeDetail/ApplicationDetailCard.js
  3. +6
    -4
      src/pages/PublicNoticeDetail_GLD/ApplicationDetailCard.js
  4. +38
    -2
      src/pages/PublicNoticeDetail_GLD/GazetteDetailCard.js
  5. +15
    -21
      src/pages/PublicNoticeDetail_GLD/StatusChangeDialog.js
  6. +56
    -35
      src/pages/PublicNoticeDetail_GLD/index.js
  7. +3
    -1
      src/utils/ApiPathConst.js

+ 2
- 2
src/pages/PublicNotice/ListPanel/PublicNoteStatusUtils.js Wyświetl plik

@@ -40,9 +40,9 @@ export function getStatusEng(params) {
export function getStatusByTextEng(status) {
switch (status) {
case "submitted":
return getStatusTag({ color: "#f5a83d", text: "Processing" })
return getStatusTag({ color: "#f5a83d", text: "Submitted" })
case "reviewed":
return getStatusTag({ color: "#f5a83d", text: "Processing" })
return getStatusTag({ color: "#0C489E", text: "Reviewed" })
case "confirmed":
if (localStorage.getItem('userData').creditor)
return getStatusTag({ color: "#22a13f", text: "Pending Publish" })


+ 11
- 2
src/pages/PublicNoticeDetail/ApplicationDetailCard.js Wyświetl plik

@@ -175,11 +175,20 @@ const ApplicationDetailCard = (
<FormLabel>申請狀態:</FormLabel>
</Grid>

<Grid item xs={12} md={9} lg={9}>
<FormControl variant="outlined" fullWidth >
<Grid item xs={12} md={2} lg={2}>
<FormControl variant="outlined">
{StatusUtils.getStatusByText(currentApplicationDetailData.status)}
</FormControl>
</Grid>
<Grid item xs={12} md={7} lg={7}>
<Stack direction="row" justifyContent="flex-start" alignItems="center">
<FormControl variant="outlined" fullWidth disabled>
<Typography id='reason'>
{currentApplicationDetailData.reason}
</Typography>
</FormControl>
</Stack>
</Grid>
</Grid>
</Grid>
</Grid>


+ 6
- 4
src/pages/PublicNoticeDetail_GLD/ApplicationDetailCard.js Wyświetl plik

@@ -31,6 +31,7 @@ import ReplayIcon from '@mui/icons-material/Replay';
const ApplicationDetailCard = (
{ applicationDetailData,
setStatus,
setUploadStatus
}
) => {

@@ -72,6 +73,7 @@ const ApplicationDetailCard = (
skey: fileDetail.skey,
filename: fileDetail.filename,
});
setUploadStatus(true)
};


@@ -109,7 +111,7 @@ const ApplicationDetailCard = (
border={false}
content={false}
>
{verified && currentApplicationDetailData.status != "rejected" ?
{verified && currentApplicationDetailData.status != "notAccepted" ?
<Grid container spacing={4} direction="row">
<Grid item xs={12} md={4} >
<Stack
@@ -119,7 +121,7 @@ const ApplicationDetailCard = (
spacing={2}
mb={2}
>
{currentApplicationDetailData.status == "accepted" ?
{currentApplicationDetailData.status == "reviewed" ?
<Button
// size="large"
variant="contained"
@@ -143,7 +145,7 @@ const ApplicationDetailCard = (
spacing={2}
mb={2}
>
{currentApplicationDetailData.status == "submitted" ?
{currentApplicationDetailData.status == "submitted"||currentApplicationDetailData.status == "reviewed" ?
<>
<Button
// size="large"
@@ -243,7 +245,7 @@ const ApplicationDetailCard = (
</Grid>

<Grid item xs={12} md={9} lg={9}>
<FormControl variant="outlined" fullWidth >
<FormControl variant="outlined">
{StatusUtils.getStatusByTextEng(currentApplicationDetailData.status)}
</FormControl>
</Grid>


+ 38
- 2
src/pages/PublicNoticeDetail_GLD/GazetteDetailCard.js Wyświetl plik

@@ -1,9 +1,9 @@
// material-ui
import {
FormControl,
// Button,
Button,
Grid,
// InputAdornment,
Stack,
Typography, FormLabel,
OutlinedInput,
} from '@mui/material';
@@ -20,10 +20,12 @@ import { lazy } from 'react';
const LoadingComponent = Loadable(lazy(() => import('../extra-pages/LoadingComponent')));
//import {useParams} from "react-router-dom";
import * as DateUtils from "utils/DateUtils";
import EditNoteIcon from '@mui/icons-material/EditNote';

// ==============================|| DASHBOARD - DEFAULT ||============================== //
const GazetteDetailCard = (
{ applicationDetailData,
setStatus
// isCollectData,
// updateUserObject,
// isNewRecord
@@ -36,6 +38,9 @@ const GazetteDetailCard = (
const [issueDate,setIssueDate] = useState("");
const [gazetteCode,setGazetteCode] = useState("");
const [groupTitle,setGroupTitle] = useState("");
const [verified, setVerified] = useState(null);
const [currentStatus, setCurrentStatus] = useState({});

const {register,
// getValues
} = useForm()
@@ -44,6 +49,8 @@ const GazetteDetailCard = (
//if user data from parent are not null
// console.log(applicationDetailData)
if (Object.keys(applicationDetailData).length > 0) {
setCurrentStatus(applicationDetailData.data.status);
setVerified(applicationDetailData.userData.verifiedBy ? true : false);
setIssueNum(applicationDetailData.gazetteIssueDetail.volume+"/"+applicationDetailData.gazetteIssueDetail.year
+" No. "+applicationDetailData.gazetteIssueDetail.issueNo);
setIssueDate(DateUtils.dateFormat(applicationDetailData.gazetteIssueDetail.issueDate, "D MMM YYYY (ddd)"));
@@ -60,6 +67,10 @@ const GazetteDetailCard = (
}
}, [issueNum]);

const groupDetailClick = () => () => {
setStatus("genGazetteCode")
};

// useEffect(() => {
// //upload latest data to parent
// const values = getValues();
@@ -79,6 +90,31 @@ const GazetteDetailCard = (
border={false}
content={false}
>
{verified && currentStatus != "notAccepted" ?
<Grid container spacing={4} direction="row">
<Grid item xs={12} md={4} >
<Stack
direction="row"
justifyContent="space-between"
alignItems="center"
spacing={2}
mb={2}
>
<Button
// size="large"
variant="contained"
onClick={groupDetailClick()}
sx={{
textTransform: 'capitalize',
alignItems: 'end'
}}>
<EditNoteIcon />
<Typography ml={1}> Gen Gazette Code</Typography>
</Button>
</Stack>
</Grid>
</Grid>
:null}
<Typography variant="h5" sx={{mb: 2, borderBottom: "1px solid black"}}>
Gazette Details
</Typography>


+ 15
- 21
src/pages/PublicNoticeDetail_GLD/StatusChangeDialog.js Wyświetl plik

@@ -30,21 +30,10 @@ const StatusChangeDialog = (props) => {
const [prositiveBtnText, setPrositiveBtnText] = useState("Confirm");
const [remarks, setRemarks] = useState("");
const [helperText, setHelperText] = useState("");
// const [selectedGazetteGroupInputType, setSelectedGazetteGroupInputType] = useState("");
const [comboInputValue, setComboInputValue] = useState("");
const groupTitleComboList = ComboData.groupTitle;

useEffect(() => {
// console.log(Object.keys(!props.selectedGazetteGroup).length)
// if (props.getStatus == "resubmit") {
// setStatus("Accept")
// } else if (props.getStatus == "reject") {
// setStatus("Reject")
// } else if (props.getStatus == "complete") {
// setStatus("Complete")
// } else if (props.getStatus == "withdraw") {
// setStatus("Withdraw")
// }

if (props.getStatus == "genGazetteCode") {
setDialogTitle("Gen Gazette Code");
setPrositiveBtnText("Gen");
@@ -59,21 +48,24 @@ const StatusChangeDialog = (props) => {
let str = "Are you sure you want to "+props.getStatus+" this application?"
return getConfirmContent(str);
}



}, [props.getStatus]);

const acceptedHandle = () => () => {
// console.log(selectedGazetteGroup)
if(props.getStatus == "notAccepted"){
const getStatus = props.getStatus.status;
if(getStatus == "notAccepted"){
if(!remarks || remarks=="" )
setHelperText("Please enter reason");
}
if(!helperText){
props.onWindowCallback(props.getStatus,{"reason": remarks});
props.setReason({"reason": remarks});
if (remarks!=null&&remarks!=""){
console.log(remarks)
// props.setStatusWindowAccepted(true);
}
}
if(getStatus != "notAccepted"){
props.setStatusWindowAccepted(true);
}
};


@@ -107,7 +99,7 @@ const StatusChangeDialog = (props) => {
placeholder="Please enter reason"
helperText={helperText}
onChange={(newValues)=>{
setRemarks(newValues);
setRemarks(newValues.target.value);
setHelperText("");
}}
>
@@ -144,10 +136,12 @@ const StatusChangeDialog = (props) => {
id="gazetteGroup"
options={groupTitleComboList}
filterOptions={(options) => options}
inputValue={props.selectedGazetteGroupInputType}
inputValue={comboInputValue.label}
onChange={(event, newValue) => {
if (newValue != null && newValue != {}) {
console.log(comboInputValue)
props.setSelectedGazetteGroupInputType(newValue.label);
setComboInputValue(newValue);
props.setSelectedGazetteGroup(newValue);
formik.setFieldValue("gazetteGroup", "")
} else {
@@ -198,7 +192,7 @@ const StatusChangeDialog = (props) => {
</Button>
</DialogActions>
<DialogActions>
<Button variant="contained" color="success" onClick={acceptedHandle()} autoFocus disabled={Object.keys(props.selectedGazetteGroup).length === 0 && status === "Accept"}>
<Button variant="contained" color="success" onClick={acceptedHandle()} autoFocus disabled={Object.keys(props.selectedGazetteGroup).length === 0 && props.getStatus === "genGazetteCode"}>
{prositiveBtnText}
</Button>
</DialogActions>


+ 56
- 35
src/pages/PublicNoticeDetail_GLD/index.js Wyświetl plik

@@ -26,10 +26,12 @@ const TabTableDetail = Loadable(lazy(() => import('./tabTableDetail/TabTable')))
import {
GET_PUBLIC_NOTICE_APPLY_DETAIL,
UPDATE_PUBLIC_NOTICE_APPLY_DETAIL,
SET_PUBLIC_NOTICE_STATUS_ACCEPTED,
SET_PUBLIC_NOTICE_GROUP_DETAIL,
SET_PUBLIC_NOTICE_STATUS_NOT_ACCEPT,
SET_PUBLIC_NOTICE_STATUS_COMPLATED,
SET_PUBLIC_NOTICE_STATUS_WITHDRAW
SET_PUBLIC_NOTICE_STATUS_WITHDRAW,
SET_PUBLIC_NOTICE_STATUS_RESUBMIT,
SET_PUBLIC_NOTICE_STATUS_REVIEWED
} from "utils/ApiPathConst";
const StatusChangeDialog = Loadable(lazy(() => import('./StatusChangeDialog')));
import * as DateUtils from "utils/DateUtils";
@@ -44,6 +46,7 @@ const PublicNoticeDetail_GLD = () => {
// const [refApplicationDetailData, setRefApplicationDetailData] = React.useState({});
const [isLoading, setLoading] = useState(false);
const LoadingComponent = Loadable(lazy(() => import('../extra-pages/LoadingComponent')));
const [getUploadStatus, setUploadStatus] = useState(false);

//pageTitle
const [appNo, setAapNo] = useState("");
@@ -59,6 +62,7 @@ const PublicNoticeDetail_GLD = () => {
const [statusWindowAccepted, setStatusWindowAccepted] = useState(false);
const [selectedGazetteGroup, setSelectedGazetteGroup] = useState({});
const [selectedGazetteGroupInputType, setSelectedGazetteGroupInputType] = useState("");
const [getReason, setReason] = useState({});

//editMode
const [updateApplicationObject, setUpdateApplicationObject] = useState({});
@@ -156,37 +160,28 @@ const PublicNoticeDetail_GLD = () => {
const handleReset = () => {
setSelectedGazetteGroupInputType("")
setSelectedGazetteGroup({});
setReason({});
};

useEffect(() => {
if (statusWindowAccepted) {
if (getStatus == "accept") {
if (getStatus == "genGazetteCode") {
onAcceptedClick()
} else if (getStatus == "reject") {
onNotAcceptClick()
} else if (getStatus == "complete") {
onComplatedClick()
} else if (getStatus == "withdraw") {
onWithdrawnClick()
} else if (getStatus == "notAccepted"){
onNotAcceptClick(getReason);
} else if (getStatus == "resubmit"){
onReSubmitClick();
}
}
}, [statusWindowAccepted]);

const onWindowCallback = (status, data) => {
if (status == "genGazetteCode") {
onAcceptedClick()
} else if (getStatus == "notAccepted") {
onNotAcceptClick(data.reason);
} else if (getStatus == "complete") {
onComplatedClick()
} else if (getStatus == "withdraw") {
onWithdrawnClick()
}
}

const onAcceptedClick = () => {
if (params.id > 0) {
axios.post(`${SET_PUBLIC_NOTICE_STATUS_ACCEPTED}/${params.id}`,
axios.post(`${SET_PUBLIC_NOTICE_GROUP_DETAIL}/${params.id}`,
{
"groupTitle": selectedGazetteGroup.title,
"groupNo": selectedGazetteGroup.type,
@@ -210,26 +205,13 @@ const PublicNoticeDetail_GLD = () => {
if (params.id <= 0) return;
HttpUtils.post({
url: `${SET_PUBLIC_NOTICE_STATUS_NOT_ACCEPT}/${params.id}`,
params: {
reason: reason
},
params: reason,
onSuccess: function () {
setOpen(false);
handleClose();
location.reload();
}
});
// axios.get(`${SET_PUBLIC_NOTICE_STATUS_REJRCTED}/${params.id}`)
// .then((response) => {
// if (response.status === 204) {
// setOpen(false);
// handleClose();
// location.reload();
// }
// })
// .catch(error => {
// console.log(error);
// return false;
// });
// }
}

const onComplatedClick = () => {
@@ -266,16 +248,53 @@ const PublicNoticeDetail_GLD = () => {
}
};

const onReSubmitClick = () => {
if (params.id > 0) {
axios.get(`${SET_PUBLIC_NOTICE_STATUS_RESUBMIT}/${params.id}`)
.then((response) => {
if (response.status === 204) {
setOpen(false);
handleClose();
location.reload();
}
})
.catch(error => {
console.log(error);
return false;
});
}
};

useEffect(() => {
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) {
setUploadStatus(false);
location.reload();
}
})
.catch(error => {
console.log(error);
return false;
});
}else{
setUploadStatus(false);
}
}, [getUploadStatus]);

return (
<Grid container sx={{ maxnHeight: '500vh', backgroundColor: '#ffffff' }} direction="column">
<StatusChangeDialog open={open}
handleClose={handleClose}
onWindowCallback={onWindowCallback}
setReason={setReason}
setStatusWindowAccepted={setStatusWindowAccepted}
getStatus={getStatus}
issueDate={issueDate}
issueNum={issueNum}
gazetteIssue={gazetteIssue}
//combo value
selectedGazetteGroup={selectedGazetteGroup}
setSelectedGazetteGroup={setSelectedGazetteGroup}
selectedGazetteGroupInputType={selectedGazetteGroupInputType}
@@ -305,6 +324,7 @@ const PublicNoticeDetail_GLD = () => {
applicationDetailData={applicationDetailData}
setStatus={setStatus}
// setReload = {setReload}
setUploadStatus={setUploadStatus}
setUpdateApplicationObject={setUpdateApplicationObject}
isEditMode={isEditMode}
setiIsSave={setiIsSave}
@@ -318,6 +338,7 @@ const PublicNoticeDetail_GLD = () => {
<GazetteDetailCard
// updateUserObject={updateUserObject}
applicationDetailData={applicationDetailData}
setStatus={setStatus}
// isCollectData={isCollectData}
// isNewRecord={isNewRecord}
/>


+ 3
- 1
src/utils/ApiPathConst.js Wyświetl plik

@@ -58,11 +58,13 @@ export const POST_PUBLIC_NOTICE_APPLY = apiPath+'/application/apply';
export const POST_ADMIN_USER_REGISTER = apiPath+'/user/registry';
export const DELETE_USER = apiPath+'/user';
export const GET_PUBLIC_NOTICE_APPLY_DETAIL = apiPath+'/application/application-detail';
export const SET_PUBLIC_NOTICE_STATUS_ACCEPTED = apiPath+'/application/application-detail-status-accepted';
export const SET_PUBLIC_NOTICE_GROUP_DETAIL = apiPath+'/application/application-group-detail';
export const SET_PUBLIC_NOTICE_STATUS_NOT_ACCEPT = apiPath+'/application/application-detail-status-not-accept';
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 SET_PUBLIC_NOTICE_STATUS_RESUBMIT = apiPath+'/application/application-detail-status-resubmit';
export const SET_PUBLIC_NOTICE_STATUS_REVIEWED = apiPath+'/application/application-detail-status-reviewed';
export const UPDATE_PUBLIC_NOTICE_APPLY_DETAIL = apiPath+'/application/save';

export const GET_ISSUE_COMBO = apiPath+'/gazette-issue/combo';


Ładowanie…
Anuluj
Zapisz