WDPassBox.jsx 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. import Fade from "@mui/material/Fade";
  2. import {ClickAwayListener} from "@mui/base/ClickAwayListener";
  3. import Grow from "@mui/material/Grow";
  4. import styles from "./styles.module.scss";
  5. import Modal from "@mui/material/Modal";
  6. import MultiNumPassInput from "@components/UInput/MultiNumPassInput";
  7. import React, {useState} from "react";
  8. import {useDispatch, useSelector} from "react-redux";
  9. import {getWDBaseInfoStatus, setChangePayPassType} from "@features/paySlice";
  10. import {REQ_STATUS} from "@api/config";
  11. import SmallLoading from "@components/SmallLoading";
  12. import {reqWithdrawBaseInfo} from "@features/api";
  13. import {getHttpMsg} from "@utils/helpers";
  14. import {toast} from "react-toastify";
  15. import {useNavigate} from "react-router-dom";
  16. import {ROUTE_PATH} from "@constants/routes";
  17. import SvgIcon from "@components/SvgIcon";
  18. import {getUserInfo} from "@features/mainSlice";
  19. const i18n=global.i18n;
  20. const WDPassBox=({open,onClose,title,confirmLabel,onConfirm})=>{
  21. // let {open,onClose,title,confirmLabel,onConfirm}=props;
  22. const [pass,setPass]=useState("");
  23. if (title==null)title=i18n.t("withdraw.pass.pass_box_title");
  24. if (confirmLabel==null)confirmLabel=i18n.t("withdraw.pass.btn_confirm");
  25. const passLen=6;
  26. const status=useSelector(getWDBaseInfoStatus);
  27. const dispatch=useDispatch();
  28. const navigate=useNavigate();
  29. const user=useSelector(getUserInfo);
  30. const callback=(data)=>{
  31. if (data==null)return;
  32. if (data.code===200){
  33. if (onClose)onClose();
  34. navigate(ROUTE_PATH.SAQUE);
  35. }
  36. else
  37. {
  38. global.setWDPass("");
  39. let msg=getHttpMsg(data);
  40. toast.error(msg);
  41. }
  42. }
  43. const checkPass=(pass)=>{
  44. global.setWDPass(pass);
  45. dispatch(reqWithdrawBaseInfo(callback));
  46. }
  47. const onSubmit=(pass)=>{
  48. if (pass.length<passLen)return;
  49. if (status===REQ_STATUS.LOADING)return;
  50. // if (onConfirm!=null)onConfirm(pass);
  51. // if (onClose)onClose();
  52. checkPass(pass)
  53. }
  54. const onSevice=()=>{
  55. if (onClose)onClose();
  56. navigate(ROUTE_PATH.CUSTOMER);
  57. }
  58. const onForgotPassword=()=>{
  59. let isBindPhone=user != null && user.Phone != null && user.Phone !== "";
  60. if (onClose)onClose();
  61. if (!isBindPhone){
  62. global.showBindPhone();
  63. return;
  64. }
  65. dispatch(setChangePayPassType(2));
  66. navigate(ROUTE_PATH.CHANGE_PAY_PASS)
  67. }
  68. return (
  69. <Modal open={open} onClose={onClose} closeAfterTransition>
  70. <Fade in={open} timeout={500}>
  71. <div className="popup-container">
  72. <ClickAwayListener onClickAway={onClose}>
  73. <Grow in={open} timeout={500}>
  74. <div className={`popup card card-padded ${styles.container}`}>
  75. <div className={styles.content}>
  76. <div className={styles.title}>{title}</div>
  77. <MultiNumPassInput
  78. focus={true}
  79. length={passLen}
  80. value={""}
  81. onChange={(num,index)=>{
  82. }}
  83. onFinish={(numArr)=>{
  84. let value=numArr.join("");
  85. setPass(value);
  86. onSubmit(value);
  87. }}
  88. />
  89. <button className={"button-green"} onClick={()=>{
  90. onSubmit(pass);
  91. }}>
  92. {
  93. status===REQ_STATUS.LOADING?(<SmallLoading fill={"#fff"} />):confirmLabel
  94. }
  95. </button>
  96. <div className={styles.help_con}>
  97. <button className={styles.btn_forget} onClick={onForgotPassword}>{i18n.t("withdraw.pass.btn_forgot")}</button>
  98. <button className={styles.btn_service} onClick={onSevice}>
  99. <SvgIcon className={styles.icon} herf={"icon_Support"}/>
  100. {/*{i18n.t("withdraw.pass.btn_service")}*/}
  101. </button>
  102. </div>
  103. </div>
  104. </div>
  105. </Grow>
  106. </ClickAwayListener>
  107. </div>
  108. </Fade>
  109. </Modal>
  110. )
  111. }
  112. export default WDPassBox;