浏览代码

feat: 修改

year 1 天之前
父节点
当前提交
7adbd89503

二进制
public/vip_charge/H7_viplibao_jiaobiao2_bg.webp


二进制
public/vip_charge/H7_viplibao_jiaobiao_bg.webp


二进制
public/vip_charge/H7_viplibao_libiao_icon.webp


二进制
public/vip_charge/vip_tuodi_bg.webp


二进制
public_original/vip_charge/H7_viplibao_jiaobiao2_bg.webp


二进制
public_original/vip_charge/H7_viplibao_jiaobiao_bg.webp


二进制
public_original/vip_charge/H7_viplibao_libiao_icon.webp


二进制
public_original/vip_charge/vip_tuodi_bg.webp


+ 1 - 0
src/api/activity.ts

@@ -406,6 +406,7 @@ export interface SignInfo8g {
     tally_time: number;
     is_op: boolean;
     remark: string;
+    cur_vip_level: number;
     list: {
         sign_in: Record<number, Sign8gItem[]>;
         continuous_sign_in: Record<number, Sign8gItem[]>;

+ 0 - 2
src/app/[locale]/(TabBar)/[[...share]]/_home/HomePrize.tsx

@@ -47,8 +47,6 @@ const HomePrize: FC<Props> = (props) => {
 
         return result;
     }, [data, notices, type]);
-
-    console.log(renderData);
     const noticeEnd = (idx: number) => {
         if (noticeSwiperRef.current) {
             const toIndex = idx + 1 >= renderData.length ? 0 : idx + 1;

+ 4 - 2
src/app/[locale]/(doings)/check_in/page.tsx

@@ -136,10 +136,12 @@ const Page = () => {
         <div className={styles.pageContainer}>
             <VipProgress
                 onChange={vipChange}
-                useInnerVip={true}
                 vips={vips}
-                vip_level={vipLevel}
+                useInnerVip={false}
+                actKey={vipLevel}
+                vip_level={data.cur_vip_level}
             ></VipProgress>
+
             {(!!curSignIn?.length || !!curContinueSignIn?.length) && (
                 <>
                     <div className={styles.boxContainer}>

+ 28 - 0
src/app/[locale]/(doings)/vipCharge/layout.tsx

@@ -0,0 +1,28 @@
+import HeaderBack from "@/components/HeaderBack";
+import { getTranslations } from "next-intl/server";
+import { ReactNode } from "react";
+import styles from "./page.module.scss";
+
+export default async function Layout({
+    children,
+    params: { locale },
+}: {
+    children: ReactNode;
+    params: { locale: string };
+}) {
+    const t = await getTranslations("Header");
+    return (
+        <div className={styles.page}>
+            <HeaderBack
+                showBack={true}
+                title={
+                    <div className="flex items-center justify-center">
+                        <i className="iconfont icon-Group8 mr-[.1rem] text-[.18rem] text-[var(--primary20)]"></i>
+                        <span className="leading-[1]">Pacote de Atualização</span>
+                    </div>
+                }
+            />
+            <main className={"main-header"}>{children}</main>
+        </div>
+    );
+}

+ 24 - 0
src/app/[locale]/(doings)/vipCharge/page.module.scss

@@ -0,0 +1,24 @@
+.page {
+    height: 100%;
+    display: flex;
+    flex-direction: column;
+}
+.pageContainer {
+    padding-top: 0.1rem;
+}
+
+.card {
+    background: linear-gradient(60deg, var(--primary1) 20%, #a94880 100%);
+    border-radius: 0.1rem;
+    position: relative;
+    padding: 0.1rem;
+}
+.item {
+    background: linear-gradient(90deg, var(--gradient-left3) 10%, var(--gradient-right3));
+    border-radius: var(--borderRadius);
+    padding: 0.1rem 0.18rem 0.1rem 0;
+    display: flex;
+    margin-top: 0.1rem;
+    justify-content: space-between;
+    align-items: stretch;
+}

+ 102 - 0
src/app/[locale]/(doings)/vipCharge/page.tsx

@@ -0,0 +1,102 @@
+"use client";
+import CustomButton from "@/components/CustomButton";
+import VipProgress from "@/components/VipProgress";
+import React from "react";
+import styles from "./page.module.scss";
+
+const Page = () => {
+    const [vipLevel, setVipLevel] = React.useState(0);
+
+    const vipChange = (value: any) => {
+        setVipLevel(value);
+    };
+
+    return (
+        <div className={styles.pageContainer}>
+            <VipProgress onChange={vipChange} vip_level={vipLevel}></VipProgress>
+            <div className="p-[.1rem]">
+                <div className={styles.card}>
+                    <div className="relative z-[1]">
+                        <div className="text-[16px] font-bold text-[var(--textColor1)]">
+                            Pacote de Beneficios VIP
+                        </div>
+                        <div className="mt-[.1rem] font-bold text-[var(--textColor1)]">
+                            Recarregue:
+                        </div>
+                        <div className="text-[24px] font-black text-[var(--textColor1)]">
+                            R$ 100,00
+                        </div>
+                        <div className="mt-[.1rem] font-bold text-[var(--textColor1)]">
+                            Valor total:
+                        </div>
+                        <div className="text-[24px] font-black text-[var(--textColor1)]">
+                            R$ 100,00
+                        </div>
+                        <CustomButton className="mt-[.1rem] !w-full">Depósito</CustomButton>
+                    </div>
+                    <div className="absolute -right-[1px] top-[.15rem] aspect-[5.32/1] w-[120px] bg-[url('/vip_charge/H7_viplibao_jiaobiao_bg.webp')] bg-contain bg-no-repeat text-center text-[12px] text-[#fff]">
+                        Recarga +130%
+                    </div>
+                    <div className="absolute right-[0] top-[.3rem] flex flex-col items-center">
+                        <img
+                            className="w-[1.5rem]"
+                            src="/vip_charge/H7_viplibao_libiao_icon.webp"
+                            alt=""
+                        />
+                        <img
+                            className="relative top-[-0.35rem] w-[1.2rem]"
+                            src="/vip_charge/vip_tuodi_bg.webp"
+                            alt=""
+                        />
+                    </div>
+                </div>
+
+                <div className={styles.item}>
+                    <div className="h-[100%]">
+                        <div className="flex aspect-[2.73/1] w-[70px] items-center justify-center bg-[url('/vip_charge/H7_viplibao_jiaobiao2_bg.webp')] bg-contain bg-no-repeat">
+                            1 Dia
+                        </div>
+                    </div>
+                    <div>
+                        <div>Pode receber</div>
+                        <div className="fontfamily text-[24px] font-black text-[var(--textColor4)]">
+                            R$ 100,00
+                        </div>
+                    </div>
+                    <div className="flex items-center">
+                        <CustomButton
+                            className="min-w-[120px] !px-[12px] !py-[15px] !text-[14px] !font-normal !leading-[1]"
+                            type={"disable3"}
+                        >
+                            Não iniciado
+                        </CustomButton>
+                    </div>
+                </div>
+
+                <div className="mb-[.2rem] mt-[.1rem] flex w-full flex-col gap-[8px] rounded-[var(--borderRadius)] bg-[var(--primary13)] p-[15px] text-[#cbd1cb]">
+                    <h3 className="text-[12px] text-[var(--textColor1)]">
+                        Regras do pacote de benefícios de upgrade VIP:
+                    </h3>
+                    <div className="flex w-full flex-col gap-[5px] text-[12px] text-[var(--textColor2)]">
+                        <span>
+                            1. Ao subir de nivel VIP, o membro ganha um pacote de benefícios.
+                        </span>
+                        <span>
+                            2. Para ganhar recompensas extras, o valor do pacote precisa ser
+                            recarregado.
+                        </span>
+                        <span>3. Cada nível VIP só recebe o pacote uma vez.</span>
+                        <span>4. Após a recarga, o valor e a recompensa do dia são liberados.</span>
+                        <span>5. Recompensas extras restantes saem no 2° e 3° dias.</span>
+                        <span>
+                            6. As recompensas não expiram e podem ser retiradas a qualquer momento.
+                        </span>
+                        <span>7. Compras de múltiplos pacotes acumulam as recompensas.</span>
+                    </div>
+                </div>
+            </div>
+        </div>
+    );
+};
+
+export default Page;

+ 4 - 0
src/components/CustomButton/index.module.scss

@@ -24,4 +24,8 @@
     &.disable2 {
         background: #0003;
     }
+    &.disable3 {
+        background: #b3bec14d;
+        color: var(--textColor3);
+    }
 }

+ 1 - 1
src/components/CustomButton/index.tsx

@@ -7,7 +7,7 @@ interface Props {
     children: React.ReactNode;
     className?: string;
     onClick?: (() => void) | (() => Promise<void>);
-    type?: "primary" | "warn" | "disable2";
+    type?: "primary" | "warn" | "disable2" | "disable3";
     disabled?: boolean;
     style?: React.CSSProperties;
     withGift?: boolean;

+ 1 - 1
src/components/NoticeBox/index.module.scss

@@ -8,6 +8,6 @@
 .content {
     white-space: nowrap;
     font-size: 0.12rem;
-    color: var(-textColor1);
+    color: var(--textColor1);
     font-weight: normal;
 }