You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

231 lines
13 KiB

  1. // material-ui
  2. import {
  3. Grid,
  4. Typography,
  5. FormLabel,
  6. Button
  7. } from '@mui/material';
  8. import * as React from "react";
  9. import * as FormatUtils from "utils/FormatUtils";
  10. import * as PaymentStatus from "utils/statusUtils/PaymentStatus";
  11. import * as DateUtils from "utils/DateUtils";
  12. import Loadable from 'components/Loadable';
  13. const MainCard = Loadable(React.lazy(() => import('components/MainCard')));
  14. const LoadingComponent = Loadable(React.lazy(() => import('pages/extra-pages/LoadingComponent')));
  15. import DownloadIcon from '@mui/icons-material/Download';
  16. import {FormattedMessage, useIntl} from "react-intl";
  17. // ==============================|| DASHBOARD - DEFAULT ||============================== //
  18. const PaymentDetails = ({ formData,doPrint,onDownload }) => {
  19. const intl = useIntl();
  20. const { locale } = intl;
  21. const [data, setData] = React.useState({});
  22. const [onReady, setOnReady] = React.useState(false);
  23. React.useEffect(() => {
  24. if (formData != null && formData != undefined && Object.keys(formData).length > 0) {
  25. // console.log(formData)
  26. setData(formData);
  27. }
  28. }, [formData]);
  29. React.useEffect(() => {
  30. if (data != null && data != undefined && Object.keys(data).length > 0) {
  31. // console.log(data)
  32. setOnReady(data != {});
  33. }
  34. }, [data]);
  35. const getPaymentMethod=()=>{
  36. let paymentmethod = ""
  37. // console.log(locale)
  38. if (data?.payload!=null) {
  39. paymentmethod = data.payload?.paymentdetail.paymentmethod;
  40. if (locale == "zh-HK"){
  41. if("01" == paymentmethod) return "繳費靈";
  42. if("02" == paymentmethod || "03" == paymentmethod) return "信用卡";
  43. if("04" == paymentmethod) return "轉數快";
  44. }
  45. else if (locale == "zh-CN"){
  46. if("01" == paymentmethod) return "缴费灵";
  47. if("02" == paymentmethod || "03" == paymentmethod) return "信用卡";
  48. if("04" == paymentmethod) return "转数快";
  49. }
  50. else {
  51. if("01" == paymentmethod) return "PPS";
  52. if("02" == paymentmethod || "03" == paymentmethod) return "Credit Card";
  53. if("04" == paymentmethod) return "FPS";
  54. }
  55. } else {
  56. paymentmethod = data.payMethod;
  57. if (locale == "zh-HK"){
  58. if("01,PPSB,PPS" == paymentmethod) return "繳費靈";
  59. if("02,BCMP,CreditCard" == paymentmethod || "03,BCMP,CreditCard" == paymentmethod) return "信用卡";
  60. if("04,BCFP,FPS" == paymentmethod) return "轉數快";
  61. }
  62. else if (locale == "zh-CN"){
  63. if("01,PPSB,PPS" == paymentmethod) return "缴费灵";
  64. if("02,BCMP,CreditCard" == paymentmethod || "03,BCMP,CreditCard" == paymentmethod) return "信用卡";
  65. if("04,BCFP,FPS" == paymentmethod) return "转数快";
  66. }
  67. else {
  68. if("01,PPSB,PPS" == paymentmethod) return "PPS";
  69. if("02,BCMP,CreditCard" == paymentmethod || "03,BCMP,CreditCard" == paymentmethod) return "Credit Card";
  70. if("04,BCFP,FPS" == paymentmethod) return "FPS";
  71. }
  72. }
  73. return paymentmethod;
  74. }
  75. return (
  76. !onReady ?
  77. <LoadingComponent />
  78. :
  79. <MainCard elevation={0}
  80. border={false}
  81. content={false}
  82. >
  83. <Typography variant="h5" sx={{ textAlign: "center", mb: 2, borderBottom: "1px solid black" }}>
  84. <FormattedMessage id="payDetail"/>
  85. </Typography>
  86. <form>
  87. <Grid container >
  88. <Grid item>
  89. <Grid container >
  90. <Grid item xs={12} md={12} >
  91. <Grid container spacing={5} alignItems="center">
  92. <Grid item xs={6} md={6} sx={{ textAlign: "right", alignItems: 'center', color: "#000000" }}>
  93. <FormLabel sx={{ fontSize: "16px", color: "#000000" }}>
  94. <FormattedMessage id="status"/>:
  95. </FormLabel>
  96. </Grid>
  97. <Grid item xs={6} md={6} sx={{textAlign: "left" }}>
  98. <FormLabel sx={{ display: 'flex', alignItems: 'center', color: "#000000" }}>
  99. {
  100. locale === 'en' ?
  101. PaymentStatus.getStatus_Eng(data.status)
  102. :
  103. PaymentStatus.getStatus_Cht(data.status)
  104. }
  105. </FormLabel>
  106. </Grid>
  107. </Grid>
  108. </Grid>
  109. <Grid item xs={12} md={12}>
  110. <Grid container spacing={5} >
  111. <Grid item xs={6} md={6} sx={{ textAlign: "right" }}>
  112. <FormLabel sx={{ fontSize: "16px", color: "#000000" }}>
  113. <FormattedMessage id="paymentNo" />:
  114. </FormLabel>
  115. </Grid>
  116. <Grid item xs={6} md={6} sx={{ textAlign: "left" }}>
  117. <FormLabel sx={{ fontSize: "16px", color: "#000000" }}>
  118. {data.payload?.transactionid?data.payload?.transactionid:data.transNo}
  119. </FormLabel>
  120. </Grid>
  121. </Grid>
  122. </Grid>
  123. <Grid item xs={12} md={12}>
  124. <Grid container spacing={5}>
  125. <Grid item xs={6} md={6} sx={{textAlign: "right" }}>
  126. <FormLabel sx={{ fontSize: "16px", color: "#000000" }}>
  127. <FormattedMessage id="paymentDate" />:
  128. </FormLabel>
  129. </Grid>
  130. <Grid item xs={6} md={6} sx={{textAlign: "left" }}>
  131. <FormLabel sx={{ fontSize: "16px", color: "#000000" }}>
  132. {DateUtils.dateFormat(data.transDateStr, intl.formatMessage({id: "dateStrFormat"})) +" ("+intl.formatMessage({id: "dateStrFormat"})+")"}
  133. </FormLabel>
  134. </Grid>
  135. </Grid>
  136. </Grid>
  137. <Grid item xs={12} md={12}>
  138. <Grid container spacing={5}>
  139. <Grid item xs={6} md={6} sx={{ textAlign: "right" }}>
  140. <FormLabel sx={{ fontSize: "16px", color: "#000000" }}>
  141. <FormattedMessage id="paymentTime" />:
  142. </FormLabel>
  143. </Grid>
  144. <Grid item xs={6} md={6} sx={{textAlign: "left" }}>
  145. <FormLabel sx={{ fontSize: "16px", color: "#000000" }}>
  146. {data.transTimeStr + " (HH:MI:SS)"}
  147. </FormLabel>
  148. </Grid>
  149. </Grid>
  150. </Grid>
  151. <Grid item xs={12} md={12}>
  152. <Grid container spacing={5}>
  153. <Grid item xs={6} md={6} sx={{ textAlign: "right" }}>
  154. <FormLabel sx={{ fontSize: "16px", color: "#000000" }}>
  155. <FormattedMessage id="paymentRefCode" />:
  156. </FormLabel>
  157. </Grid>
  158. <Grid item xs={6} md={6} sx={{textAlign: "left" }}>
  159. <FormLabel sx={{ fontSize: "16px", color: "#000000" }}>
  160. {data.egisRefNo}
  161. </FormLabel>
  162. </Grid>
  163. </Grid>
  164. </Grid>
  165. <Grid item xs={12} md={12}>
  166. <Grid container spacing={5} >
  167. <Grid item xs={6} md={6} sx={{ textAlign: "right" }}>
  168. <FormLabel sx={{ fontSize: "16px", color: "#000000" }}>
  169. <FormattedMessage id="payDeatail"/>:
  170. </FormLabel>
  171. </Grid>
  172. <Grid item xs={6} md={6} sx={{textAlign: "left" }}>
  173. <FormLabel sx={{ fontSize: "16px", color: "#000000" }}>
  174. {"$ " + FormatUtils.currencyFormat(data.payload?.amount?data.payload?.amount:data.payAmount)}
  175. </FormLabel>
  176. </Grid>
  177. </Grid>
  178. </Grid>
  179. <Grid item xs={12} md={12}>
  180. <Grid container spacing={5} >
  181. <Grid item xs={6} md={6} sx={{ textAlign: "right" }}>
  182. <FormLabel sx={{ fontSize: "16px", color: "#000000" }}>
  183. <FormattedMessage id="epayMethod"/>:
  184. </FormLabel>
  185. </Grid>
  186. <Grid item xs={6} md={6} sx={{textAlign: "left" }}>
  187. <FormLabel sx={{ fontSize: "16px", color: "#000000" }}>
  188. {getPaymentMethod()}
  189. </FormLabel>
  190. </Grid>
  191. </Grid>
  192. </Grid>
  193. {
  194. data.status == "APPR"
  195. ?
  196. <Grid item xs={12} md={12}>
  197. <Grid container spacing={5} alignItems="center">
  198. <Grid item xs={6} md={6} sx={{textAlign: "right" }}>
  199. <FormLabel sx={{ fontSize: "16px", color: "#000000" }}>
  200. <FormattedMessage id="payReceipt"/>:
  201. </FormLabel>
  202. </Grid>
  203. <Grid item xs={6} md={5} sx={{textAlign: "left" }}>
  204. <Button className="printHidden" variant="contained" disabled={onDownload} sx={{ mt:2 }} onClick={doPrint}>
  205. <DownloadIcon/>
  206. <Typography sx={{fontSize: "16px"}}>
  207. <FormattedMessage id="download"/>
  208. </Typography>
  209. </Button>
  210. </Grid>
  211. </Grid>
  212. </Grid>
  213. : null
  214. }
  215. </Grid>
  216. </Grid>
  217. </Grid>
  218. </form>
  219. </MainCard>
  220. );
  221. };
  222. export default PaymentDetails;