diff --git a/src/pages/Proof/Reply_GLD/ApplicationDetails.js b/src/pages/Proof/Reply_GLD/ApplicationDetails.js index 09851c0..950b1d9 100644 --- a/src/pages/Proof/Reply_GLD/ApplicationDetails.js +++ b/src/pages/Proof/Reply_GLD/ApplicationDetails.js @@ -5,26 +5,35 @@ import { Typography, FormLabel, TextField, + Button, + Stack, + Dialog, DialogTitle, DialogContent, DialogActions, } from '@mui/material'; import { useFormik } from 'formik'; import * as React from "react"; +import * as HttpUtils from "utils/HttpUtils" +import * as UrlUtils from "utils/ApiPathConst" import * as DateUtils from "utils/DateUtils" import * as FormatUtils from "utils/FormatUtils" +import { useNavigate } from "react-router-dom"; import { useParams } from "react-router-dom"; import Loadable from 'components/Loadable'; const MainCard = Loadable(React.lazy(() => import('components/MainCard'))); import * as StatusUtils from "utils/statusUtils/PublicNoteStatusUtils"; import FileList from "components/FileList" // ==============================|| DASHBOARD - DEFAULT ||============================== // -const ApplicationDetailCard = ({ - formData, +const ApplicationDetailCard = ({ + formData, + showCancelBtn // setBackButtonPos }) => { const params = useParams(); + const navigate = useNavigate() const [data, setData] = React.useState({}); + const [cancelPopUp, setCancelPopUp] = React.useState(false); //const [proofId, setProofId] = React.useState(); React.useEffect(() => { @@ -61,8 +70,22 @@ const ApplicationDetailCard = ({ />; } + const confirmCancel = () =>{ + setCancelPopUp(false); + HttpUtils.get({ + url: UrlUtils.CANCEL_PROOF+"/"+params.id, + onSuccess: function(){ + navigate("/proof/reply/"+params.id); + } + }); + } + + const doCancel = () =>{ + setCancelPopUp(true); + } + // React.useEffect(()=>{ - // if (document.getElementById("applicationDetailsMainCard")) setBackButtonPos(`${document.getElementById("applicationDetailsMainCard")?.getBoundingClientRect().left / 3}px`) + // if (document.getElementById("applicationDetailsMainCard")) setBackButtonPos(`${document.getElementById("applicationDetailsMainCard")?.getBoundingClientRect().left / 3}px`) // },[document.getElementById("applicationDetailsMainCard")]) return ( @@ -72,7 +95,25 @@ const ApplicationDetailCard = ({ content={false} > - Public Notice: Proofreading Reply + + Public Notice: Proofreading Reply + + + +
@@ -237,6 +278,18 @@ const ApplicationDetailCard = ({ +
+ setCancelPopUp(false)} > + Confirm + + Are you sure you want to cancel this proof? + + + + + + +
); diff --git a/src/pages/Proof/Reply_GLD/ProofForm.js b/src/pages/Proof/Reply_GLD/ProofForm.js index a051e00..1121019 100644 --- a/src/pages/Proof/Reply_GLD/ProofForm.js +++ b/src/pages/Proof/Reply_GLD/ProofForm.js @@ -14,7 +14,7 @@ import * as DateUtils from "utils/DateUtils" // ==============================|| DASHBOARD - DEFAULT ||============================== // -const FormPanel = ({ formData }) => { +const FormPanel = ({ formData, isOverTime }) => { const [data, setData] = React.useState({}); const params = useParams(); @@ -32,17 +32,6 @@ const FormPanel = ({ formData }) => { - const isOverTime = () => { - let returnBeforeDate = DateUtils.convertToDate(formik.values?.returnBeforeDate); - if (!returnBeforeDate) return true; - returnBeforeDate = returnBeforeDate.setHours(14, 0, 0, 0); - - let current = new Date(); - return current.getTime() > returnBeforeDate; - } - - - return ( { : ( - isOverTime() ? + isOverTime ? The response timed out, please apply again. diff --git a/src/pages/Proof/Reply_GLD/index.js b/src/pages/Proof/Reply_GLD/index.js index 6b24fe2..25b1577 100644 --- a/src/pages/Proof/Reply_GLD/index.js +++ b/src/pages/Proof/Reply_GLD/index.js @@ -36,8 +36,10 @@ const Index = () => { const params = useParams(); const navigate = useNavigate() - const [record, setRecord] = React.useState(); + const [record, setRecord] = React.useState({}); const [onReady, setOnReady] = React.useState(false); + const [isOverTime, setIsOverTime] = React.useState(false); + const [showCancelBtn, setShowCancelBtn] = React.useState(false); React.useLayoutEffect(() => { loadForm(); @@ -71,6 +73,12 @@ const Index = () => { responseData.data["groupType"] = responseData.data.groupNo.charAt(0); responseData.data["action"] = responseData.data.replyDate ? responseData.data.action : true; + + let returnBeforeDate = DateUtils.convertToDate(responseData.data.returnBeforeDate); + let current = new Date(); + setIsOverTime(current.getTime() > returnBeforeDate.getTime()); + setShowCancelBtn(responseData.data.cancelled || responseData.data.replyDate || current.getTime() > returnBeforeDate.getTime()) + setRecord(responseData.data); } }); @@ -125,6 +133,7 @@ const Index = () => { { diff --git a/src/utils/ApiPathConst.js b/src/utils/ApiPathConst.js index b90fce1..9ec6f36 100644 --- a/src/utils/ApiPathConst.js +++ b/src/utils/ApiPathConst.js @@ -80,6 +80,7 @@ export const GET_PROOF = apiPath+'/proof/details';//GET export const REPLY_PROOF = apiPath+'/proof/reply';//GET export const PROOF_CHECK_PRICE = apiPath+'/proof/check-price';//GET export const GET_PROOF_PAY = apiPath+'/proof/pay-details';//GET +export const CANCEL_PROOF = apiPath+'/proof/cancel';//GET export const PAYMENT_CREATE = apiPath+'/payment/create';//POST diff --git a/src/utils/statusUtils/ProofStatus.js b/src/utils/statusUtils/ProofStatus.js index 940240a..05a8fef 100644 --- a/src/utils/statusUtils/ProofStatus.js +++ b/src/utils/statusUtils/ProofStatus.js @@ -5,21 +5,25 @@ const confirm = {color:"#22a13f", eng:"Confirmed", cht:"可以付印"} const unable = {color:"#d9372b", eng:"Re-proofing", cht:"未能付印"} const timeOut = {color:"#8a8784", eng:"No Reply", cht:"回覆逾時"} const pendingReply = {color:"#f5a83d", eng:"Pending Reply", cht:"未回覆"} +const cancel = {color:"#000", textColor:"#fff", eng:"Cancelled", cht:"已取消"} export function getStatus_Cht(params) { let status = getStatus(params); - return getStatusTag({color: status.color, text:status.cht }) + return getStatusTag({color: status.color, textColor:status.textColor, text:status.cht }) } export function getStatus_Eng(params) { let status = getStatus(params); - return getStatusTag({color: status.color, text:status.eng }) + return getStatusTag({color: status.color, textColor:status.textColor, text:status.eng }) } function getStatus(params) { let replyDate = params.row?params.row.replyDate:params.replyDate; let action = params.row?params.row.action:params.action; let returnBeforeDate = params.row?params.row.returnBeforeDate:params.returnBeforeDate; + let isCancelled = params.row?params.row.cancelled:params.cancelled; + + if(isCancelled) return cancel; if(replyDate){ return action?confirm:unable;