|
|
@@ -2,14 +2,14 @@ import * as React from "react"; |
|
|
|
import * as HttpUtils from "utils/HttpUtils"; |
|
|
|
import * as UrlUtils from "utils/ApiPathConst"; |
|
|
|
import Loadable from 'components/Loadable'; |
|
|
|
// const MultiPaymentWindow = Loadable(React.lazy(() => import('./MultiPaymentWindow'))); |
|
|
|
const MultiPaymentWindow = Loadable(React.lazy(() => import('./MultiPaymentWindow'))); |
|
|
|
const DataGrid = Loadable(React.lazy(() => import('./Details_Public/DataGrid'))); |
|
|
|
// const FPS = Loadable(React.lazy(() => import('./FPS'))); |
|
|
|
import { useEffect, useState } from "react"; |
|
|
|
import { useNavigate, useLocation } from "react-router-dom"; |
|
|
|
import { paymentPath } from "auth/utils"; |
|
|
|
import * as FormatUtils from "utils/FormatUtils"; |
|
|
|
const LoadingComponent = Loadable(React.lazy(() => import('pages/extra-pages/LoadingComponent'))); |
|
|
|
// import * as FormatUtils from "utils/FormatUtils"; |
|
|
|
// const LoadingComponent = Loadable(React.lazy(() => import('pages/extra-pages/LoadingComponent'))); |
|
|
|
|
|
|
|
import { |
|
|
|
Button, |
|
|
@@ -20,13 +20,13 @@ import { |
|
|
|
Dialog, DialogTitle, DialogContent, DialogActions, |
|
|
|
} from '@mui/material'; |
|
|
|
|
|
|
|
//icon |
|
|
|
import VisaIcon from "assets/images/icons/visacard.svg"; |
|
|
|
import MasterIcon from "assets/images/icons/mastercard.svg"; |
|
|
|
import JcbIcon from "assets/images/icons/jcb.svg"; |
|
|
|
import UnionPayIcon from "assets/images/icons/unionpay.svg"; |
|
|
|
import PpsIcon from "assets/images/icons/ppshk.svg"; |
|
|
|
import FpsIcon from "assets/images/icons/fps.svg"; |
|
|
|
// //icon |
|
|
|
// import VisaIcon from "assets/images/icons/visacard.svg"; |
|
|
|
// import MasterIcon from "assets/images/icons/mastercard.svg"; |
|
|
|
// import JcbIcon from "assets/images/icons/jcb.svg"; |
|
|
|
// import UnionPayIcon from "assets/images/icons/unionpay.svg"; |
|
|
|
// import PpsIcon from "assets/images/icons/ppshk.svg"; |
|
|
|
// import FpsIcon from "assets/images/icons/fps.svg"; |
|
|
|
|
|
|
|
import titleBackgroundImg from 'assets/images/dashboard/gazette-bar.png' |
|
|
|
const BackgroundHead = { |
|
|
@@ -52,7 +52,7 @@ const Index = () => { |
|
|
|
|
|
|
|
|
|
|
|
//statusWindow |
|
|
|
// const [open, setOpen] = useState(false); |
|
|
|
const [open, setOpen] = useState(false); |
|
|
|
const [availableMethods, setAvailableMethods] = useState([]); |
|
|
|
const [transactionData, setTransactionData] = useState({}); |
|
|
|
const [fpsStatus, setFPSStatus] = useState({}); |
|
|
@@ -61,9 +61,10 @@ const Index = () => { |
|
|
|
const [ppsStatus, setPPSStatus] = useState({}); |
|
|
|
const [selectedPaymentMethod, setSelectedPaymentMethod] = useState(""); |
|
|
|
const [confirmPayment, setConfirmPayment] = useState(false); |
|
|
|
const [afterConfirmPayment, setAfterConfirmPayment] = useState(false); |
|
|
|
|
|
|
|
const [itemList, setItemList] = useState([]); |
|
|
|
const [onReady, setOnReady] = useState(false); |
|
|
|
// const [onReady, setOnReady] = useState(false); |
|
|
|
|
|
|
|
const [expiryDateErrText, setExpiryDateErrText] = React.useState(""); |
|
|
|
const [expiryDateErr, setExpiryDateErr] = React.useState(false); |
|
|
@@ -71,9 +72,8 @@ const Index = () => { |
|
|
|
useEffect(() => { |
|
|
|
setAppIds(location.state?.appIdList ?? []) |
|
|
|
setTotalAmount(location.state?.amount ?? 2000) |
|
|
|
getAvailablePayment() |
|
|
|
getTransactionId() |
|
|
|
|
|
|
|
// getAvailablePayment() |
|
|
|
// getTransactionId() |
|
|
|
}, []); |
|
|
|
|
|
|
|
useEffect(() => { |
|
|
@@ -81,25 +81,26 @@ const Index = () => { |
|
|
|
getAppList(); |
|
|
|
}, [appIds]); |
|
|
|
|
|
|
|
// const handleClose = () => { |
|
|
|
// const handleClose = () => { |
|
|
|
// // handleReset() |
|
|
|
// setOpen(false); |
|
|
|
// getTransactionId() |
|
|
|
// getAvailablePayment() |
|
|
|
// // getTransactionId() |
|
|
|
// // getAvailablePayment() |
|
|
|
// }; |
|
|
|
|
|
|
|
// const paymentClick = () => { |
|
|
|
// setTotalAmount(totalAmount); |
|
|
|
// setSelectedPaymentMethod("") |
|
|
|
// setConfirmPayment(false) |
|
|
|
// if (totalAmount > 0) { |
|
|
|
// getTransactionId() |
|
|
|
// // setOpen(true) |
|
|
|
// } |
|
|
|
// }; |
|
|
|
const paymentClick = () => { |
|
|
|
setTotalAmount(totalAmount); |
|
|
|
setSelectedPaymentMethod("") |
|
|
|
setConfirmPayment(false) |
|
|
|
if (totalAmount > 0) { |
|
|
|
getAvailablePayment() |
|
|
|
getTransactionId() |
|
|
|
setOpen(true) |
|
|
|
} |
|
|
|
}; |
|
|
|
|
|
|
|
useEffect(() => { |
|
|
|
if (confirmPayment) { |
|
|
|
if (afterConfirmPayment) { |
|
|
|
// setOpen(false); |
|
|
|
// let transactionid = ""; |
|
|
|
// let webtoken = ""; |
|
|
@@ -149,9 +150,9 @@ const Index = () => { |
|
|
|
}); |
|
|
|
} |
|
|
|
} |
|
|
|
}, [confirmPayment]); |
|
|
|
}, [afterConfirmPayment]); |
|
|
|
|
|
|
|
const getAvailablePayment = () => { |
|
|
|
const getAvailablePayment = () =>{ |
|
|
|
HttpUtils.post({ |
|
|
|
url: paymentPath + getAvailablePaymentUrl, |
|
|
|
params: { |
|
|
@@ -336,7 +337,7 @@ const Index = () => { |
|
|
|
setPPSStatus(method) |
|
|
|
} |
|
|
|
}); |
|
|
|
setOnReady(true) |
|
|
|
// setOnReady(true) |
|
|
|
} |
|
|
|
}, [availableMethods]); |
|
|
|
|
|
|
@@ -368,30 +369,33 @@ const Index = () => { |
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
|
const selectedPaymentMethodHandle = (method) => () => { |
|
|
|
setSelectedPaymentMethod(method); |
|
|
|
}; |
|
|
|
// const selectedPaymentMethodHandle = (method) => () => { |
|
|
|
// setSelectedPaymentMethod(method); |
|
|
|
// }; |
|
|
|
|
|
|
|
const confirmPaymentHandle = () => () => { |
|
|
|
HttpUtils.post({ |
|
|
|
url: UrlUtils.POST_CHECK_APP_EXPRITY_DATE, |
|
|
|
params: { |
|
|
|
ids: appIds |
|
|
|
}, |
|
|
|
onSuccess: (responData) => { |
|
|
|
if (responData.success == true) { |
|
|
|
setConfirmPayment(true); |
|
|
|
return; |
|
|
|
// const confirmPaymentHandle = () => () => { |
|
|
|
useEffect(() => { |
|
|
|
if (confirmPayment){ |
|
|
|
HttpUtils.post({ |
|
|
|
url: UrlUtils.POST_CHECK_APP_EXPRITY_DATE, |
|
|
|
params: { |
|
|
|
ids: appIds |
|
|
|
}, |
|
|
|
onSuccess: (responData) => { |
|
|
|
if (responData.success == true) { |
|
|
|
setAfterConfirmPayment(true); |
|
|
|
return; |
|
|
|
} |
|
|
|
let str = ""; |
|
|
|
responData.msg.forEach((item) => { |
|
|
|
str += "App: " + item.appNo + ", 到期日: " + DateUtils.datetimeStr_Cht(item.expiryDate) + "\n"; |
|
|
|
}); |
|
|
|
setExpiryDateErrText(str.split('\n').map(str => <>{str}<br/></>)); |
|
|
|
setExpiryDateErr(true); |
|
|
|
} |
|
|
|
let str = ""; |
|
|
|
responData.msg.forEach((item) => { |
|
|
|
str += "App: " + item.appNo + ", 到期日: " + DateUtils.datetimeStr_Cht(item.expiryDate) + "\n"; |
|
|
|
}); |
|
|
|
setExpiryDateErrText(str.split('\n').map(str => <>{str}<br/></>)); |
|
|
|
setExpiryDateErr(true); |
|
|
|
} |
|
|
|
}); |
|
|
|
}; |
|
|
|
}); |
|
|
|
} |
|
|
|
}, [confirmPayment]); |
|
|
|
|
|
|
|
const getMethodImgClass = (method) => { |
|
|
|
return selectedPaymentMethod == method || selectedPaymentMethod == "" ? "" : "grayscale"; |
|
|
@@ -409,140 +413,27 @@ const Index = () => { |
|
|
|
{/*row 1*/} |
|
|
|
<Grid item xs={12} md={12} width="100%"> |
|
|
|
<Grid container justifyContent="center" spacing={2} sx={{ p: 2 }} alignitems="stretch" > |
|
|
|
<Grid item xs={12} md={5} style={{ height: '100%' }}> |
|
|
|
<Grid item xs={12} md={11} style={{ height: '100%' }}> |
|
|
|
<Box xs={12} md={12} sx={{ p: 4, border: '3px solid #eee', borderRadius: '10px' }} > |
|
|
|
<DataGrid |
|
|
|
recordList={itemList} |
|
|
|
/> |
|
|
|
</Box> |
|
|
|
</Grid> |
|
|
|
<Grid item xs={12} md={5} sx={{ pt: 2 }} style={{ height: '100%' }}> |
|
|
|
<Box xs={12} md={12} sx={{ p: 4, border: '3px solid #eee', borderRadius: '10px' }} > |
|
|
|
<Grid container justifyContent="flex-start" alignItems="left" > |
|
|
|
|
|
|
|
<center> |
|
|
|
<Grid item xs={12} md={12} > |
|
|
|
<Typography variant="h5" sx={{ textAlign: "left" }}> |
|
|
|
交易參考號: {transactionData.transactionid} |
|
|
|
</Typography> |
|
|
|
|
|
|
|
<Typography variant="h5" sx={{ textAlign: "left" }}> |
|
|
|
支付金額: HK$ {FormatUtils.currencyFormat(totalAmount)} |
|
|
|
</Typography> |
|
|
|
|
|
|
|
{/* <Button |
|
|
|
component="span" |
|
|
|
variant="contained" |
|
|
|
size="large" |
|
|
|
// color="error" |
|
|
|
onClick={() => paymentClick()} |
|
|
|
sx={{ mt: 4 }} |
|
|
|
>選擇付款方式</Button> */} |
|
|
|
</Grid> |
|
|
|
<Grid item xs={12} md={12}> |
|
|
|
<Grid container > |
|
|
|
<Grid item> |
|
|
|
<Typography variant="h5" sx={{ textAlign: "left" }}> |
|
|
|
付款金額: |
|
|
|
</Typography> |
|
|
|
</Grid> |
|
|
|
<Grid item> |
|
|
|
<Typography variant="h5" sx={{ textAlign: "left" }}> |
|
|
|
{"HK$ " + FormatUtils.currencyFormat(totalAmount)} |
|
|
|
</Typography> |
|
|
|
</Grid> |
|
|
|
</Grid> |
|
|
|
</Grid> |
|
|
|
|
|
|
|
{availableMethods.length > 0 ? |
|
|
|
!onReady ? |
|
|
|
<LoadingComponent /> : |
|
|
|
<Grid item xs={12} md={12}> |
|
|
|
<Grid container spacing={1} direction="row" justifyContent="flex-start" alignItems="center"> |
|
|
|
<Grid item> |
|
|
|
<Typography variant="h5" sx={{ textAlign: "left" }}> |
|
|
|
請選擇付款方式: |
|
|
|
</Typography> |
|
|
|
</Grid> |
|
|
|
<Grid item> |
|
|
|
<Button variant="contained" color="white" onClick={selectedPaymentMethodHandle("FPS")} disabled={fpsStatus.active === "N"}> |
|
|
|
<img className={getMethodImgClass("FPS")} src={FpsIcon} width="80" height="80" alt="FPS"></img> |
|
|
|
</Button> |
|
|
|
</Grid> |
|
|
|
<Grid item> |
|
|
|
<Button variant="contained" color="white" onClick={selectedPaymentMethodHandle("Visa")} disabled={creditCardStatus.active === "N"}> |
|
|
|
<img className={getMethodImgClass("Visa")} src={VisaIcon} width="80" height="80" alt="Visa"></img> |
|
|
|
</Button> |
|
|
|
</Grid> |
|
|
|
<Grid item> |
|
|
|
<Button variant="contained" color="white" onClick={selectedPaymentMethodHandle("Mastercard")} disabled={creditCardStatus.active === "N"}> |
|
|
|
<img className={getMethodImgClass("Mastercard")} src={MasterIcon} width="80" height="80" alt="Mastercard"></img> |
|
|
|
</Button> |
|
|
|
</Grid> |
|
|
|
<Grid item> |
|
|
|
<Button variant="contained" color="white" onClick={selectedPaymentMethodHandle("UnionPay")} disabled={unionPayStatus.active === "N"}> |
|
|
|
<img className={getMethodImgClass("UnionPay")} src={UnionPayIcon} width="80" height="80" alt="UnionPay"></img> |
|
|
|
</Button> |
|
|
|
</Grid> |
|
|
|
<Grid item> |
|
|
|
<Button variant="contained" color="white" onClick={selectedPaymentMethodHandle("JCB")} disabled={unionPayStatus.active === "N"}> |
|
|
|
<img className={getMethodImgClass("JCB")} src={JcbIcon} width="80" height="80" alt="JCB"></img> |
|
|
|
</Button> |
|
|
|
</Grid> |
|
|
|
<Grid item> |
|
|
|
<Button variant="contained" color="white" onClick={selectedPaymentMethodHandle("PPS")} disabled={ppsStatus.active === "N"}> |
|
|
|
<img className={getMethodImgClass("PPS")} src={PpsIcon} width="80" height="80" alt="PPS"></img> |
|
|
|
</Button> |
|
|
|
</Grid> |
|
|
|
</Grid> |
|
|
|
{selectedPaymentMethod != "" ? |
|
|
|
<Grid item xs={12} md={12}> |
|
|
|
<Grid container direction="row" justifyContent="flex-start" alignItems="center"> |
|
|
|
<Grid item> |
|
|
|
<Typography variant="h5" sx={{ textAlign: "left" }}> |
|
|
|
已選擇付款方式: |
|
|
|
</Typography> |
|
|
|
</Grid> |
|
|
|
<Grid item> |
|
|
|
<Typography variant="h5" sx={{ textAlign: "left" }}> |
|
|
|
{selectedPaymentMethod} |
|
|
|
</Typography> |
|
|
|
</Grid> |
|
|
|
</Grid> |
|
|
|
</Grid> |
|
|
|
: null} |
|
|
|
<Button variant="contained" size="large" color="success" onClick={confirmPaymentHandle()} disabled={selectedPaymentMethod === ""}> |
|
|
|
確認 |
|
|
|
</Button> |
|
|
|
</Grid> : |
|
|
|
<Grid container direction="row" justifyContent="center" alignItems="center"> |
|
|
|
<Typography sx={{ fontSize: "20px", color: "#000000", textAlign: "center" }}> |
|
|
|
付款功能現在不可用。 |
|
|
|
</Typography> |
|
|
|
</Grid> |
|
|
|
} |
|
|
|
|
|
|
|
</center> |
|
|
|
</Grid> |
|
|
|
{/* <MultiPaymentWindow open={open} |
|
|
|
handleCose={handleClose} |
|
|
|
availableMethods={availableMethods} |
|
|
|
transactionData={transactionData} |
|
|
|
totalAmount={totalAmount} |
|
|
|
fpsStatus={fpsStatus} |
|
|
|
creditCardStatus={creditCardStatus} |
|
|
|
unionPayStatus={unionPayStatus} |
|
|
|
ppsStatus={ppsStatus} |
|
|
|
setSelectedPaymentMethod={setSelectedPaymentMethod} |
|
|
|
selectedPaymentMethod={selectedPaymentMethod} |
|
|
|
setConfirmPayment={setConfirmPayment} |
|
|
|
/> */} |
|
|
|
</Box> |
|
|
|
</Grid> |
|
|
|
</Grid> |
|
|
|
</Grid> |
|
|
|
<Grid item xs={12} md={12} > |
|
|
|
|
|
|
|
<Grid item xs={12} md={12} width="100%"> |
|
|
|
<Stack direction="row" justifyContent="flex-end" alignItems="flex-start" spacing={2} mr={12} > |
|
|
|
<Button |
|
|
|
component="span" |
|
|
|
variant="contained" |
|
|
|
size="large" |
|
|
|
// color="error" |
|
|
|
onClick={() => paymentClick()} |
|
|
|
sx={{ mt: 4 }} |
|
|
|
>付款 |
|
|
|
</Button> |
|
|
|
</Stack> |
|
|
|
</Grid> |
|
|
|
{/*row 2*/} |
|
|
|
<div> |
|
|
@@ -561,6 +452,20 @@ const Index = () => { |
|
|
|
</DialogActions> |
|
|
|
</Dialog> |
|
|
|
</div> |
|
|
|
<MultiPaymentWindow open={open} |
|
|
|
setOpen={setOpen} |
|
|
|
availableMethods={availableMethods} |
|
|
|
transactionData={transactionData} |
|
|
|
totalAmount={totalAmount} |
|
|
|
fpsStatus={fpsStatus} |
|
|
|
creditCardStatus={creditCardStatus} |
|
|
|
unionPayStatus={unionPayStatus} |
|
|
|
ppsStatus={ppsStatus} |
|
|
|
setSelectedPaymentMethod={setSelectedPaymentMethod} |
|
|
|
selectedPaymentMethod={selectedPaymentMethod} |
|
|
|
setConfirmPayment={setConfirmPayment} |
|
|
|
getMethodImgClass = {getMethodImgClass} |
|
|
|
/> |
|
|
|
</Grid > |
|
|
|
); |
|
|
|
} |
|
|
|