Before 1 rok temu
rodzic
commit
39225680b2

+ 0 - 1
.gitignore

@@ -12,7 +12,6 @@
 # next.js
 /.next/
 /out/
-
 # production
 /build
 

+ 1 - 0
messages/br.json

@@ -15,6 +15,7 @@
     "underage":  "Underage Gaming Policy (18+ to play clause)",
     "responsible": "Responsible Gaming Policy",
     "esportes":  "Esportes Regras",
+    "search": "Procure Jogos ou Provedores",
     "licencia":  "LICENÇA",
     "desc": "9F.COM é operada conjunta pela Dubet n.v. e pela MLsoft, número de registro da empresa 142919, com endereço registrado em Zuikertuintjeweg Z/N (Zuikertuin Tower) Curação e é licenciada e autorizada pelo governo de Curação. A 9F.COM opera sob a Master License of Gaming Services Provider, N.V. Número da Licença: ",
     "desclink":  "GLH-OCCHKTW0705152022",

+ 1 - 0
next.config.mjs

@@ -6,6 +6,7 @@ const withNextIntl = createNextIntlPlugin();
 /** @type {import('next').NextConfig} */
 const nextConfig = {
   reactStrictMode: true,
+  output: 'export',
   transpilePackages: ['antd-mobile'],
   sassOptions: {
     prependData: `@import "./src/styles/variables.scss";`

+ 3 - 2
src/app/[locale]/(extend)/about/page.tsx

@@ -1,8 +1,9 @@
-import { FC, PropsWithChildren } from "react";
+"use client";
+import { FC } from "react";
 
 interface Props {}
 
-const About: FC<PropsWithChildren<Props>> = (props) => {
+const About: FC = (props) => {
     return <div>hello About</div>;
 };
 

+ 48 - 34
src/app/[locale]/(ordinary)/deposit/page.tsx

@@ -1,60 +1,74 @@
 "use client";
-import { FC, PropsWithChildren, useState } from "react";
+import { getUserRechargeApi } from "@/api/user";
 import ButtonOwn from "@/components/ButtonOwn";
-import './page.scss'
+import { useGlobalStore } from "@/stores";
+import { Toast } from "antd-mobile";
 import { useTranslations } from "next-intl";
-import { getUserRechargeApi } from "@/api/user";
-import { useGlobalStore } from '@/stores';
-import { Toast } from 'antd-mobile'
+import { FC, useState } from "react";
+import "./page.scss";
 
 interface Props {}
 
-let amountList = [10,20,50,100,200,500,1000,5000,10000]
+let amountList = [10, 20, 50, 100, 200, 500, 1000, 5000, 10000];
 
-const Deposit: FC<PropsWithChildren<Props>> = () => {
+const Deposit: FC<Props> = () => {
     const t = useTranslations("DepositPage");
     const { userInfo } = useGlobalStore();
 
-    let [amount, setAmount] = useState(0)
+    let [amount, setAmount] = useState(0);
     const ChangeAmount = (e: any) => {
-        let newAmount = e.target.value.replace(/[^0-9]/g, '')
-        setAmount(newAmount)
-    }
+        let newAmount = e.target.value.replace(/[^0-9]/g, "");
+        setAmount(newAmount);
+    };
 
     const userRechargeRequest = async () => {
-        if(amount < 10) return
-        let res = await getUserRechargeApi({amount: parseInt(amount as any), user_id: userInfo.id})
-        if(res.code == 200) {
-            setAmount(0)
-            Toast.show({ icon: 'success', content: t("RechargeSuc"), maskClickable: false })
+        if (amount < 10) return;
+        let res = await getUserRechargeApi({
+            amount: parseInt(amount as any),
+            user_id: userInfo.id,
+        });
+        if (res.code == 200) {
+            setAmount(0);
+            Toast.show({ icon: "success", content: t("RechargeSuc"), maskClickable: false });
         }
-    }
+    };
 
     return (
         <div className="deposit-box">
             <div className="img-box"></div>
-            <p className="btn-box" color="primary">PIX Ⅰ</p>
+            <p className="btn-box" color="primary">
+                PIX Ⅰ
+            </p>
             <div className="amount-box">
-                <span>{t('Montante')} (BRL):</span>
-                <input type="number" value={amount} onChange={ChangeAmount} placeholder="Mín. 10.00"/>
+                <span>{t("Montante")} (BRL):</span>
+                <input
+                    type="number"
+                    value={amount}
+                    onChange={ChangeAmount}
+                    placeholder="Mín. 10.00"
+                />
             </div>
             <ul className="ul-box">
-                {
-                    amountList.map((item, index) => (
-                        <li className={amount==item?'active':''} key={index} onClick={() => setAmount(item)}>
-                            { (index == 2 || index == 3  || index == 6) && <span className="hot"></span> } 
-                            <div className="amountContent">
-                                {/* <span className="iconfont icon-unit-brl"></span> */}
-                                <span className="iconfont">R$</span>
-                                <span> {item}</span>
-                            </div>
-                            <span className="amountTips">{t('Oferecer')} 100%</span>
-                        </li>
-                    ))
-                }
+                {amountList.map((item, index) => (
+                    <li
+                        className={amount == item ? "active" : ""}
+                        key={index}
+                        onClick={() => setAmount(item)}
+                    >
+                        {(index == 2 || index == 3 || index == 6) && <span className="hot"></span>}
+                        <div className="amountContent">
+                            {/* <span className="iconfont icon-unit-brl"></span> */}
+                            <span className="iconfont">R$</span>
+                            <span> {item}</span>
+                        </div>
+                        <span className="amountTips">{t("Oferecer")} 100%</span>
+                    </li>
+                ))}
             </ul>
             <div className="topUp">
-                <ButtonOwn active={amount>=10?true:false} callbackFun={userRechargeRequest}>{t('DepositarAgora')}</ButtonOwn>
+                <ButtonOwn active={amount >= 10 ? true : false} callbackFun={userRechargeRequest}>
+                    {t("DepositarAgora")}
+                </ButtonOwn>
             </div>
         </div>
     );

+ 5 - 6
src/app/[locale]/(extend)/gameList/[gameListFlag]/page.tsx → src/app/[locale]/(ordinary)/gameList/[gameListFlag]/page.tsx

@@ -1,11 +1,10 @@
-"use client";
-import { useParams } from "next/navigation";
-import { FC, PropsWithChildren } from "react";
+import { FC } from "react";
 
 interface Props {}
-
-const GameListFlag: FC<PropsWithChildren<Props>> = (props) => {
-    const params = useParams();
+export function generateStaticParams() {
+    return [{ slug: [""] }];
+}
+const GameListFlag: FC<Props> = (props) => {
     return (
         <div
             className={

+ 5 - 3
src/app/[locale]/(ordinary)/info/page.tsx

@@ -1,8 +1,10 @@
-import { FC, PropsWithChildren } from "react";
-
+import { FC } from "react";
+export function generateStaticParams() {
+    return [{ slug: [""] }];
+}
 interface Props {}
 
-const Info: FC<PropsWithChildren<Props>> = (props) => {
+const Info: FC<Props> = (props) => {
     return <div>hello Info</div>;
 };
 

+ 65 - 64
src/app/[locale]/(ordinary)/profile/page.tsx

@@ -1,114 +1,115 @@
 "use client";
-import { FC, PropsWithChildren, useEffect, useState } from "react";
+import { getUserInfoApi, getUserMoneyApi } from "@/api/user";
 import { useRouter } from "@/i18n";
+import { useGlobalStore } from "@/stores";
 import clsx from "clsx";
+import { useTranslations } from "next-intl";
+import { FC, useEffect, useState } from "react";
 import ItemCom from "./component/ItemCom";
-import ModalCom from "./component/ModalCom";
 import MaskCom from "./component/MaskCom";
-import './page.scss'
-import { useGlobalStore } from '@/stores';
-import { getUserInfoApi, getUserMoneyApi } from "@/api/user";
-import { useTranslations } from "next-intl";
+import ModalCom from "./component/ModalCom";
+import "./page.scss";
 
 interface Props {}
 
-const Profile: FC<PropsWithChildren<Props>> = () => {
+const Profile: FC<Props> = () => {
     const t = useTranslations("ProfilePage");
-    
+
     const { token, userInfo, setUserInfo } = useGlobalStore();
     const userInfoRequest = async () => {
-        getUserInfoApi().then(res => {
-            res.code == 200 && setUserInfo(res.data)
-        })
-    }
+        getUserInfoApi().then((res) => {
+            res.code == 200 && setUserInfo(res.data);
+        });
+    };
 
     let [money, setMoney] = useState({
         point: 0,
-        lock_point: 0
-    })
+        lock_point: 0,
+    });
     const userMoneyRequest = async () => {
-        getUserMoneyApi().then(res => {
-            res.code == 200 && setMoney({
-                point: res.data.point,
-                lock_point: res.data.lock_point
-            })
-        })
-    }
+        getUserMoneyApi().then((res) => {
+            res.code == 200 &&
+                setMoney({
+                    point: res.data.point,
+                    lock_point: res.data.lock_point,
+                });
+        });
+    };
     useEffect(() => {
         if (token) {
-            userInfoRequest()
-            userMoneyRequest()
+            userInfoRequest();
+            userMoneyRequest();
         }
         // eslint-disable-next-line react-hooks/exhaustive-deps
-    }, [])
-    
+    }, []);
 
     const router = useRouter();
-    const goPage = (path = '/') => {
-        router.push(path)
-    }
+    const goPage = (path = "/") => {
+        router.push(path);
+    };
 
     const [visible, setVisible] = useState(false);
     const callbackFun = () => {
-        setVisible(!visible)
-    }
+        setVisible(!visible);
+    };
 
-    const divClassName = clsx('bgImg', token && 'default');
+    const divClassName = clsx("bgImg", token && "default");
     return (
         <div className="profile-box">
             <div className="userContent">
                 <div className="userInfo">
                     <div>
                         <div className={divClassName}></div>
-                        {
-                            token && (
-                                <div>
-                                    <span>{t('Conta')}</span>
-                                    <span className="phone">{userInfo?.user_phone || ''}</span>
-                                </div>
-                            )
-                        }
+                        {token && (
+                            <div>
+                                <span>{t("Conta")}</span>
+                                <span className="phone">{userInfo?.user_phone || ""}</span>
+                            </div>
+                        )}
                     </div>
-                    <div className="goto" onClick={() => goPage('/login')}>
-                        { !token && <span>{t('Login')}</span> }
+                    <div className="goto" onClick={() => goPage("/login")}>
+                        {!token && <span>{t("Login")}</span>}
                         <span className="iconfont icon-xiangzuo1"></span>
                     </div>
                 </div>
-                { 
-                    token && (
-                        <div className="coin">
+                {token && (
+                    <div className="coin">
+                        <div>
+                            <span className="iconfont icon-icon-wallet"></span>
                             <div>
-                                <span className="iconfont icon-icon-wallet"></span>
-                                <div>
-                                    <span>{t('Saldo')}</span>
-                                    <div className="num">
-                                        <span className="uppercase">brl </span>
-                                        <span>{ money.point || 0.00 }</span>
-                                    </div>
+                                <span>{t("Saldo")}</span>
+                                <div className="num">
+                                    <span className="uppercase">brl </span>
+                                    <span>{money.point || 0.0}</span>
                                 </div>
                             </div>
+                        </div>
+                        <div>
+                            <span className="iconfont icon-gift2"></span>
                             <div>
-                                <span className="iconfont icon-gift2"></span>
-                                <div>
-                                    <span onClick={() => setVisible(true)}> {t('Bônus')} <img className="a" src="/img/a.png" alt=""/></span>
-                                    <div className="num">
-                                        <span className="uppercase">brl </span>
-                                        <span>{ money.lock_point || 0.00 }</span>
-                                    </div>
+                                <span onClick={() => setVisible(true)}>
+                                    {" "}
+                                    {t("Bônus")} <img className="a" src="/img/a.png" alt="" />
+                                </span>
+                                <div className="num">
+                                    <span className="uppercase">brl </span>
+                                    <span>{money.lock_point || 0.0}</span>
                                 </div>
                             </div>
                         </div>
-                    ) 
-                }
+                    </div>
+                )}
             </div>
 
             <div className="link">
-                <span onClick={() => goPage('/deposit')}>{t('Depósito')}</span>
-                <span onClick={() => goPage(token ? '/withdraw' : `/login?redirect=withdraw`)}>{t('Sacar')}</span>
+                <span onClick={() => goPage("/deposit")}>{t("Depósito")}</span>
+                <span onClick={() => goPage(token ? "/withdraw" : `/login?redirect=withdraw`)}>
+                    {t("Sacar")}
+                </span>
             </div>
             <ItemCom />
-            <ModalCom  />
-            <MaskCom visible={visible} callbackFun={(callbackFun)}/>
+            <ModalCom />
+            <MaskCom visible={visible} callbackFun={callbackFun} />
         </div>
     );
 };

+ 5 - 3
src/app/[locale]/(ordinary)/project/page.tsx

@@ -1,8 +1,10 @@
-import { FC, PropsWithChildren } from "react";
+import { FC } from "react";
 
 interface Props {}
-
-const App: FC<PropsWithChildren<Props>> = (props) => {
+export function generateStaticParams() {
+    return [{ slug: [""] }];
+}
+const App: FC<Props> = (props) => {
     return <div>hello Project</div>;
 };
 

+ 72 - 46
src/app/[locale]/(ordinary)/withdraw/page.tsx

@@ -1,85 +1,111 @@
 "use client";
-import { ChangeEvent, FC, PropsWithChildren, useState } from "react";
 import ButtonOwn from "@/components/ButtonOwn";
-import Link from "next/link";
-import './page.scss'
-import { ActionSheet } from 'antd-mobile'
-import type { Action } from 'antd-mobile/es/components/action-sheet'
+import { ActionSheet } from "antd-mobile";
+import type { Action } from "antd-mobile/es/components/action-sheet";
 import { useTranslations } from "next-intl";
+import Link from "next/link";
+import { ChangeEvent, FC, useState } from "react";
+import "./page.scss";
 
 interface Props {}
 
-const Withdraw: FC<PropsWithChildren<Props>> = () => {
+const Withdraw: FC<Props> = () => {
     const t = useTranslations("WithdrawPage");
 
     const actions: Action[] = [
-        { text: 'CPF', key: 'CPF' },
-        { text: t('Número'), key: 'Celular' },
-        { text: 'EMAIL', key: 'EMAIL' },
-    ]
-    let amount = 50
+        { text: "CPF", key: "CPF" },
+        { text: t("Número"), key: "Celular" },
+        { text: "EMAIL", key: "EMAIL" },
+    ];
+    let amount = 50;
     let [account, setAccount] = useState({
-        secretKey: '',
-        money:''
-    })
+        secretKey: "",
+        money: "",
+    });
     const setInputVal = (e: ChangeEvent<HTMLInputElement>) => {
-        const {name, value} = e.target;
+        const { name, value } = e.target;
         setAccount({
             ...account,
-            [name]: value
-        })
-    } 
+            [name]: value,
+        });
+    };
 
