@@ -163,10 +160,10 @@ export default function PartnerIntro() {
diff --git a/src/http/api.ts b/src/http/api.ts
index a29d67b..024cd42 100644
--- a/src/http/api.ts
+++ b/src/http/api.ts
@@ -1,4 +1,4 @@
-// export const DOMAIN = 'http://192.168.60.191:8082';
+// export const DOMAIN = 'http://192.168.60.116:8082';
export const DOMAIN = process.env.BRAND === 'dev' ? 'https://dev.neighbourhood.cn' : 'https://neighbourhood.cn';
// export const DOMAIN = 'https://dev.neighbourhood.cn';
export const BASE_URL = `${DOMAIN}/api`;
@@ -85,4 +85,7 @@ export enum API {
GET_PROFIT_STAT = '/user/profits',
WITHDRAW = '/user/withdraw',
GET_WITHDRAW_LIST = '/user/withdraw/records',
+ GENERATE_MEMBERSHIP_COUPON = '/coupon/membership/generate',
+ CLAIM_MEMBERSHIP_COUPON = '/coupon/membership/claim',
+ GET_VIP_QRCODE = '/user/getVipQrCode',
}
diff --git a/src/pages/give-vip/index.less b/src/pages/give-vip/index.less
index d38210c..ae6af81 100644
--- a/src/pages/give-vip/index.less
+++ b/src/pages/give-vip/index.less
@@ -1 +1,130 @@
-.give-vip {}
+@import '@/styles/variables.less';
+@import '@/styles/common.less';
+
+.give-vip {
+ padding: 40px 24px 200px 24px;
+ &__hint {
+ font-size: 28px;
+ line-height: 48px;
+ color: @blColorG2;
+ gap: 12px;
+ .flex-row();
+ justify-content: center;
+ }
+ &__icon {
+ width: 65px;
+ height: 65px;
+ }
+ &__title {
+ margin-top: 24px;
+ font-weight: 500;
+ font-size: 40px;
+ line-height: 48px;
+ color: @blColor;
+ text-align: center;
+ flex: 0 1 auto;
+ gap: 12px;
+ .flex-row();
+ justify-content: center;
+ .highlight {
+ margin-left: -12px;
+ display: inline-block;
+ color: @blHighlightColor;
+ }
+ }
+ &__bg {
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ z-index: -1;
+ }
+ &__info {
+ &-block {
+ margin-top: 48px;
+ }
+ &-title {
+ font-weight: 500;
+ font-size: 32px;
+ line-height: 32px;
+ color: #1d2129;
+ margin-bottom: 24px;
+ }
+ &-card {
+ box-sizing: border-box;
+ background: #ffffff;
+ border-radius: 24px;
+ padding: 32px;
+ }
+ &-body {
+ font-weight: 400;
+ font-size: 28px;
+ line-height: 40px;
+ color: #333333;
+ margin-bottom: 32px;
+ }
+ &-img {
+ width: 100%;
+ height: 614px;
+ }
+ }
+ &__footer {
+ position: fixed;
+ bottom: 0;
+ width: 100%;
+ padding: 12px 32px;
+ box-shadow: 0px -4px 20px 0px #00000014;
+ box-sizing: border-box;
+ background: #ffffff;
+ }
+
+ &__footer-body {
+ .flex-row();
+ justify-content: center;
+ }
+ &__button {
+ .button(@height: 88px; @fontSize: 32px; @fontWeight: 500; @borderRadius: 44px;);
+ width: 400px;
+ }
+ &__coupon {
+ &-info {
+ position: relative;
+ margin-top: 32px;
+ padding: 24px;
+ box-sizing: border-box;
+ border-radius: 24px;
+
+ .flex-column();
+ justify-content: center;
+ }
+
+ &-title {
+ font-weight: 500;
+ font-size: 32px;
+ line-height: 48px;
+ color: @blHighlightColor;
+ margin-bottom: 8px;
+ }
+ &-intro {
+ font-size: 28px;
+ line-height: 40px;
+ margin-bottom: 12px;
+ color: @blColor;
+ gap: 4px;
+ .flex-row();
+ .highlight {
+ font-weight: 600;
+ font-size: 32px;
+ line-height: 56px;
+ color: @blHighlightColor;
+ }
+ }
+ &-valid {
+ font-size: 28px;
+ line-height: 40px;
+
+ color: @blColorG2;
+ }
+ }
+}
diff --git a/src/pages/give-vip/index.tsx b/src/pages/give-vip/index.tsx
index 0febdb8..2d62e47 100644
--- a/src/pages/give-vip/index.tsx
+++ b/src/pages/give-vip/index.tsx
@@ -1,12 +1,103 @@
-import { Button } from '@taroify/core';
+import { Image, Button } from '@tarojs/components';
+import { useLoad } from '@tarojs/taro';
+import { Fragment, useCallback, useState } from 'react';
+
+import SafeBottomPadding from '@/components/safe-bottom-padding';
+import { PageUrl } from '@/constants/app';
import { logWithPrefix } from '@/utils/common';
-
+import { claimMembershipCoupon, getCouponCodeFromQuery } from '@/utils/coupon';
+import { getPageQuery, switchTab } from '@/utils/route';
+import { formatTime } from '@/utils/time';
import './index.less';
const PREFIX = 'give-vip';
const log = logWithPrefix(PREFIX);
-export default function GiveVip() {
- return