index.tsx 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191
  1. import { Wallet } from "@/api/user";
  2. import { percentage } from "@/utils/methods";
  3. import { ProgressBar } from "antd-mobile";
  4. import { useTranslations } from "next-intl";
  5. const Progress = (props: { percent: number }) => {
  6. const { percent } = props;
  7. return (
  8. <div className="flex">
  9. <ProgressBar
  10. percent={percent}
  11. className={"mr-[0.0694rem] flex-1"}
  12. style={{
  13. "--fill-color": "var(--primary-color)",
  14. "--track-width": "0.0694rem",
  15. }}
  16. />
  17. <span className={"text-primary-color"}>{percent.toFixed(2)}%</span>
  18. </div>
  19. );
  20. };
  21. export const WalletContent = (props: {
  22. percentage: number;
  23. type: string;
  24. difference: number;
  25. current: number;
  26. }) => {
  27. const { percentage, type, difference, current } = props;
  28. const t = useTranslations("ProfilePage");
  29. return (
  30. <div>
  31. <div className={"mb-[0.12rem] text-[0.12rem]"}>
  32. <span className={"mr-[10px]"}>{type}</span>
  33. <i className={"mr-[10px] indent-[10px] text-[0.1528rem] font-bold"}>R$</i>
  34. <span>{current}</span>
  35. </div>
  36. <Progress percent={percentage} />
  37. <div>
  38. <span>{t("modalBottomTips")}</span>
  39. <span>{difference.toFixed(2)}</span>
  40. </div>
  41. </div>
  42. );
  43. };
  44. // 现金
  45. export const BalanceContent = (props: { wallet: Wallet }) => {
  46. const { wallet } = props;
  47. const t = useTranslations("ProfilePage");
  48. return (
  49. <>
  50. <WalletContent
  51. difference={wallet.target_score_rollover - wallet.current_score_rollover}
  52. type={t("balance")}
  53. current={wallet.score || 0}
  54. percentage={percentage(wallet.current_score_rollover, wallet.target_score_rollover)}
  55. />
  56. </>
  57. );
  58. };
  59. export const BonusContent = (props: { wallet: Wallet; handleAcquire?: any }) => {
  60. const { wallet, handleAcquire } = props;
  61. const t = useTranslations("ProfilePage");
  62. return (
  63. <div>
  64. <WalletContent
  65. difference={wallet.target_point_rollover - wallet.current_point_rollover}
  66. type={t("bonus")}
  67. current={wallet.point || 0}
  68. percentage={percentage(wallet.current_point_rollover, wallet.target_point_rollover)}
  69. />
  70. <p className={"text-center"}>{t("bonusArticle")}</p>
  71. <ul className={"ml-[0.1389rem] list-decimal text-[0.12rem] text-[#666]"}>
  72. <li>{t("bonusDesc1")}</li>
  73. <li>{t("bonusDesc2")}</li>
  74. <li>{t("bonusDesc3")}</li>
  75. </ul>
  76. {handleAcquire && (
  77. <a
  78. className={`carteira-box ${wallet.is_point_transfer ? "active" : ""}`}
  79. onClick={() => handleAcquire(2, wallet.is_point_transfer)}
  80. >
  81. {t("carteira")}
  82. </a>
  83. )}
  84. </div>
  85. );
  86. };
  87. export const FreeContent = (props: { wallet: Wallet; handleAcquire?: any }) => {
  88. const { wallet, handleAcquire } = props;
  89. const t = useTranslations("ProfilePage");
  90. return (
  91. <div>
  92. <WalletContent
  93. difference={wallet.target_free_score_rollover - wallet.current_free_score_rollover}
  94. type={t("free")}
  95. current={wallet.free_score || 0}
  96. percentage={percentage(
  97. wallet.current_free_score_rollover,
  98. wallet.target_free_score_rollover
  99. )}
  100. />
  101. <p className={"text-center"}>{t("freeArticle")}</p>
  102. <ul className={"ml-[0.1389rem] list-decimal text-[0.12rem] text-[#666]"}>
  103. <li>{t("freeDesc1")}</li>
  104. <li>{t("freeDesc2")}</li>
  105. <li>{t("freeDesc3")}{wallet?.free_transfer_ratio}:1</li>
  106. <li>{t("freeDesc4", {n: wallet.free_transfer_max ?? 0})}</li>
  107. </ul>
  108. {handleAcquire && (
  109. <a
  110. className={`carteira-box ${wallet.is_free_transfer && (wallet.free_score >= (wallet?.free_transfer_min || 0)) ? "active" : ""}`}
  111. onClick={() => handleAcquire(3, wallet.is_free_transfer)}
  112. >
  113. {t("carteira")}
  114. </a>
  115. )}
  116. <p className={"text-[0.12rem] text-[#666] text-center"}>Valor minimo de transferência de {wallet?.free_transfer_min}</p>
  117. </div>
  118. );
  119. };
  120. export const ReplayContent = (props: { wallet: Wallet; handleAcquire?: any }) => {
  121. const { wallet, handleAcquire } = props;
  122. const t = useTranslations("ProfilePage");
  123. return (
  124. <div>
  125. <WalletContent
  126. difference={wallet.target_lose_score_rollover - wallet.current_lose_score_rollover}
  127. type={t("replay")}
  128. current={wallet.lose_score || 0}
  129. percentage={percentage(
  130. wallet.current_lose_score_rollover,
  131. wallet.target_lose_score_rollover
  132. )}
  133. />
  134. <p className={"text-center"}>{t("replayArticle")}</p>
  135. <ul className={"ml-[0.1389rem] list-decimal text-[0.12rem] text-[#666]"}>
  136. <li>{t("replayDesc1")}</li>
  137. <li>{t("replayDesc2")}</li>
  138. <li>
  139. {t("replayDesc3")}
  140. {wallet?.lose_transfer_ratio}:1
  141. </li>
  142. <li>{t("replayDesc4", { n: wallet.lose_transfer_max ?? 0 })}</li>
  143. </ul>
  144. {handleAcquire && (
  145. <a
  146. className={`carteira-box ${wallet.is_lose_transfer && wallet.lose_score >= (wallet?.lose_transfer_min || 0) ? "active" : ""}`}
  147. onClick={() => handleAcquire(4, wallet.is_lose_transfer)}
  148. >
  149. {t("carteira")}
  150. </a>
  151. )}
  152. <p className={"text-center text-[0.12rem] text-[#666]"}>
  153. Valor minimo de transferência de {wallet?.lose_transfer_min}
  154. </p>
  155. </div>
  156. );
  157. };
  158. // const WalletDescribeModal = () => {
  159. // const [tipsStatus, setTipsStatus] = useState<keyof typeof WalletEnum>("Bonus");
  160. // const tipsRef = useRef<ModalProps>(null);
  161. // const wallet: any = {};
  162. // const t = useTranslations("ProfilePage");
  163. //
  164. // return (
  165. // <TipsModal
  166. // ref={tipsRef}
  167. // title={
  168. // <div className={"flex items-center"}>
  169. // <i className={"iconfont icon-liwuhuodong mr-[0.0694rem] text-[0.2778rem]"}></i>
  170. // {t("modalTitle")}
  171. // </div>
  172. // }
  173. // >
  174. // {/*现金*/}
  175. // {tipsStatus === WalletEnum.Balance ? <BalanceContent wallet={wallet} /> : null}
  176. // {/* 彩金*/}
  177. // {tipsStatus === WalletEnum.Bonus ? <BonusContent wallet={wallet} /> : null}
  178. // {/* 免费币 */}
  179. // {tipsStatus === WalletEnum.Free ? <FreeContent wallet={wallet} /> : null}
  180. // {/* 重玩币 */}
  181. // {tipsStatus === WalletEnum.Replay ? <ReplayContent wallet={wallet} /> : null}
  182. // </TipsModal>
  183. // );
  184. // };
  185. // export default WalletDescribeModal;