Просмотр исходного кода

feat: 我的头部信息块增加邀请码及vip等级

liangan 2 дней назад
Родитель
Сommit
8362e95f89
4 измененных файлов с 43 добавлено и 2 удалено
  1. 2 0
      src/locale/bn.json
  2. 2 0
      src/locale/en.json
  3. 2 0
      src/locale/zh-Hans.json
  4. 37 2
      src/pages/mine/mine.vue

+ 2 - 0
src/locale/bn.json

@@ -142,6 +142,8 @@
   "mine.pages.share.qrCode": "কিউআর কোড",
   "mine.pages.share.description": "আপনার বন্ধুদের সাথে আপনার কিউআর কোড শেয়ার করুন, তারা তাদের ক্যামেরা দিয়ে স্ক্যান করে আপনার ডাউনলাইন হিসাবে নিবন্ধন করতে পারবে।",
   "mine.pages.share.copySuccess": "ক্লিপবোর্ডে অনুলিপি করা হয়েছে",
+  "mine.header.referrerCode": "রেফারার কোড",
+  "mine.header.copy": "কপি",
   "mine.pages.share.shareTo": "{0} এ শেয়ার করুন",
   "share.appNotInstalled": "শেয়ারিং সক্ষম করতে অ্যাপ ডাউনলোড করুন",
   "share.productShareText": "[BandhuBuy] {url} {productName}\nএখনই BandhuBuy থেকে কিনুন!",

+ 2 - 0
src/locale/en.json

@@ -169,6 +169,8 @@
   "mine.pages.share.qrCode": "QR Code",
   "mine.pages.share.description": "Share your QR code with your friends, they can scan it with their camera to register as your downline.",
   "mine.pages.share.copySuccess": "Copied to clipboard",
+  "mine.header.referrerCode": "Referrer Code",
+  "mine.header.copy": "Copy",
   "mine.pages.share.shareTo": "Share to {0}",
   "share.appNotInstalled": "Please download the APP to enable sharing",
   "share.productShareText": "[BandhuBuy] {url} {productName}\nGet it on BandhuBuy now!",

+ 2 - 0
src/locale/zh-Hans.json

@@ -142,6 +142,8 @@
   "mine.pages.share.qrCode": "二维码",
   "mine.pages.share.description": "与您的朋友分享二维码,他们可以用相机扫描以注册成为您的下线。",
   "mine.pages.share.copySuccess": "已复制到剪贴板",
+  "mine.header.referrerCode": "邀请码",
+  "mine.header.copy": "复制",
   "mine.pages.share.shareTo": "分享到{0}",
   "share.appNotInstalled": "请下载APP以启用分享功能",
   "share.productShareText": "[BandhuBuy] {url} {productName}\n快来 BandhuBuy 购买吧!",

+ 37 - 2
src/pages/mine/mine.vue

@@ -22,6 +22,7 @@ import { useUserStore } from '@/store/user'
 import { formatNumber } from '@/utils'
 import { toPage } from '@/utils/page'
 import { handleWhatsApp } from '@/utils/social'
+import { toast } from '@/utils/toast'
 
 defineOptions({
   name: 'Mine', // 我的
@@ -45,6 +46,18 @@ const isLoggedIn = computed(() => !!userStore.token)
 // 获取用户信息
 const userInfo = computed(() => userStore.userInfo)
 
+function copyReferrerCode() {
+  const code = userInfo.value?.invitedCode
+  if (!code)
+    return
+  uni.setClipboardData({
+    data: code,
+    success: () => {
+      toast.success(t('mine.pages.share.copySuccess'))
+    },
+  })
+}
+
 const groupList = computed(() => {
   // 依赖 locale,确保切换语言后这里会重新计算
   const _locale = i18n.global.locale
@@ -152,8 +165,30 @@ onShow(() => {
           :src="isLoggedIn ? userInfo?.headPic : '/static/images/default-avatar.png'"
         />
         <!-- 已登录 -->
-        <view v-if="isLoggedIn" class="ml-24rpx text-32rpx font-bold">
-          {{ userInfo?.name || userInfo?.username || 'User' }}
+        <view v-if="isLoggedIn" class="ml-24rpx flex flex-col">
+          <view class="flex items-center">
+            <view class="text-32rpx font-bold">
+              {{ userInfo?.name || userInfo?.username || 'User' }}
+            </view>
+            <view
+              v-if="userInfo?.level !== undefined && userInfo?.level !== null"
+              class="ml-12rpx rounded-full bg-#DFBA86 px-16rpx py-2rpx text-24rpx text-white font-bold"
+            >
+              V{{ userInfo?.level }}
+            </view>
+          </view>
+          <view class="mt-12rpx flex items-center text-24rpx">
+            <text>{{ $t('mine.header.referrerCode') }}:</text>
+            <text class="ml-12rpx font-bold">
+              {{ userInfo?.invitedCode || '-' }}
+            </text>
+            <text class="mx-12rpx">
+              |
+            </text>
+            <text class="font-bold" @click.stop="copyReferrerCode">
+              {{ $t('mine.header.copy') }}
+            </text>
+          </view>
         </view>
         <!-- 未登录 -->
         <view v-else class="ml-24rpx flex items-center">