|
@@ -0,0 +1,268 @@
|
|
|
+"use client";
|
|
|
+import { getShareLinkApi } from "@/api/config";
|
|
|
+import { useRouter } from "@/i18n/routing";
|
|
|
+import { useUserInfoStore } from "@/stores/useUserInfoStore";
|
|
|
+import { copyText } from "@/utils/methods";
|
|
|
+import { Toast } from "antd-mobile";
|
|
|
+import clsx from "clsx";
|
|
|
+import { useTranslations } from "next-intl";
|
|
|
+import { usePathname } from "next/navigation";
|
|
|
+import React from "react";
|
|
|
+import styles from "./page.module.scss";
|
|
|
+
|
|
|
+const Item = ({ type = "shake" }) => {
|
|
|
+ return (
|
|
|
+ <div
|
|
|
+ className={clsx(
|
|
|
+ "min-w-fit mb-[.2rem] flex flex-shrink-0 flex-grow flex-row items-center",
|
|
|
+ styles.itemWrap
|
|
|
+ )}
|
|
|
+ >
|
|
|
+ <div
|
|
|
+ className={clsx(
|
|
|
+ styles.item,
|
|
|
+ // styles.disabled,
|
|
|
+ styles.active,
|
|
|
+ "flex flex-col items-center text-[.12rem]"
|
|
|
+ )}
|
|
|
+ >
|
|
|
+ <div className={clsx(styles.itemImg, "mb-[.05rem]")}></div>
|
|
|
+ <div>Promoção</div>
|
|
|
+ <div>
|
|
|
+ <span className="text-[#ffc000]">1</span> Pessoa
|
|
|
+ </div>
|
|
|
+ <div className={styles.itemMoney}>
|
|
|
+ <span>+3000</span>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div
|
|
|
+ className={clsx(styles.arrow, "relative top-[-.2rem] flex flex-row justify-center")}
|
|
|
+ >
|
|
|
+ <img src="/fission/arrow.png" className={clsx("w-[.2rem]")} alt="" />
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ );
|
|
|
+};
|
|
|
+
|
|
|
+const Page: React.FC = () => {
|
|
|
+ const t = useTranslations();
|
|
|
+ const router = useRouter();
|
|
|
+ const { userInfo } = useUserInfoStore();
|
|
|
+ const pathname = usePathname();
|
|
|
+ const [BASE_URL, setBaseUrl] = React.useState("");
|
|
|
+
|
|
|
+ const url = React.useMemo(() => {
|
|
|
+ const shareUrl = `${BASE_URL}?share_id=${userInfo ? userInfo.referrer_code : "xxxxxx"}`;
|
|
|
+ return encodeURIComponent(`${shareUrl}`);
|
|
|
+ }, [BASE_URL, userInfo]);
|
|
|
+ const SHARE_SOURCE = React.useMemo(() => {
|
|
|
+ return [
|
|
|
+ {
|
|
|
+ icon: "/summary/Facebook.png",
|
|
|
+ label: "Facebook",
|
|
|
+ shareUrl: `https://www.facebook.com/sharer/sharer.php?u=${url}`,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ icon: "/summary/WhatsApp.png",
|
|
|
+ label: "WhatsApp",
|
|
|
+ shareUrl: `https://api.whatsapp.com/send?text=${url}`,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ icon: "/summary/Telegram.png",
|
|
|
+ label: "Telegram",
|
|
|
+ shareUrl: `https://t.me/share/url?url=${url}`,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ icon: "/summary/Twitter.png",
|
|
|
+ label: "Twitter",
|
|
|
+ shareUrl: `https://twitter.com/intent/tweet?text=${url}`,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ icon: "/summary/Email.png",
|
|
|
+ label: "Email",
|
|
|
+ shareUrl: `mailto: ?&subject=&cc=&bcc=&body=${url}`,
|
|
|
+ },
|
|
|
+ ];
|
|
|
+ }, [url]);
|
|
|
+
|
|
|
+ React.useEffect(() => {
|
|
|
+ init();
|
|
|
+ }, []);
|
|
|
+ const init = async () => {
|
|
|
+ const res = await getShareLinkApi();
|
|
|
+ if (res.code === 200) {
|
|
|
+ const url =
|
|
|
+ res.data.find((item) => item.type === 2)?.url ??
|
|
|
+ window.location.href.replace(pathname, "");
|
|
|
+ setBaseUrl(url);
|
|
|
+ }
|
|
|
+ };
|
|
|
+
|
|
|
+ return (
|
|
|
+ <div className={styles.fissionPage}>
|
|
|
+ <div className={styles.container}>
|
|
|
+ <img className={styles.img} src="/fission/title.png" alt="" />
|
|
|
+ <div className={styles.content}>
|
|
|
+ <div
|
|
|
+ className={clsx(
|
|
|
+ "mb-[.09rem] flex flex-row items-center justify-between p-[.1rem]",
|
|
|
+ styles.box
|
|
|
+ )}
|
|
|
+ >
|
|
|
+ <div
|
|
|
+ className={clsx(
|
|
|
+ "mr-[.1rem] overflow-hidden text-ellipsis whitespace-nowrap"
|
|
|
+ )}
|
|
|
+ >
|
|
|
+ Meu link:{decodeURIComponent(url)}
|
|
|
+ </div>
|
|
|
+ <span
|
|
|
+ className={styles.copy}
|
|
|
+ onClick={() => {
|
|
|
+ copyText(decodeURIComponent(url));
|
|
|
+ Toast.show({
|
|
|
+ icon: "success",
|
|
|
+ content: t("SummaryPage.copySuc"),
|
|
|
+ maskClickable: false,
|
|
|
+ });
|
|
|
+ }}
|
|
|
+ ></span>
|
|
|
+ </div>
|
|
|
+ <div className={clsx(styles.box, "mb-[.1rem] p-[.1rem]")}>
|
|
|
+ <div className={clsx("mb-[.1rem] text-[.14rem] font-bold")}>
|
|
|
+ Compartilhamento Rápido
|
|
|
+ </div>
|
|
|
+ <div className={clsx("flex flex-row items-center")}>
|
|
|
+ {SHARE_SOURCE.map((item) => {
|
|
|
+ return (
|
|
|
+ <a
|
|
|
+ href={item.shareUrl}
|
|
|
+ target={"_blank"}
|
|
|
+ className={clsx(
|
|
|
+ "mr-[.1rem] w-[.4rem] overflow-hidden rounded-[50%]"
|
|
|
+ )}
|
|
|
+ key={item.label}
|
|
|
+ >
|
|
|
+ <img className={styles.icon} src={item.icon} alt="" />
|
|
|
+ </a>
|
|
|
+ );
|
|
|
+ })}
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div
|
|
|
+ className={clsx(
|
|
|
+ styles.box,
|
|
|
+ "mb-[.2rem] flex flex-row items-center justify-between p-[.1rem]"
|
|
|
+ )}
|
|
|
+ >
|
|
|
+ <div>
|
|
|
+ <div>Meus subordinados diretos</div>
|
|
|
+ <div>
|
|
|
+ <span className="text-[#ffae00]">0Pessoa </span>
|
|
|
+ (Válido <span className="text-[#ffae00]">0Pessoa</span>)
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div
|
|
|
+ className={clsx("text-[#2dd0df]")}
|
|
|
+ onClick={() => router.push("/fission/detail")}
|
|
|
+ >
|
|
|
+ Detalhes>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <div className={clsx("mb-[.1rem] flex flex-row flex-wrap justify-start")}>
|
|
|
+ <Item></Item>
|
|
|
+ <Item></Item>
|
|
|
+ <Item type={"shake"}></Item>
|
|
|
+ <Item></Item>
|
|
|
+ <Item></Item>
|
|
|
+ <Item></Item>
|
|
|
+ <Item></Item>
|
|
|
+ <Item></Item>
|
|
|
+ <Item></Item>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <div className={clsx(styles.box, "p-[.1rem]")}>
|
|
|
+ <div>
|
|
|
+ 0 que é o número de promoção efetiva?(Preenchendo as seguintes
|
|
|
+ condições)
|
|
|
+ </div>
|
|
|
+ <div className={styles.hr}></div>
|
|
|
+ <div className="flex flex-row items-center justify-between">
|
|
|
+ <div>Primeiro depósito do subordinado</div>
|
|
|
+ <div className="text-[#2dd0df]">≥0,00</div>
|
|
|
+ </div>
|
|
|
+ <div className={styles.hr}></div>
|
|
|
+ <div className="flex flex-row items-center justify-between">
|
|
|
+ <div>Depositos acumulados do subordinado</div>
|
|
|
+ <div className="text-[#2dd0df]">≥0,00</div>
|
|
|
+ </div>
|
|
|
+ <div className={styles.hr}></div>
|
|
|
+ <div className="flex flex-row items-center justify-between">
|
|
|
+ <div>quantidade de apostas acumuladas pelo subordinado</div>
|
|
|
+ <div className="text-[#2dd0df]">≥0,00</div>
|
|
|
+ </div>
|
|
|
+ <div className={styles.hr}></div>
|
|
|
+ <div className="flex flex-row items-center justify-between">
|
|
|
+ <div>Dias acumulados de depósito do subordinado</div>
|
|
|
+ <div className="text-[#2dd0df]">≥0,00</div>
|
|
|
+ </div>
|
|
|
+ <div className={styles.hr}></div>
|
|
|
+ <div className="flex flex-row items-center justify-between">
|
|
|
+ <div>Número acumulado de recargas dos subordinados</div>
|
|
|
+ <div className="text-[#2dd0df]">≥0,00</div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div
|
|
|
+ className={clsx(
|
|
|
+ styles.box,
|
|
|
+ "relative mt-[.4rem] p-[.15rem] pl-[.3rem] pt-[.4rem]"
|
|
|
+ )}
|
|
|
+ >
|
|
|
+ <div className={styles.ttitle}>Detalhes do Evento</div>
|
|
|
+ <ul className="list-decimal">
|
|
|
+ <li>
|
|
|
+ Convide amigos para receber um bônus. Ao completar diferentes
|
|
|
+ números de convites, você pode ganhar o bônus correspondente, com um
|
|
|
+ valor máximo de 88.888. Quanto mais amigos você convidar, maiores
|
|
|
+ serão as recompensas; As apostas feitas pelos subordinados são
|
|
|
+ consideradas válidas apenas nas seguintes plataformas;Todas as
|
|
|
+ Plataformas;
|
|
|
+ </li>
|
|
|
+ <li>
|
|
|
+ Esta atividade é um presente adicional da plataforma.Você também
|
|
|
+ pode desfrutar de outras recompensas e comissões de agentes, o que
|
|
|
+ significa que você pode aproveitar a a chance de ganhar bônus varias
|
|
|
+ vezes;
|
|
|
+ </li>
|
|
|
+ <li>
|
|
|
+ As recompensas só podem ser reivindicadas manualmente no iOS,
|
|
|
+ Android e H5, e serão distribuídas automaticamente se expiradas;
|
|
|
+ </li>
|
|
|
+ <li>
|
|
|
+ O bônus (excluindo o principal) concedido por esta atividade requer
|
|
|
+ 1 vez o valor em apostas valida para serem retiradas;
|
|
|
+ </li>
|
|
|
+ <li>
|
|
|
+ Esta atividade está limitada ao titular da conta para operações
|
|
|
+ humanas normais. Alugar, usar cheats, robôs, jogar com contas
|
|
|
+ diferentes,jogar com varias pessoas, arbitragem, interfaces,
|
|
|
+ acordos, explorar vulnerabilidades, controle de grupo ou outros
|
|
|
+ meios técnicos são proibidos.Caso contrário, as recompensas podem
|
|
|
+ ser canceladas ou deduzidas, congeladas ou até mesmo colocadas em
|
|
|
+ uma lista;
|
|
|
+ </li>
|
|
|
+ <li>
|
|
|
+ Para evitar mal-entendidos de interpretação de texto, a plataforma
|
|
|
+ reserva o direito de interpretação e descisão final para à
|
|
|
+ plataforma.
|
|
|
+ </li>
|
|
|
+ </ul>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ );
|
|
|
+};
|
|
|
+
|
|
|
+export default Page;
|