index.tsx 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  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 }) => {
  60. const { wallet } = 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. </div>
  77. );
  78. };
  79. export const FreeContent = (props: { wallet: Wallet }) => {
  80. const { wallet } = props;
  81. const t = useTranslations("ProfilePage");
  82. return (
  83. <div>
  84. <WalletContent
  85. difference={wallet.target_free_score_rollover - wallet.current_free_score_rollover}
  86. type={t("free")}
  87. current={wallet.free_score || 0}
  88. percentage={percentage(
  89. wallet.current_free_score_rollover,
  90. wallet.target_free_score_rollover
  91. )}
  92. />
  93. <p className={"text-center"}>{t("freeArticle")}</p>
  94. <ul className={"ml-[0.1389rem] list-decimal text-[0.12rem] text-[#666]"}>
  95. <li>{t("freeDesc1")}</li>
  96. <li>{t("freeDesc2")}</li>
  97. </ul>
  98. </div>
  99. );
  100. };
  101. export const ReplayContent = (props: { wallet: Wallet }) => {
  102. const { wallet } = props;
  103. const t = useTranslations("ProfilePage");
  104. return (
  105. <div>
  106. <WalletContent
  107. difference={wallet.target_lose_score_rollover - wallet.current_lose_score_rollover}
  108. type={t("replay")}
  109. current={wallet.lose_score || 0}
  110. percentage={percentage(
  111. wallet.current_lose_score_rollover,
  112. wallet.target_lose_score_rollover
  113. )}
  114. />
  115. <p className={"text-center"}>{t("replayArticle")}</p>
  116. <ul className={"ml-[0.1389rem] list-decimal text-[0.12rem] text-[#666]"}>
  117. <li>{t("replayDesc1")}</li>
  118. <li>{t("replayDesc2")}</li>
  119. </ul>
  120. </div>
  121. );
  122. };
  123. // const WalletDescribeModal = () => {
  124. // const [tipsStatus, setTipsStatus] = useState<keyof typeof WalletEnum>("Bonus");
  125. // const tipsRef = useRef<ModalProps>(null);
  126. // const wallet: any = {};
  127. // const t = useTranslations("ProfilePage");
  128. //
  129. // return (
  130. // <TipsModal
  131. // ref={tipsRef}
  132. // title={
  133. // <div className={"flex items-center"}>
  134. // <i className={"iconfont icon-liwuhuodong mr-[0.0694rem] text-[0.2778rem]"}></i>
  135. // {t("modalTitle")}
  136. // </div>
  137. // }
  138. // >
  139. // {/*现金*/}
  140. // {tipsStatus === WalletEnum.Balance ? <BalanceContent wallet={wallet} /> : null}
  141. // {/* 彩金*/}
  142. // {tipsStatus === WalletEnum.Bonus ? <BonusContent wallet={wallet} /> : null}
  143. // {/* 免费币 */}
  144. // {tipsStatus === WalletEnum.Free ? <FreeContent wallet={wallet} /> : null}
  145. // {/* 重玩币 */}
  146. // {tipsStatus === WalletEnum.Replay ? <ReplayContent wallet={wallet} /> : null}
  147. // </TipsModal>
  148. // );
  149. // };
  150. // export default WalletDescribeModal;