Преглед на файлове

feat: 增加其他类型游戏记录

Before преди 8 месеца
родител
ревизия
43fa30e08d

+ 4 - 1
messages/br.json

@@ -143,7 +143,10 @@
     "bonus":  "Bônus",
     "free": "Free",
     "replay": "Replay",
-    "expTips": "{exp} Bet to "
+    "expTips": "{exp} Bet to ",
+    "main": "Principais",
+    "gratis": "Grátis",
+    "compensation": "Compensaçao"
   },
   "DepositPage": {
     "Montante": "Montante",

+ 4 - 1
messages/en.json

@@ -144,7 +144,10 @@
     "bonus":  "Bônus",
     "free": "Free",
     "replay": "Replay",
-    "expTips": "{exp} Bet to "
+    "expTips": "{exp} Bet to ",
+    "main": "Main",
+    "gratis": "Gratis",
+    "compensation": "Compensation"
   },
   "DepositPage": {
     "Montante": "Montante",

+ 1 - 0
src/api/user.ts

@@ -270,6 +270,7 @@ export const getUserVipApi = () => {
 };
 
 export interface DepositsRep {
+    id: string;
     /**
      * 充值金额
      */

+ 17 - 4
src/app/[locale]/(TabBar)/[[...share]]/_home/HomeGames.tsx

@@ -7,10 +7,23 @@ interface Props {
     // group: GroupType[];
 }
 
-const Manufacturer = (props: { data: GameListRep[] }) => {
-    const { data } = props;
+const Manufacturer = (props: { data: GameListRep[]; group: Category }) => {
+    const router = useRouter();
+    const { data, group } = props;
+    console.log(`🚀🚀🚀🚀🚀-> in HomeGames.tsx on 12`, data, group);
+    const todoHandler = (item: GameListRep) => {
+        router.push(`/gameList/?gameListFlag=${item.id}&type=${group.type}`);
+    };
     const elements = data.map((item, index) => {
-        return <img key={index} className={"rounded-[0.05rem]"} src={item.game_icon} alt="" />;
+        return (
+            <img
+                key={index}
+                className={"rounded-[0.05rem]"}
+                onClick={() => todoHandler(item)}
+                src={item.game_icon}
+                alt=""
+            />
+        );
     });
 
     return <div className={"grid grid-cols-4 gap-x-2 gap-y-2"}>{elements}</div>;
@@ -44,7 +57,7 @@ const HomeGames = (props: Props) => {
                             page={4}
                             visibleTodos={false}
                             todoHandler={todoHandler}
-                            slideRender={(data) => <Manufacturer data={data} />}
+                            slideRender={(data) => <Manufacturer data={data} group={group} />}
                         ></SwiperGroup>
                     );
                 }

+ 34 - 0
src/app/[locale]/(navbar)/betrecord/CashRecord.tsx

@@ -0,0 +1,34 @@
+"use client";
+import { betRecordApi, RecordBillsResp } from "@/api/betrecord";
+import { Pagination } from "@/types";
+import { useSetState } from "ahooks";
+import { InfiniteScroll } from "antd-mobile";
+import { useRef } from "react";
+import Message from "./components/list";
+
+const Bets = () => {
+    const params = useRef({ current_page: 0, page_size: 20, use_page: true });
+    const [sourceData, setSourceData] = useSetState<{
+        list: RecordBillsResp[];
+        page: Partial<Pagination>;
+    }>({ list: [], page: { is_end: false } });
+
+    const getBetRecordData = async () => {
+        return betRecordApi(params.current).then((res) => {
+            setSourceData((value) => ({ page: res.page, list: [...value.list, ...res.data] }));
+            return res;
+        });
+    };
+    const loadMore = async () => {
+        params.current.current_page += 1;
+        await getBetRecordData();
+    };
+    return (
+        <>
+            <Message record={sourceData.list} />
+            <InfiniteScroll loadMore={loadMore} hasMore={!sourceData.page.is_end!} />
+        </>
+    );
+};
+
+export default Bets;

+ 34 - 0
src/app/[locale]/(navbar)/betrecord/FreeRecord.tsx

@@ -0,0 +1,34 @@
+"use client";
+import { betRecordApi, RecordBillsResp } from "@/api/betrecord";
+import { Pagination } from "@/types";
+import { useSetState } from "ahooks";
+import { InfiniteScroll } from "antd-mobile";
+import { useRef } from "react";
+import Message from "./components/list";
+
+const Bets = () => {
+    const params = useRef({ current_page: 0, page_size: 20, use_page: true });
+    const [sourceData, setSourceData] = useSetState<{
+        list: RecordBillsResp[];
+        page: Partial<Pagination>;
+    }>({ list: [], page: { is_end: false } });
+
+    const getBetRecordData = async () => {
+        return betRecordApi(params.current).then((res) => {
+            setSourceData((value) => ({ page: res.page, list: [...value.list, ...res.data] }));
+            return res;
+        });
+    };
+    const loadMore = async () => {
+        params.current.current_page += 1;
+        await getBetRecordData();
+    };
+    return (
+        <>
+            <Message record={sourceData.list} />
+            <InfiniteScroll loadMore={loadMore} hasMore={!sourceData.page.is_end!} />
+        </>
+    );
+};
+
+export default Bets;

+ 34 - 0
src/app/[locale]/(navbar)/betrecord/ReplayRecord.tsx

@@ -0,0 +1,34 @@
+"use client";
+import { betRecordApi, RecordBillsResp } from "@/api/betrecord";
+import { Pagination } from "@/types";
+import { useSetState } from "ahooks";
+import { InfiniteScroll } from "antd-mobile";
+import { useRef } from "react";
+import Message from "./components/list";
+
+const Bets = () => {
+    const params = useRef({ current_page: 0, page_size: 20, use_page: true });
+    const [sourceData, setSourceData] = useSetState<{
+        list: RecordBillsResp[];
+        page: Partial<Pagination>;
+    }>({ list: [], page: { is_end: false } });
+
+    const getBetRecordData = async () => {
+        return betRecordApi(params.current).then((res) => {
+            setSourceData((value) => ({ page: res.page, list: [...value.list, ...res.data] }));
+            return res;
+        });
+    };
+    const loadMore = async () => {
+        params.current.current_page += 1;
+        await getBetRecordData();
+    };
+    return (
+        <>
+            <Message record={sourceData.list} />
+            <InfiniteScroll loadMore={loadMore} hasMore={!sourceData.page.is_end!} />
+        </>
+    );
+};
+
+export default Bets;

+ 19 - 32
src/app/[locale]/(navbar)/betrecord/page.tsx

@@ -1,35 +1,22 @@
-"use client";
-import { betRecordApi, RecordBillsResp } from "@/api/betrecord";
-import { Pagination } from "@/types";
-import { useSetState } from "ahooks";
-import { InfiniteScroll } from "antd-mobile";
-import { useRef } from "react";
-import Message from "./components/list";
+import FreeRecord from "@/app/[locale]/(navbar)/betrecord/FreeRecord";
+import ReplayRecord from "@/app/[locale]/(navbar)/betrecord/ReplayRecord";
+import Tabs from "@/components/Tabs";
+import { getTranslations } from "next-intl/server";
+import CashRecord from "./CashRecord";
 
-const Bets = () => {
-    const params = useRef({ current_page: 0, page_size: 20, use_page: true });
-    const [sourceData, setSourceData] = useSetState<{
-        list: RecordBillsResp[];
-        page: Partial<Pagination>;
-    }>({ list: [], page: { is_end: false } });
-
-    const getBetRecordData = async () => {
-        return betRecordApi(params.current).then((res) => {
-            setSourceData((value) => ({ page: res.page, list: [...value.list, ...res.data] }));
-            return res;
-        });
-    };
-    const loadMore = async () => {
-        params.current.current_page += 1;
-        await getBetRecordData();
-        console.log(`🚀🚀🚀🚀🚀-> in page.tsx on 25`, sourceData);
-    };
-    return (
-        <>
-            <Message record={sourceData.list} />
-            <InfiniteScroll loadMore={loadMore} hasMore={!sourceData.page.is_end!} />
-        </>
-    );
+const Transactions = async () => {
+    const t = await getTranslations("ProfilePage");
+    const defaultTabs = [
+        {
+            id: 1,
+            name: t("main"),
+            content: 0,
+            render: <CashRecord></CashRecord>,
+        },
+        { id: 2, name: t("gratis"), content: 0, render: <FreeRecord /> },
+        { id: 3, name: t("compensation"), content: 0, render: <ReplayRecord /> },
+    ];
+    return <Tabs items={defaultTabs} />;
 };
 
-export default Bets;
+export default Transactions;

+ 16 - 3
src/app/[locale]/(navbar)/transactions/components/Message.tsx

@@ -1,13 +1,19 @@
 import { DepositsRep } from "@/api/user";
 import Box from "@/components/Box";
-import { timeFormat } from "@/utils/methods";
+import { copyText, timeFormat } from "@/utils/methods";
+import { Toast } from "antd-mobile";
+import { useTranslations } from "next-intl";
 
 type Props = {
     data: DepositsRep[];
 };
 const Message = (props: Props) => {
     const { data = [] } = props;
-
+    const t = useTranslations();
+    const copyHandler = (text: string) => {
+        copyText(text);
+        Toast.show(`Copy ${t("code.200")}`);
+    };
     return (
         <>
             {data.map((item, i) => {
@@ -20,7 +26,14 @@ const Message = (props: Props) => {
                                 {/*<span className={"text-[#acacac]"}></span>*/}
                             </p>
                         </div>
-                        <div className={"text-[12px flex justify-between text-[#acacac]"}>
+                        <div className={"flex items-center pb-[0.0694rem]"}>
+                            <p className={"mr-[10px]"}>{item.id}</p>
+                            <span
+                                className={"iconfont icon-igw-f-copy"}
+                                onClick={() => copyHandler(item.id)}
+                            ></span>
+                        </div>
+                        <div className={"flex justify-between text-[12px] text-[#acacac]"}>
                             <p>{timeFormat(item.time)}</p>
                             <p>{item.status}</p>
                         </div>