ソースを参照

优化邀请百姓的按钮显示,新增查询状态

fly 6 日 前
コミット
a1e2c50e5d
3 ファイル変更42 行追加14 行削除
  1. 6 0
      src/api/profile.js
  2. 2 2
      src/components/TabBar.vue
  3. 34 12
      src/views/Dynamic.vue

+ 6 - 0
src/api/profile.js

@@ -46,4 +46,10 @@ export const getMinerInfo = (data) => request({
   method: 'post',
   data,
   loading: true
+});
+// 获取红旗资产奖励领取状态列表
+export const getShareccbList = () => request({
+  url: 'index/get_shareccb_list',
+  method: 'get',
+  loading: true
 });

+ 2 - 2
src/components/TabBar.vue

@@ -37,8 +37,8 @@ export default {
           iconActive: 'hang1.png'
         },
         {
-          // path: '/dynamic', //邀请百姓
-          path: '/China', // 红旗中国
+          path: '/dynamic', //邀请百姓
+          // path: '/China', // 红旗中国
           // path: '/Medical', // 红旗医疗
           title: '邀请百姓',
           icon: 'gang0.png',

+ 34 - 12
src/views/Dynamic.vue

@@ -9,7 +9,14 @@
           <div class="invite-title">{{ item.title }}</div>
           <div class="invite-reward">{{ item.reward }}</div>
         </div>
-        <button class="btn" @click="receiveReward(item.renshu)">领取</button>
+        <button
+          class="btn"
+          :class="{ received: item.received }"
+          :disabled="item.received"
+          @click="receiveReward(item.renshu, item.received)"
+        >
+          {{ item.received ? '已领取' : '领取' }}
+        </button>
       </div>
     </div>
     <!-- 实名认证提示弹窗 -->
@@ -34,7 +41,7 @@
 </template>
 
 <script>
-import { getShareccb } from '@/api/profile';
+import { getShareccb, getShareccbList } from '@/api/profile';
 import { getUserInfo } from '@/api/home';
 
 export default {
@@ -42,12 +49,12 @@ export default {
   data() {
     return {
       rewards: [
-        { renshu: 5, title: '邀请5人实名认证', reward: '奖励60000元红旗资产' },
-        { renshu: 10, title: '邀请10人实名认证', reward: '奖励150000元红旗资产' },
-        { renshu: 20, title: '邀请20人实名认证', reward: '奖励300000元红旗资产' },
-        { renshu: 50, title: '邀请50人实名认证', reward: '奖励800000元红旗资产' },
-        { renshu: 100, title: '邀请100人实名认证', reward: '奖励1800000元红旗资产' },
-        { renshu: 150, title: '邀请150人实名认证', reward: '获得国家神秘奖励' }
+        { renshu: 5, title: '邀请5人实名认证', reward: '奖励60000元红旗资产', received: false },
+        { renshu: 10, title: '邀请10人实名认证', reward: '奖励150000元红旗资产', received: false },
+        { renshu: 20, title: '邀请20人实名认证', reward: '奖励300000元红旗资产', received: false },
+        { renshu: 50, title: '邀请50人实名认证', reward: '奖励800000元红旗资产', received: false },
+        { renshu: 100, title: '邀请100人实名认证', reward: '奖励1800000元红旗资产', received: false },
+        { renshu: 150, title: '邀请150人实名认证', reward: '获得国家神秘奖励', received: false }
       ],
       userInfo: {},
       showAuthDialog: false
@@ -62,16 +69,30 @@ export default {
         console.error('获取用户信息失败:', error);
       }
     },
-    async receiveReward(renshu) {
-      // 检查实名认证状态
+    async getShareccbList() {
+      try {
+        const res = await getShareccbList();
+        if (res.code === 1 && Array.isArray(res.data)) {
+          // 根据接口返回的received状态,更新rewards
+          this.rewards = this.rewards.map(item => {
+            const found = res.data.find(d => d.renshu === item.renshu);
+            return found ? { ...item, received: found.received } : item;
+          });
+        }
+      } catch (error) {
+        console.error('获取奖励列表失败:', error);
+      }
+    },
+    async receiveReward(renshu, received) {
+      if (received) return;
       if (this.userInfo.if_real === 0) {
         this.showAuthDialog = true;
         return;
       }
-
       try {
         const res = await getShareccb(renshu);
-        alert(res.data.msg);
+        alert(res.msg);
+        this.getShareccbList();
       } catch (e) {
         // 接口异常时不弹窗
       }
@@ -82,6 +103,7 @@ export default {
   },
   created() {
     this.getUserInfo();
+    this.getShareccbList();
   }
 }
 </script>