-    let [visible, setVisible] = useState(false)
-    let [prefix, setPrefix] = useState('CPF')
-    let [placeholder, setPlaceholder] = useState('000.000.000-00')
+    let [visible, setVisible] = useState(false);
+    let [prefix, setPrefix] = useState("CPF");
+    let [placeholder, setPlaceholder] = useState("000.000.000-00");
     const onAction = (action: any) => {
-        setPrefix(action.text as any)
-        if(action.key == 'CPF') {
-            setPlaceholder('000.000.000-00')
-            return
+        setPrefix(action.text as any);
+        if (action.key == "CPF") {
+            setPlaceholder("000.000.000-00");
+            return;
         }
-        if(action.key == 'Celular') {
-            setPlaceholder('11 dígitos')
-            return
+        if (action.key == "Celular") {
+            setPlaceholder("11 dígitos");
+            return;
         }
-        if(action.key == 'EMAIL') {
-            setPlaceholder('EMAIL')
-            return
+        if (action.key == "EMAIL") {
+            setPlaceholder("EMAIL");
+            return;
         }
-    }
+    };
 
     return (
         <div className="withdraw-box">
             <div className="img-box"></div>
-            <p className="btn-box" color="primary">PIX V</p>
-            <h1>{t('Certifique')}</h1>
+            <p className="btn-box" color="primary">
+                PIX V
+            </p>
+            <h1>{t("Certifique")}</h1>
             <div className="amount-box">
-                <span>{t('Tipo')}</span>
+                <span>{t("Tipo")}</span>
                 <div className="input-box">
-                    <label onClick={() => setVisible(true)}>{prefix} <span className="iconfont icon-xialaxuanze"></span></label>
-                    <input name="secretKey" type="number" value={account.secretKey} onChange={setInputVal} placeholder={placeholder} />
+                    <label onClick={() => setVisible(true)}>
+                        {prefix} <span className="iconfont icon-xialaxuanze"></span>
+                    </label>
+                    <input
+                        name="secretKey"
+                        type="number"
+                        value={account.secretKey}
+                        onChange={setInputVal}
+                        placeholder={placeholder}
+                    />
                 </div>
             </div>
-            <h1>{t('Vincule')}</h1>
+            <h1>{t("Vincule")}</h1>
             <div className="amount-box">
-                <span>{t('Montante')} (BRL):</span>
+                <span>{t("Montante")} (BRL):</span>
                 <div className="input-box">
-                    <input name="money" type="number" value={account.money} onChange={setInputVal} placeholder="Mín. 10.00"/>
+                    <input
+                        name="money"
+                        type="number"
+                        value={account.money}
+                        onChange={setInputVal}
+                        placeholder="Mín. 10.00"
+                    />
                 </div>
             </div>
             <ul className="ul-box">
-                <li>{t('SaqueDisponivel')} <span className="tip">0 BRL</span></li>
-                <li>{t('Valor')} <span className="tip">0 BRL</span> <span className="iconfont icon-iconhelp"></span></li>
-                <li>{t('Para')}, <Link href="/" className="toHome router-link-active" replace>{t('Aposte')}</Link></li>
+                <li>
+                    {t("SaqueDisponivel")} <span className="tip">0 BRL</span>
+                </li>
+                <li>
+                    {t("Valor")} <span className="tip">0 BRL</span>{" "}
+                    <span className="iconfont icon-iconhelp"></span>
+                </li>
+                <li>
+                    {t("Para")},{" "}
+                    <Link href="/" className="toHome router-link-active" replace>
+                        {t("Aposte")}
+                    </Link>
+                </li>
             </ul>
             <div className="topUp">
-                <ButtonOwn active={amount>0?true:false}>{t('Saque')}</ButtonOwn>
+                <ButtonOwn active={amount > 0 ? true : false}>{t("Saque")}</ButtonOwn>
             </div>
 
             <ActionSheet
-                extra=''
-                cancelText={t('Cancelar')}
+                extra=""
+                cancelText={t("Cancelar")}
                 visible={visible}
                 actions={actions}
                 closeOnAction={true}

Plik diff jest za duży
+ 1 - 17
src/app/[locale]/_home/HomeGames.tsx


+ 25 - 0
src/app/[locale]/_home/HomeSearch.tsx

@@ -0,0 +1,25 @@
+"use client";
+import { useTranslations } from "next-intl";
+import { FC, PropsWithChildren } from "react";
+interface Props {}
+
+const HomeSearch: FC<PropsWithChildren<Props>> = (props) => {
+    const t = useTranslations("HomePage");
+    const handler = () => {
+        console.log(`🎯🎯🎯🎯🎯-> in HomeSearch.tsx on 9`, "");
+    };
+    return (
+        <div
+            onClick={handler}
+            className={
+                "flex items-center rounded-[0.03rem] bg-[#191919] py-[5px]" +
+                " px-[10px] text-[#6e6e6e]"
+            }
+        >
+            <i className={"iconfont icon-sousuo1 mr-[0.0833rem] text-[0.16rem]"}></i>
+            <span className={"text-[0.12rem]"}>{t("search")}</span>
+        </div>
+    );
+};
+
+export default HomeSearch;

+ 91 - 77
src/app/[locale]/affiliate/faq/page.tsx

@@ -1,87 +1,98 @@
-'use client'
-import { FC, PropsWithChildren ,useRef, useState } from "react";
+"use client";
 import { useRouter } from "@/i18n";
 import { useTranslations } from "next-intl";
-import './page.scss'
+import { FC, useRef, useState } from "react";
+import "./page.scss";
 
-interface Props { }
-const App: FC<PropsWithChildren<Props>> = (props) =>{
-    const t = useTranslations("FaqPage")
-    const router:any = useRouter()
-    const goPage = (path = '')=>{
-        if(path){
-            if(path === 'home'){
-                router.replace('/')
-                return
+interface Props {}
+const App: FC<Props> = (props) => {
+    const t = useTranslations("FaqPage");
+    const router: any = useRouter();
+    const goPage = (path = "") => {
+        if (path) {
+            if (path === "home") {
+                router.replace("/");
+                return;
             }
-            
+
             console.log(router);
-            
-            router.replace(`/affiliate/${path}`)
-            return 
+
+            router.replace(`/affiliate/${path}`);
+            return;
         }
-        router.back()
-    }
-    const sliderRef = useRef<HTMLDivElement>(null)
-    const [num,setNum] = useState(100)
-    const [money,setMoney] = useState('5000')
-    const handleSlide:any =(e:React.MouseEvent<HTMLDivElement,MouseEvent>)=>{
-        if(sliderRef.current){
-            const startX = sliderRef.current.getBoundingClientRect().x
-            const x = e.clientX - startX
-            const xRem = x/(144*0.6)
-            const intNum = Math.round(10000*xRem)-Math.round(10000*xRem%10)
-            setNum(intNum)
-            const m = intNum*50
-            let r = ''
-            const arr = m.toString().split('')
-            arr.forEach((item,i)=>{
-                if(i!==(arr.length-1)&&(arr.length-i-1)%3===0){
-                    r += item + ','
-                }else{
-                    r += item
+        router.back();
+    };
+    const sliderRef = useRef<HTMLDivElement>(null);
+    const [num, setNum] = useState(100);
+    const [money, setMoney] = useState("5000");
+    const handleSlide: any = (e: React.MouseEvent<HTMLDivElement, MouseEvent>) => {
+        if (sliderRef.current) {
+            const startX = sliderRef.current.getBoundingClientRect().x;
+            const x = e.clientX - startX;
+            const xRem = x / (144 * 0.6);
+            const intNum = Math.round(10000 * xRem) - Math.round((10000 * xRem) % 10);
+            setNum(intNum);
+            const m = intNum * 50;
+            let r = "";
+            const arr = m.toString().split("");
+            arr.forEach((item, i) => {
+                if (i !== arr.length - 1 && (arr.length - i - 1) % 3 === 0) {
+                    r += item + ",";
+                } else {
+                    r += item;
                 }
-            })
-            
-            setMoney(r)
+            });
+
+            setMoney(r);
 
-            const scale = ((Math.round((xRem * 10000)))/100.00).toFixed(2) + '%';
-            sliderRef.current.style.width = scale
+            const scale = (Math.round(xRem * 10000) / 100.0).toFixed(2) + "%";
+            sliderRef.current.style.width = scale;
         }
-    }
+    };
     return (
         <div className="vux-drawer-faq">
-            <div className="vux-drawer-body" style={{transform: "translate3d(0px, 0px, 0px)"}}>
-                <div className="referral router-view" id="id-router-view" style={{backgroundColor: "rgb(237, 237, 237)"}}>
+            <div className="vux-drawer-body" style={{ transform: "translate3d(0px, 0px, 0px)" }}>
+                <div
+                    className="referral router-view"
+                    id="id-router-view"
+                    style={{ backgroundColor: "rgb(237, 237, 237)" }}
+                >
                     <div className="headerBack">
-                        <div className="left" onClick={()=>goPage()}>
+                        <div className="left" onClick={() => goPage()}>
                             <span className="iconfont icon-xiangzuo1"></span>
                         </div>
                         <span className="title">
-                            {t("Afiliado")} 
-                            <span style={{fontSize: "0.14rem"}}> - {t("title")}</span>
+                            {t("Afiliado")}
+                            <span style={{ fontSize: "0.14rem" }}> - {t("title")}</span>
                         </span>
-                        <span className="right" onClick={()=>goPage('home')}>
+                        <span className="right" onClick={() => goPage("home")}>
                             <span className="iconfont icon-home_line router-link-active"></span>
                         </span>
                     </div>
                     <div className="tabs alginLeft van-tabs van-tabs--line">
                         <div className="van-tabs__wrap van-tabs__wrap--scrollable">
-                            <div role="tablist" className="van-tabs__nav van-tabs__nav--line van-tabs__nav--complete">
-                                <div className="van-tab" onClick={()=>goPage('summary')}>
+                            <div
+                                role="tablist"
+                                className="van-tabs__nav van-tabs__nav--line van-tabs__nav--complete"
+                            >
+                                <div className="van-tab" onClick={() => goPage("summary")}>
                                     <span className="van-tab__text">{t("PAINEL")}</span>
                                 </div>
-                                <div className="van-tab" onClick={()=>goPage('referrals')}>
+                                <div className="van-tab" onClick={() => goPage("referrals")}>
                                     <span className="van-tab__text">{t("REFERÊNCIAS")}</span>
                                 </div>
-                                <div className="van-tab" onClick={()=>goPage('report')}>
+                                <div className="van-tab" onClick={() => goPage("report")}>
                                     <span className="van-tab__text">{t("RELATÓRIO")}</span>
                                 </div>
-                                <div className="van-tab" onClick={()=>goPage('payments')}>
+                                <div className="van-tab" onClick={() => goPage("payments")}>
                                     <span className="van-tab__text">{t("PAGAMENTOS")}</span>
                                 </div>
-                                <div className="van-tab van-tab--active" aria-selected="true" onClick={()=>goPage('faq')}>
-                                    <span className="van-tab__text">{t("FAQ")}</span>  
+                                <div
+                                    className="van-tab van-tab--active"
+                                    aria-selected="true"
+                                    onClick={() => goPage("faq")}
+                                >
+                                    <span className="van-tab__text">{t("FAQ")}</span>
                                 </div>
                                 <div className="van-tab">
                                     <span className="van-tab__text">{t("TUTORIAL")}</span>
@@ -94,9 +105,7 @@ const App: FC<PropsWithChildren<Props>> = (props) =>{
                         <div className="referralFaq referralFaq referral-router-view">
                             <div className="content">
                                 <h2>{t("title1")}</h2>
-                                <div>
-                                    {t("content1")}
-                                </div>
+                                <div>{t("content1")}</div>
                             </div>
                             <div className="content">
                                 <h2>{t("title2")}</h2>
@@ -104,9 +113,7 @@ const App: FC<PropsWithChildren<Props>> = (props) =>{
                             </div>
                             <div className="content">
                                 <h2>{t("title3")}</h2>
-                                <div>
-                                    {t("content3")}
-                                </div>
+                                <div>{t("content3")}</div>
                             </div>
                             <div className="content">
                                 <h2>{t("title4")} </h2>
@@ -119,12 +126,23 @@ const App: FC<PropsWithChildren<Props>> = (props) =>{
                             <div className="imgContent rowReverse">
                                 <img src="/img/cash.png" alt="" />
                                 <div>
-                                    {t("number")} > {num}
+                                    {t("number")} &gt; {num}
                                     <br />
-                                    {t("Comissão")} > {t("R$")} {money} {t("money")}
+                                    {t("Comissão")} &gt; {t("R$")} {money} {t("money")}
                                 </div>
-                                <div className="slider van-slider" style={{height: "0.02rem"}} onClick={handleSlide}>
-                                    <div className="van-slider__bar" style={{width: "0.900901%", background: "rgb(0, 157, 128)"}} ref={sliderRef}>
+                                <div
+                                    className="slider van-slider"
+                                    style={{ height: "0.02rem" }}
+                                    onClick={handleSlide}
+                                >
+                                    <div
+                                        className="van-slider__bar"
+                                        style={{
+                                            width: "0.900901%",
+                                            background: "rgb(0, 157, 128)",
+                                        }}
+                                        ref={sliderRef}
+                                    >
                                         <div role="slider" className="van-slider__button-wrapper">
                                             <div className="img"></div>
                                         </div>
@@ -133,15 +151,13 @@ const App: FC<PropsWithChildren<Props>> = (props) =>{
                             </div>
                             <div className="relationSchema">
                                 <div className="groupTitle">{t("title5")}</div>
-                                <img src="/img/group_br.webp" alt="" className="groupImg"/>
+                                <img src="/img/group_br.webp" alt="" className="groupImg" />
                                 <ul className="rules">
                                     <li>
-                                        {t("content5-1")} 
-                                        <span style={{color:"red"}}>{t("red1")}</span>
-                                    </li>
-                                    <li>
-                                        {t("content5-2")}
+                                        {t("content5-1")}
+                                        <span style={{ color: "red" }}>{t("red1")}</span>
                                     </li>
+                                    <li>{t("content5-2")}</li>
                                 </ul>
                             </div>
                             <div className="content">
@@ -149,9 +165,7 @@ const App: FC<PropsWithChildren<Props>> = (props) =>{
                                 <div>
                                     <p>{t("content6-1")}</p>
                                     <p>{t("content6-2")}</p>
-                                    <p>
-                                        {t("content6-3")}
-                                    </p>
+                                    <p>{t("content6-3")}</p>
                                 </div>
                             </div>
                         </div>
@@ -160,6 +174,6 @@ const App: FC<PropsWithChildren<Props>> = (props) =>{
                 <div className="drawer-mask"></div>
             </div>
         </div>
-    )
-}
-export default App
+    );
+};
+export default App;

+ 45 - 34
src/app/[locale]/affiliate/payments/page.tsx

@@ -1,60 +1,71 @@
-'use client'
-import { FC, PropsWithChildren } from "react";
+"use client";
 import { useRouter } from "@/i18n";
 import { useTranslations } from "next-intl";
-import './page.scss'
+import { FC } from "react";
+import "./page.scss";
 
-interface Props { }
-const App: FC<PropsWithChildren<Props>> = (props) =>{
-    const t = useTranslations("PaymentsPage")
-    const router:any = useRouter()
-    const goPage = (path = '')=>{
-        if(path){
-            if(path === 'home'){
-                router.replace('/')
-                return
+interface Props {}
+const App: FC<Props> = (props) => {
+    const t = useTranslations("PaymentsPage");
+    const router: any = useRouter();
+    const goPage = (path = "") => {
+        if (path) {
+            if (path === "home") {
+                router.replace("/");
+                return;
             }
-            
+
             console.log(router);
-            
-            router.replace(`/affiliate/${path}`)
-            return 
+
+            router.replace(`/affiliate/${path}`);
+            return;
         }
-        router.back()
-    }
+        router.back();
+    };
     return (
         <div className="vux-drawer-payments">
-            <div className="vux-drawer-body" style={{transform: "translate3d(0px, 0px, 0px)"}}>
-                <div className="referral router-view" id="id-router-view" style={{backgroundColor: "rgb(237, 237, 237)"}}>
+            <div className="vux-drawer-body" style={{ transform: "translate3d(0px, 0px, 0px)" }}>
+                <div
+                    className="referral router-view"
+                    id="id-router-view"
+                    style={{ backgroundColor: "rgb(237, 237, 237)" }}
+                >
                     <div className="headerBack">
-                        <div className="left" onClick={()=>goPage()}>
+                        <div className="left" onClick={() => goPage()}>
                             <span className="iconfont icon-xiangzuo1"></span>
                         </div>
                         <span className="title">
-                            {t("Afiliado")} 
-                            <span style={{fontSize: "0.14rem"}}> - {t("Ganhe")}</span>
+                            {t("Afiliado")}
+                            <span style={{ fontSize: "0.14rem" }}> - {t("Ganhe")}</span>
                         </span>
-                        <span className="right" onClick={()=>goPage('home')}>
+                        <span className="right" onClick={() => goPage("home")}>
                             <span className="iconfont icon-home_line router-link-active"></span>
                         </span>
                     </div>
                     <div className="tabs alginLeft van-tabs van-tabs--line">
                         <div className="van-tabs__wrap van-tabs__wrap--scrollable">
-                            <div role="tablist" className="van-tabs__nav van-tabs__nav--line van-tabs__nav--complete">
-                                <div className="van-tab" onClick={()=>goPage('summary')}>
+                            <div
+                                role="tablist"
+                                className="van-tabs__nav van-tabs__nav--line van-tabs__nav--complete"
+                            >
+                                <div className="van-tab" onClick={() => goPage("summary")}>
                                     <span className="van-tab__text">{t("PAINEL")}</span>
                                 </div>
-                                <div className="van-tab" onClick={()=>goPage('referrals')}>
+                                <div className="van-tab" onClick={() => goPage("referrals")}>
                                     <span className="van-tab__text">{t("REFERÊNCIAS")}</span>
                                 </div>
-                                <div className="van-tab" onClick={()=>goPage('report')}>
+                                <div className="van-tab" onClick={() => goPage("report")}>
                                     <span className="van-tab__text">{t("RELATÓRIO")}</span>
                                 </div>
-                                <div className="van-tab van-tab--active" aria-selected="true" onClick={()=>goPage('payments')}>
+                                <div
+                                    className="van-tab van-tab--active"
+                                    aria-selected="true"
+                                    onClick={() => goPage("payments")}
+                                >
                                     <span className="van-tab__text">{t("PAGAMENTOS")}</span>
                                 </div>
-                                <div className="van-tab" onClick={()=>goPage('faq')}>
-                                    <span className="van-tab__text">{t("FAQ")}</span>  
+                                <div className="van-tab" onClick={() => goPage("faq")}>
+                                    <span className="van-tab__text">{t("FAQ")}</span>
                                 </div>
                                 <div className="van-tab">
                                     <span className="van-tab__text">{t("TUTORIAL")}</span>
@@ -84,6 +95,6 @@ const App: FC<PropsWithChildren<Props>> = (props) =>{
                 <div className="drawer-mask"></div>
             </div>
         </div>
-    )
-}
-export default App
+    );
+};
+export default App;

+ 54 - 36
src/app/[locale]/affiliate/referrals/page.tsx

@@ -1,61 +1,75 @@
-'use client'
-import { FC, PropsWithChildren } from "react";
 import { useRouter } from "@/i18n";
 import { useTranslations } from "next-intl";
-import './page.scss'
+import { FC } from "react";
+import "./page.scss";
 
-interface Props { }
-const App: FC<PropsWithChildren<Props>> = (props) =>{
-    const t = useTranslations("ReferralsPage")
-    const router:any = useRouter()
-    const goPage = (path = '')=>{
-        if(path){
-            if(path === 'home'){
-                router.replace('/')
-                return
+interface Props {}
+
+export function generateStaticParams() {
+    return [{ slug: [""] }];
+}
+const App: FC<Props> = (props) => {
+    const t = useTranslations("ReferralsPage");
+    const router: any = useRouter();
+    const goPage = (path = "") => {
+        if (path) {
+            if (path === "home") {
+                router.replace("/");
+                return;
             }
-            
+
             console.log(router);
-            
-            router.replace(`/affiliate/${path}`)
-            return 
+
+            router.replace(`/affiliate/${path}`);
+            return;
         }
-        router.back()
-    }
+        router.back();
+    };
 
     return (
         <div className="vux-drawer-referrals">
-            <div className="vux-drawer-body" style={{transform: "translate3d(0px, 0px, 0px)"}}>
-                <div className="referral router-view" id="id-router-view" style={{backgroundColor: "rgb(237, 237, 237)"}}>
+            <div className="vux-drawer-body" style={{ transform: "translate3d(0px, 0px, 0px)" }}>
+                <div
+                    className="referral router-view"
+                    id="id-router-view"
+                    style={{ backgroundColor: "rgb(237, 237, 237)" }}
+                >
                     <div className="headerBack">
-                        <div className="left" onClick={()=>goPage()}>
+                        <div className="left" onClick={() => goPage()}>
                             <span className="iconfont icon-xiangzuo1"></span>
                         </div>
                         <span className="title">
-                            {t("Afiliado")} 
-                            <span style={{fontSize: "0.14rem"}}> - {t("Ganhe")}</span>
+                            {t("Afiliado")}
+                            <span style={{ fontSize: "0.14rem" }}> - {t("Ganhe")}</span>
                         </span>
-                        <span className="right" onClick={()=>goPage('home')}>
+                        <span className="right" onClick={() => goPage("home")}>
                             <span className="iconfont icon-home_line router-link-active"></span>
                         </span>
                     </div>
                     <div className="tabs alginLeft van-tabs van-tabs--line">
                         <div className="van-tabs__wrap van-tabs__wrap--scrollable">
-                            <div role="tablist" className="van-tabs__nav van-tabs__nav--line van-tabs__nav--complete">
-                                <div className="van-tab" onClick={()=>goPage('summary')}>
+                            <div
+                                role="tablist"
+                                className="van-tabs__nav van-tabs__nav--line van-tabs__nav--complete"
+                            >
+                                <div className="van-tab" onClick={() => goPage("summary")}>
                                     <span className="van-tab__text">{t("PAINEL")}</span>
                                 </div>
-                                <div className="van-tab van-tab--active" aria-selected="true" onClick={()=>goPage('referrals')}>
+                                <div
+                                    className="van-tab van-tab--active"
+                                    aria-selected="true"
+                                    onClick={() => goPage("referrals")}
+                                >
                                     <span className="van-tab__text">{t("REFERÊNCIAS")}</span>
                                 </div>
-                                <div className="van-tab" onClick={()=>goPage('report')}>
+                                <div className="van-tab" onClick={() => goPage("report")}>
                                     <span className="van-tab__text">{t("RELATÓRIO")}</span>
                                 </div>
-                                <div className="van-tab" onClick={()=>goPage('payments')}>
+                                <div className="van-tab" onClick={() => goPage("payments")}>
                                     <span className="van-tab__text">{t("PAGAMENTOS")}</span>
                                 </div>
-                                <div className="van-tab" onClick={()=>goPage('faq')}>
-                                    <span className="van-tab__text">{t("FAQ")}</span>  
+                                <div className="van-tab" onClick={() => goPage("faq")}>
+                                    <span className="van-tab__text">{t("FAQ")}</span>
                                 </div>
                                 <div className="van-tab">
                                     <span className="van-tab__text">{t("TUTORIAL")}</span>
@@ -79,8 +93,12 @@ const App: FC<PropsWithChildren<Props>> = (props) =>{
                                 <li>
                                     <div>#</div>
                                     <div>{t("Conta")}</div>
-                                    <div>{t("Apostas")}({t("R$")})</div>
-                                    <div>{t("ApostaEquipe")}({t("R$")})</div>
+                                    <div>
+                                        {t("Apostas")}({t("R$")})
+                                    </div>
+                                    <div>
+                                        {t("ApostaEquipe")}({t("R$")})
+                                    </div>
                                     <div>{t("Comissão")}</div>
                                 </li>
                             </ul>
@@ -105,6 +123,6 @@ const App: FC<PropsWithChildren<Props>> = (props) =>{
                 <div className="drawer-mask"></div>
             </div>
         </div>
-    )
-}
-export default App
+    );
+};
+export default App;

+ 53 - 38
src/app/[locale]/affiliate/report/page.tsx

@@ -1,60 +1,71 @@
-'use client'
-import { FC, PropsWithChildren } from "react";
-import {useRouter} from '@/i18n'
+"use client";
+import { useRouter } from "@/i18n";
 import { useTranslations } from "next-intl";
-import './page.scss'
+import { FC } from "react";
+import "./page.scss";
 
-interface Props { }
-const App: FC<PropsWithChildren<Props>> = (props) =>{
-    const t = useTranslations("ReportPage")
-    const router:any = useRouter()
-    const goPage = (path = '')=>{
-        if(path){
-            if(path === 'home'){
-                router.replace('/')
-                return
+interface Props {}
+const App: FC<Props> = (props) => {
+    const t = useTranslations("ReportPage");
+    const router: any = useRouter();
+    const goPage = (path = "") => {
+        if (path) {
+            if (path === "home") {
+                router.replace("/");
+                return;
             }
-            
+
             console.log(router);
-            
-            router.replace(`/affiliate/${path}`)
-            return 
+
+            router.replace(`/affiliate/${path}`);
+            return;
         }
-        router.back()
-    }
+        router.back();
+    };
     return (
         <div className="vux-drawer-report">
-            <div className="vux-drawer-body" style={{transform: "translate3d(0px, 0px, 0px)"}}>
-                <div className="referral router-view" id="id-router-view" style={{backgroundColor: "rgb(237, 237, 237)"}}>
+            <div className="vux-drawer-body" style={{ transform: "translate3d(0px, 0px, 0px)" }}>
+                <div
+                    className="referral router-view"
+                    id="id-router-view"
+                    style={{ backgroundColor: "rgb(237, 237, 237)" }}
+                >
                     <div className="headerBack">
-                        <div className="left" onClick={()=>goPage()}>
+                        <div className="left" onClick={() => goPage()}>
                             <span className="iconfont icon-xiangzuo1"></span>
                         </div>
                         <span className="title">
-                            {t("Afiliado")} 
-                            <span style={{fontSize: "0.14rem"}}> - {t("Ganhe")}</span>
+                            {t("Afiliado")}
+                            <span style={{ fontSize: "0.14rem" }}> - {t("Ganhe")}</span>
                         </span>
-                        <span className="right" onClick={()=>goPage('home')}>
+                        <span className="right" onClick={() => goPage("home")}>
                             <span className="iconfont icon-home_line router-link-active"></span>
                         </span>
                     </div>
                     <div className="tabs alginLeft van-tabs van-tabs--line">
                         <div className="van-tabs__wrap van-tabs__wrap--scrollable">
-                            <div role="tablist" className="van-tabs__nav van-tabs__nav--line van-tabs__nav--complete">
-                                <div className="van-tab" onClick={()=>goPage('summary')}>
+                            <div
+                                role="tablist"
+                                className="van-tabs__nav van-tabs__nav--line van-tabs__nav--complete"
+                            >
+                                <div className="van-tab" onClick={() => goPage("summary")}>
                                     <span className="van-tab__text">{t("PAINEL")}</span>
                                 </div>
-                                <div className="van-tab" onClick={()=>goPage('referrals')}>
-                                    <span className="van-tab__text" >{t("REFERÊNCIAS")}</span>
+                                <div className="van-tab" onClick={() => goPage("referrals")}>
+                                    <span className="van-tab__text">{t("REFERÊNCIAS")}</span>
                                 </div>
-                                <div className="van-tab van-tab--active" aria-selected="true" onClick={()=>goPage('report')}>
+                                <div
+                                    className="van-tab van-tab--active"
+                                    aria-selected="true"
+                                    onClick={() => goPage("report")}
+                                >
                                     <span className="van-tab__text">{t("RELATÓRIO")}</span>
                                 </div>
-                                <div className="van-tab" onClick={()=>goPage('payments')}>
+                                <div className="van-tab" onClick={() => goPage("payments")}>
                                     <span className="van-tab__text">{t("PAGAMENTOS")}</span>
                                 </div>
-                                <div className="van-tab" onClick={()=>goPage('faq')}>
-                                    <span className="van-tab__text">{t("FAQ")}</span>  
+                                <div className="van-tab" onClick={() => goPage("faq")}>
+                                    <span className="van-tab__text">{t("FAQ")}</span>
                                 </div>
                                 <div className="van-tab">
                                     <span className="van-tab__text">{t("TUTORIAL")}</span>
@@ -69,8 +80,12 @@ const App: FC<PropsWithChildren<Props>> = (props) =>{
                                 <li>
                                     <div>#</div>
                                     <div>{t("Conta")}</div>
-                                    <div>{t("Apostas")}({t("R$")})</div>
-                                    <div>{t("ApostaEquipe")}({t("R$")})</div>
+                                    <div>
+                                        {t("Apostas")}({t("R$")})
+                                    </div>
+                                    <div>
+                                        {t("ApostaEquipe")}({t("R$")})
+                                    </div>
                                     <div>{t("Comissão")}</div>
                                 </li>
                             </ul>
@@ -84,6 +99,6 @@ const App: FC<PropsWithChildren<Props>> = (props) =>{
                 <div className="drawer-mask"></div>
             </div>
         </div>
-    )
-}
-export default App
+    );
+};
+export default App;

+ 2 - 2
src/app/[locale]/affiliate/summary/page.tsx

@@ -1,12 +1,12 @@
 "use client";
 import { useRouter } from "@/i18n";
 import { useTranslations } from "next-intl";
-import { FC, PropsWithChildren, useRef, useState } from "react";
+import { FC, useRef, useState } from "react";
 import "./page.scss";
 
 interface Props {}
 
-const App: FC<PropsWithChildren<Props>> = (props) => {
+const App: FC<Props> = (props) => {
     const t = useTranslations("SummaryPage");
     const router: any = useRouter();
     const goPage = (path = "") => {

+ 60 - 44
src/app/[locale]/confirmPassword/page.tsx

@@ -1,68 +1,67 @@
 "use client";
-import { FC, PropsWithChildren, useEffect, useMemo, useState } from "react";
-import HeaderBack from "@/components/HeaderBack";
+import { getFindPwdApi } from "@/api/user";
 import ButtonOwn from "@/components/ButtonOwn";
 import DomainFooter from "@/components/DomainFooter";
-import './page.scss'
-import React from "react";
-import {getFindPwdApi} from "@/api/user";
-import { useSearchParams } from "next/navigation";
+import HeaderBack from "@/components/HeaderBack";
 import { useRouter } from "@/i18n";
-import { Toast } from 'antd-mobile'
+import { Toast } from "antd-mobile";
+import { useSearchParams } from "next/navigation";
+import { FC, useMemo, useState } from "react";
+import "./page.scss";
 
 interface Props {}
 
-const ResetPhone: FC<PropsWithChildren<Props>> = () => {
-    const router:any = useRouter()
+const ResetPhone: FC<Props> = () => {
+    const router: any = useRouter();
 
     let searchParams = useSearchParams();
-    let user_phone = searchParams.get('userPhone')
-    let code = searchParams.get('code')
+    let user_phone = searchParams.get("userPhone");
+    let code = searchParams.get("code");
 
     let [fromParam, setFromParam] = useState({
-        pwd: '',
-        againPwd: ''
-    })
+        pwd: "",
+        againPwd: "",
+    });
 
-    const setInputVal = (e: { target: { name: any; value: any; }; }) => {
-        const {name, value} = e.target;
+    const setInputVal = (e: { target: { name: any; value: any } }) => {
+        const { name, value } = e.target;
         setFromParam({
             ...fromParam,
-            [name]: value
-        })
-    }
+            [name]: value,
+        });
+    };
 
     const verifyPwd = (e: any) => {
-        let pwd = e.target.value || '';
-        pwd.replaceAll(/[^a-zA-Z0-9_-]/g, '')
-        setFromParam({ ...fromParam, pwd })
-    }
+        let pwd = e.target.value || "";
+        pwd.replaceAll(/[^a-zA-Z0-9_-]/g, "");
+        setFromParam({ ...fromParam, pwd });
+    };
 
     const activeCls = useMemo(() => {
-        let { pwd, againPwd } = fromParam
-        if (pwd && againPwd && pwd.length==againPwd.length) {
-            return true
+        let { pwd, againPwd } = fromParam;
+        if (pwd && againPwd && pwd.length == againPwd.length) {
+            return true;
         }
-        return false
+        return false;
     }, [fromParam]);
 
-    let [msgError, setMsgError] = useState('')
+    let [msgError, setMsgError] = useState("");
     const findPwdRequest = () => {
-        let { pwd, againPwd } = fromParam
-        if (pwd && againPwd && pwd!=againPwd) {
-            setMsgError('两次输入的密码不相同')
-            return true
+        let { pwd, againPwd } = fromParam;
+        if (pwd && againPwd && pwd != againPwd) {
+            setMsgError("两次输入的密码不相同");
+            return true;
         }
-        getFindPwdApi({user_phone, code, pwd}).then((res) => {
-            setMsgError(res.msg || '')
-            if(res.code == 200) {
-                Toast.show({ icon: 'success', content: '修改成功', maskClickable: false })
+        getFindPwdApi({ user_phone, code, pwd }).then((res) => {
+            setMsgError(res.msg || "");
+            if (res.code == 200) {
+                Toast.show({ icon: "success", content: "修改成功", maskClickable: false });
                 setTimeout(() => {
-                    router.replace('/login')
-                }, 1000)
+                    router.replace("/login");
+                }, 1000);
             }
-        })
-    }
+        });
+    };
 
     return (
         <div className="confirmPassword-box">
@@ -73,14 +72,31 @@ const ResetPhone: FC<PropsWithChildren<Props>> = () => {
                     <div>A senha de verificação foi enviado para o teu telemóvel 16982013895</div>
                 </div>
                 <div className="phoneInput">
-                    <input name="pwd" type="password" value={fromParam.pwd} onChange={setInputVal} onInput={verifyPwd} placeholder="Senha" maxLength={12}/>
+                    <input
+                        name="pwd"
+                        type="password"
+                        value={fromParam.pwd}
+                        onChange={setInputVal}
+                        onInput={verifyPwd}
+                        placeholder="Senha"
+                        maxLength={12}
+                    />
                 </div>
                 <div className="phoneInput">
-                    <input name="againPwd" type="password" value={fromParam.againPwd} onChange={setInputVal} placeholder="Senha" maxLength={12}/>
+                    <input
+                        name="againPwd"
+                        type="password"
+                        value={fromParam.againPwd}
+                        onChange={setInputVal}
+                        placeholder="Senha"
+                        maxLength={12}
+                    />
                 </div>
-                { msgError && <div className="tips"> {msgError} </div> }
+                {msgError && <div className="tips"> {msgError} </div>}
                 <div className="btnContent">
-                    <ButtonOwn active={activeCls} callbackFun={findPwdRequest}>Completar</ButtonOwn>
+                    <ButtonOwn active={activeCls} callbackFun={findPwdRequest}>
+                        Completar
+                    </ButtonOwn>
                 </div>
             </div>
             <DomainFooter />

+ 30 - 30
src/app/[locale]/login/page.tsx

@@ -1,57 +1,57 @@
 "use client";
-import { FC, PropsWithChildren, useState } from "react";
+import { getLoginApi, getUserInfoApi } from "@/api/user";
+import DomainFooter from "@/components/DomainFooter";
+import HeaderBack from "@/components/HeaderBack";
 import { useRouter } from "@/i18n";
+import { useGlobalStore } from "@/stores";
+import { Toast } from "antd-mobile";
+import { useTranslations } from "next-intl";
 import { useSearchParams } from "next/navigation";
-import HeaderBack from "@/components/HeaderBack";
-import GoogleCom from "./component/GoogleCom";
+import { FC, useState } from "react";
 import FromCom from "./component/FromCom";
-import DomainFooter from "@/components/DomainFooter";
-import './page.scss'
-import { getLoginApi, getUserInfoApi } from "@/api/user";
-import { useGlobalStore } from '@/stores';
-import { Toast } from 'antd-mobile'
-import { useTranslations } from "next-intl";
+import GoogleCom from "./component/GoogleCom";
+import "./page.scss";
 
 interface Props {}
 
-const Login: FC<PropsWithChildren<Props>> = () => {
+const Login: FC<Props> = () => {
     const t = useTranslations("LoginPage");
     const { setToken, setUserInfo } = useGlobalStore();
 
-    const router:any = useRouter()
+    const router: any = useRouter();
     let searchParams = useSearchParams();
-    let redirect = searchParams.get('redirect') || ''
+    let redirect = searchParams.get("redirect") || "";
 
-    const [msgError, setMsgError] = useState('')
-    const loginRequest = async ({userPhone, pwd}: any) => {
-        let params = {user_phone: userPhone, pwd}
-        let res = await getLoginApi(params)
-        if(res.code == 200) {
-            setToken(res.data.token)
+    const [msgError, setMsgError] = useState("");
+    const loginRequest = async ({ userPhone, pwd }: any) => {
+        let params = { user_phone: userPhone, pwd };
+        let res = await getLoginApi(params);
+        if (res.code == 200) {
+            setToken(res.data.token);
             Toast.show({
-                icon: 'loading',
-                content: '请求中...',
+                icon: "loading",
+                content: "请求中...",
                 duration: 10000,
                 maskClickable: false,
-            })
-            getUserInfoApi().then(res1 => {
+            });
+            getUserInfoApi().then((res1) => {
                 if (res1.code == 200) {
-                    Toast.show({ icon: 'success', content: t("loginSuc"), maskClickable: false })
-                    setUserInfo(res1.data)
+                    Toast.show({ icon: "success", content: t("loginSuc"), maskClickable: false });
+                    setUserInfo(res1.data);
                     setTimeout(() => {
-                        router.replace('/' + redirect)
-                    }, 1000)
+                        router.replace("/" + redirect);
+                    }, 1000);
                 }
-            })
+            });
         }
-        setMsgError(res.msg || '')
-    }
+        setMsgError(res.msg || "");
+    };
 
     return (
         <div className="login-box">
             <HeaderBack />
             <GoogleCom />
-            <FromCom callbackFun={loginRequest} msgError={msgError}/>
+            <FromCom callbackFun={loginRequest} msgError={msgError} />
             <DomainFooter />
         </div>
     );

+ 5 - 3
src/app/[locale]/page.tsx

@@ -2,15 +2,15 @@ import HomeActions from "@/app/[locale]/_home/HomeActions";
 import HomeGames from "@/app/[locale]/_home/HomeGames";
 import Box from "@/components/Box";
 import Layout from "@/components/Layout";
-import { LocalPropsWithChildren } from "@/types";
 import { useTranslations } from "next-intl";
 import { FC } from "react";
 import HomeCard from "./_home/HomeCard";
+import HomeSearch from "./_home/HomeSearch";
 import HomeSwiper from "./_home/HomeSwiper";
 
 // Information
 // ts-ignore
-const App: FC<LocalPropsWithChildren> = (props) => {
+const App: FC = (props) => {
     const t = useTranslations("global");
     return (
         <Layout>
@@ -19,6 +19,9 @@ const App: FC<LocalPropsWithChildren> = (props) => {
                     <HomeSwiper></HomeSwiper>
                     <HomeCard></HomeCard>
                 </Box>
+                <Box className={"pb-[0.0394rem]"}>
+                    <HomeSearch />
+                </Box>
                 {/*todo HomeTabs*/}
                 <HomeGames />
                 <Box>
@@ -30,4 +33,3 @@ const App: FC<LocalPropsWithChildren> = (props) => {
 };
 
 export default App;
-

+ 22 - 22
src/app/[locale]/register/page.tsx

@@ -1,38 +1,38 @@
 "use client";
-import { FC, PropsWithChildren, useState } from "react";
-import { useRouter } from "@/i18n";
-import HeaderBack from "@/components/HeaderBack";
-import GoogleCom from "../login/component/GoogleCom";
-import FromCom from "../login/component/FromCom";
+import { getRegisterApi } from "@/api/user";
 import DomainFooter from "@/components/DomainFooter";
-import '../login/page.scss'
-import {getRegisterApi} from "@/api/user";
-import { Toast } from 'antd-mobile'
+import HeaderBack from "@/components/HeaderBack";
+import { useRouter } from "@/i18n";
+import { Toast } from "antd-mobile";
 import { useTranslations } from "next-intl";
+import { FC, useState } from "react";
+import FromCom from "../login/component/FromCom";
+import GoogleCom from "../login/component/GoogleCom";
+import "../login/page.scss";
 
 interface Props {}
 
-const Register: FC<PropsWithChildren<Props>> = () => {
+const Register: FC<Props> = () => {
     const t = useTranslations("LoginPage");
-    const router:any = useRouter()
-    const [msgError, setMsgError] = useState('')
-    const registerRequest = async ({userPhone, pwd}: any) => {
-        let params = {user_phone: userPhone, pwd, code: '123456'}
-        let { code, msg } = await getRegisterApi(params)
-        if(code == 200) {
-            Toast.show({ icon: 'success', content: t("registerSuc"), maskClickable: false })
+    const router: any = useRouter();
+    const [msgError, setMsgError] = useState("");
+    const registerRequest = async ({ userPhone, pwd }: any) => {
+        let params = { user_phone: userPhone, pwd, code: "123456" };
+        let { code, msg } = await getRegisterApi(params);
+        if (code == 200) {
+            Toast.show({ icon: "success", content: t("registerSuc"), maskClickable: false });
             setTimeout(() => {
-                router.replace('/login')
-            }, 1000)
+                router.replace("/login");
+            }, 1000);
         } else {
-            setMsgError(msg)
+            setMsgError(msg);
         }
-    }
+    };
     return (
         <div className="register-box">
             <HeaderBack />
-            <GoogleCom title={t("registerGoogletitle")} text={t("registerGoogletext")}/>
-            <FromCom type="register" callbackFun={registerRequest} msgError={msgError}/>
+            <GoogleCom title={t("registerGoogletitle")} text={t("registerGoogletext")} />
+            <FromCom type="register" callbackFun={registerRequest} msgError={msgError} />
             <DomainFooter />
         </div>
     );

+ 43 - 35
src/app/[locale]/resetPhone/page.tsx

@@ -1,61 +1,69 @@
 "use client";
-import { FC, PropsWithChildren, useState } from "react";
-import HeaderBack from "@/components/HeaderBack";
+import { getCheckUserPhoneExistApi } from "@/api/user";
 import ButtonOwn from "@/components/ButtonOwn";
 import DomainFooter from "@/components/DomainFooter";
-import './page.scss'
-import React from "react";
-import { phoneRegex } from "@/utils";
-import {getCheckUserPhoneExistApi} from "@/api/user";
+import HeaderBack from "@/components/HeaderBack";
 import { useRouter } from "@/i18n";
+import { phoneRegex } from "@/utils";
 import { useTranslations } from "next-intl";
+import { FC, useState } from "react";
+import "./page.scss";
 
 interface Props {}
 
-const ResetPhone: FC<PropsWithChildren<Props>> = () => {
+const ResetPhone: FC<Props> = () => {
     const t = useTranslations("ResetPhonePage");
-    const router:any = useRouter()
-    let [userPhone, setUserPhone] = useState('')
-    const changeUserPhone = (e: { target: { value: any; }; }) => {
-        setUserPhone(e.target.value)
-    }
-    let [msgError, setMsgError] = useState('')
-    const blurVerifyPhone = (e: { target: { value: any; }; }) => {
-        const {value} = e.target;
-        if (value == '') {
-            setMsgError('')
-            return
+    const router: any = useRouter();
+    let [userPhone, setUserPhone] = useState("");
+    const changeUserPhone = (e: { target: { value: any } }) => {
+        setUserPhone(e.target.value);
+    };
+    let [msgError, setMsgError] = useState("");
+    const blurVerifyPhone = (e: { target: { value: any } }) => {
+        const { value } = e.target;
+        if (value == "") {
+            setMsgError("");
+            return;
         }
         if (value && !phoneRegex(value)) {
-            setMsgError(t('enterCorrectphone'))
-            return
+            setMsgError(t("enterCorrectphone"));
+            return;
         }
-        setMsgError('')
-    }
+        setMsgError("");
+    };
     const checkUserPhoneRequest = async () => {
-        if(!phoneRegex(userPhone)) return
-        let { code, msg, data } = await getCheckUserPhoneExistApi({user_phone: userPhone})
-        if(code == 200 && data) {
-            router.push(`/verification?userPhone=${userPhone}`)
-            return
+        if (!phoneRegex(userPhone)) return;
+        let { code, msg, data } = await getCheckUserPhoneExistApi({ user_phone: userPhone });
+        if (code == 200 && data) {
+            router.push(`/verification?userPhone=${userPhone}`);
+            return;
         }
-        setMsgError(msg)
-    }
+        setMsgError(msg);
+    };
     return (
         <div className="resetPhone-box">
             <HeaderBack />
             <div className="main">
                 <div className="title">
-                    <h2>{t('h2')}</h2>
-                    <div>{t('h3')}</div>
+                    <h2>{t("h2")}</h2>
+                    <div>{t("h3")}</div>
                 </div>
                 <div className="phoneInput">
-                    <span className="after">{t('areaCode')}</span>
-                    <input type="tel" value={userPhone} onChange={changeUserPhone} onBlur={blurVerifyPhone} placeholder={t('Celular')} maxLength={11} />
+                    <span className="after">{t("areaCode")}</span>
+                    <input
+                        type="tel"
+                        value={userPhone}
+                        onChange={changeUserPhone}
+                        onBlur={blurVerifyPhone}
+                        placeholder={t("Celular")}
+                        maxLength={11}
+                    />
                 </div>
-                { msgError && <div className="tips"> {msgError} </div> }
+                {msgError && <div className="tips"> {msgError} </div>}
                 <div className="btnContent">
-                    <ButtonOwn active={userPhone.length == 11} callbackFun={checkUserPhoneRequest}>{t('Continuar')}</ButtonOwn>
+                    <ButtonOwn active={userPhone.length == 11} callbackFun={checkUserPhoneRequest}>
+                        {t("Continuar")}
+                    </ButtonOwn>
                 </div>
             </div>
             <DomainFooter />

+ 48 - 36
src/app/[locale]/verification/page.tsx

@@ -1,43 +1,42 @@
 "use client";
-import { FC, PropsWithChildren, useEffect, useRef, useState } from "react";
-import HeaderBack from "@/components/HeaderBack";
+import { getSendCodeApi } from "@/api/user";
 import ButtonOwn from "@/components/ButtonOwn";
 import DomainFooter from "@/components/DomainFooter";
-import './page.scss'
-import React from "react";
-import {getSendCodeApi} from "@/api/user";
-import { useSearchParams } from "next/navigation";
+import HeaderBack from "@/components/HeaderBack";
 import { useRouter } from "@/i18n";
 import { useTranslations } from "next-intl";
+import { useSearchParams } from "next/navigation";
+import { FC, useEffect, useRef, useState } from "react";
+import "./page.scss";
 
 interface Props {}
 
-const ResetPhone: FC<PropsWithChildren<Props>> = () => {
+const ResetPhone: FC<Props> = () => {
     const t = useTranslations("VerificationPage");
-    const router:any = useRouter()
-    let [code, setCode] = useState('')
-    const changeCode = (e: { target: { value: any; }; }) => {
-        setCode(e.target.value)
-    }
+    const router: any = useRouter();
+    let [code, setCode] = useState("");
+    const changeCode = (e: { target: { value: any } }) => {
+        setCode(e.target.value);
+    };
 
     let searchParams = useSearchParams();
-    let user_phone = searchParams.get('userPhone')
-    let [msgError, setMsgError] = useState('')
+    let user_phone = searchParams.get("userPhone");
+    let [msgError, setMsgError] = useState("");
     const sendCodeRequest = () => {
-        if(!user_phone) return
-        getSendCodeApi({user_phone}).then((res) => {
-            if(res.code == 200) {
+        if (!user_phone) return;
+        getSendCodeApi({ user_phone }).then((res) => {
+            if (res.code == 200) {
                 setTime(60);
-    		    setIsNote(true);
-                return
+                setIsNote(true);
+                return;
             }
-            setMsgError(res.msg)
-        })
-    }
+            setMsgError(res.msg);
+        });
+    };
     useEffect(() => {
-        sendCodeRequest()
+        sendCodeRequest();
         // eslint-disable-next-line react-hooks/exhaustive-deps
-    }, [])
+    }, []);
 
     let [isNote, setIsNote] = useState(true);
     let [time, setTime] = useState(60);
@@ -55,30 +54,43 @@ const ResetPhone: FC<PropsWithChildren<Props>> = () => {
         };
     }, [time]);
     const sendCodeFun = () => {
-        if(isNote) return
-        sendCodeRequest()
-    }
+        if (isNote) return;
+        sendCodeRequest();
+    };
 
     const goPage = () => {
-        if(!code || code.length < 6) return
-        router.push(`/confirmPassword?userPhone=${user_phone}&code=${code}`)
-    }
+        if (!code || code.length < 6) return;
+        router.push(`/confirmPassword?userPhone=${user_phone}&code=${code}`);
+    };
 
     return (
         <div className="verification-box">
             <HeaderBack />
             <div className="main">
                 <div className="title">
-                    <h2>{t('h2')}</h2>
-                    <div>{t('h3')} {user_phone}</div>
+                    <h2>{t("h2")}</h2>
+                    <div>
+                        {t("h3")} {user_phone}
+                    </div>
                 </div>
                 <div className="phoneInput">
-                    <input type="tel" value={code} onChange={changeCode} placeholder={t('Reenviar')} maxLength={6} />
-                    <span className="after" onClick={sendCodeFun}> { isNote ? `${time}s`: t('Envie')} </span>
+                    <input
+                        type="tel"
+                        value={code}
+                        onChange={changeCode}
+                        placeholder={t("Reenviar")}
+                        maxLength={6}
+                    />
+                    <span className="after" onClick={sendCodeFun}>
+                        {" "}
+                        {isNote ? `${time}s` : t("Envie")}{" "}
+                    </span>
                 </div>
-                { msgError && <div className="tips"> {msgError} </div> }
+                {msgError && <div className="tips"> {msgError} </div>}
                 <div className="btnContent">
-                    <ButtonOwn active={code.length==6} callbackFun={goPage}>{t('Completar')}</ButtonOwn>
+                    <ButtonOwn active={code.length == 6} callbackFun={goPage}>
+                        {t("Completar")}
+                    </ButtonOwn>
                 </div>
             </div>
             <DomainFooter />

+ 38 - 24
tsconfig.json

@@ -1,26 +1,40 @@
 {
-    "compilerOptions": {
-        "lib": ["dom", "dom.iterable", "esnext"],
-        "allowJs": true,
-        "skipLibCheck": true,
-        "strict": true,
-        "noEmit": true,
-        "esModuleInterop": true,
-        "module": "esnext",
-        "moduleResolution": "bundler",
-        "resolveJsonModule": true,
-        "isolatedModules": true,
-        "jsx": "preserve",
-        "incremental": true,
-        "plugins": [
-            {
-                "name": "next"
-            }
-        ],
-        "paths": {
-            "@/*": ["./src/*"]
-        }
-    },
-    "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"],
-    "exclude": ["node_modules"]
+  "compilerOptions": {
+    "lib": [
+      "dom",
+      "dom.iterable",
+      "esnext"
+    ],
+    "allowJs": true,
+    "skipLibCheck": true,
+    "strict": true,
+    "noEmit": true,
+    "esModuleInterop": true,
+    "module": "esnext",
+    "moduleResolution": "bundler",
+    "resolveJsonModule": true,
+    "isolatedModules": true,
+    "jsx": "preserve",
+    "incremental": true,
+    "plugins": [
+      {
+        "name": "next"
+      }
+    ],
+    "paths": {
+      "@/*": [
+        "./src/*"
+      ]
+    }
+  },
+  "include": [
+    "next-env.d.ts",
+    "**/*.ts",
+    "**/*.tsx",
+    ".next/types/**/*.ts",
+    "build/types/**/*.ts"
+  ],
+  "exclude": [
+    "node_modules"
+  ]
 }

Niektóre pliki nie zostały wyświetlone z powodu dużej ilości zmienionych plików