Ver Fonte

[edit][领取人列表]

zhangwei há 2 anos atrás
pai
commit
0e3f3dedae

+ 11 - 1
src/http/treasure.js

@@ -91,4 +91,14 @@ export function bindPostContent(params) {
         method: "post",
         data: params,
     });
-}
+}
+
+export function receiveListV2(params) {
+    return service({
+        url: `/post/treasure/receive/list/v2`,
+        method: "post",
+        data: params,
+    });
+}
+
+

+ 38 - 60
src/view/iframe/treasure-hunt/all-receive-list.vue

@@ -2,9 +2,11 @@
     <div class="invite-list">
         <div class="head">
             <img height="20" :src="require('@/assets/svg/icon-back-2.svg')" @click="clickBack" />
-            <span>{{ state.inviteCount }} People Get Money</span>
+            <span>{{ state.detail.receiveCountWithAmount }} People Get Money</span>
         </div>
         <div class="content">
+            <img v-show="state.receive.loading && state.receive.list.length == 0"
+                :src="require('@/assets/svg/icon-loading-gray.svg')" alt="" class="loading" />
             <div class="error" v-if="state.receive.list.length == 0 && state.receive.end">
                 Invite people to hunt treasure with you!
             </div>
@@ -26,7 +28,7 @@
     </div>
 </template>
 <script setup>
-import { inviteList, inviteListRefresh } from '@/http/treasure'
+import { receiveListV2 } from '@/http/treasure'
 import { inject, onMounted } from 'vue'
 import { getBeforeTimeFormat } from "@/uilts/help"
 import Report from "@/log-center/log"
@@ -41,7 +43,7 @@ let page_size = 10
 let list_end = false
 
 const clickBack = () => {
-    state.page = '邀请页'
+    state.page_show = ''
 }
 
 onMounted(() => {
@@ -58,74 +60,29 @@ function handleScroll(e) {
     }
     e = e.target
     if ((e.clientHeight + e.scrollTop) / e.scrollHeight > .8) {
+        if (page_num * page_size == state.receive.list.length) {
+            page_num++
+        }
         list_end = true
-        inviteListScroll()
+        list()
     }
 }
 
 const list = () => {
-    let last_timestamp = 0
-    if (state.invited_list.length > 0) {
-        last_timestamp = state.invited_list[0].timestamp
-    }
-
-    inviteListRefresh({
+    state.receive.loading = true
+    receiveListV2({
         params: {
             postId: state.postId,
-            lastTimestamp: last_timestamp,
+            pageNum: page_num,
+            pageSize: page_size,
+            sortType: 0
         }
     }).then((res) => {
         if (res.code == 0) {
-            handleCommon(res.data)
+            state.receive.loading = false
+            state.receive.list = state.receive.list.concat(res.data)
             state.receive.end = true
-        }
-    })
-}
-
-
-
-const handleCommon = (data) => {
-    state.inviteCount = data.inviteCount
-    if (state.inviteCount > 0) {
-        state.tabs[1].txt = `invited(${state.inviteCount})`
-    }
-    if (data.inviteUsers.length > 0) {
-        data.inviteUsers.forEach(item => {
-            if (state.invited_list.filter((item2) => { return item2.userInfo.uid == item.userInfo.uid }).length == 0) {
-                state.invited_list.push(item)
-            }
-        })
-        state.invited_list = state.invited_list.sort((a, b) => {
-            return b.timestamp - a.timestamp
-        })
-
-        list_end = false
-    } else {
-        list_end = false
-    }
-}
-
-// 滚动
-let inviteListScroll = () => {
-    // state.invited_list
-    let last_timestamp = 0
-    let len = state.invited_list.length
-    if (len > 0) {
-        last_timestamp = state.invited_list[len - 1].timestamp
-    }
-
-    inviteList({
-        params: {
-            inviteCode: state.invite_code,
-            postId: state.postId,
-            lastTimestamp: last_timestamp,
-            pageSize: page_size
-        }
-    }).then((res) => {
-        if (res.code == 0) {
-
-            handleCommon(res.data)
-
+            list_end = false
         }
     })
 }
@@ -239,4 +196,25 @@ let inviteListScroll = () => {
         }
     }
 }
+
+.loading {
+    width: 50px;
+    height: 50px;
+    position: fixed;
+    top: 50%;
+    left: 50%;
+    margin-left: -25px;
+    margin-top: -25px;
+    animation: rotation 1s linear infinite;
+}
+
+@keyframes rotation {
+    from {
+        -webkit-transform: rotate(0deg);
+    }
+
+    to {
+        -webkit-transform: rotate(360deg);
+    }
+}
 </style>

+ 1 - 1
src/view/iframe/treasure-hunt/components/boxs.vue

@@ -164,7 +164,7 @@ const btnStatus = () => {
             }
         }
         setLineFull(index, item.finishNeedInviteCount, item.successInviteCount)
-        // 三个箱子全部打开了
+        // 箱子全部打开了
         if (item.openStatus == 1) {
             open_num++
         }

+ 2 - 3
src/view/iframe/treasure-hunt/components/carousel.vue

@@ -1,11 +1,10 @@
 <template>
-
     <div class="area-carousel">
         <!-- left -->
-        <div class="area-left" @click="state.page = '总邀请者页'">
+        <div class="area-left" @click="state.page_show = '总邀请者页'">
             <div>
                 <img :src="require('@/assets/svg/icon-user1.svg')" alt="" />
-                <span>{{ state.inviteCount }}</span>
+                <span>{{ state.detail.receiveCountWithAmount }}</span>
             </div>
             <div>Get Money</div>
         </div>

+ 3 - 3
src/view/iframe/treasure-hunt/index.vue

@@ -2,7 +2,7 @@
     <v-cover v-if="state.page == '封面页'"></v-cover>
     <v-invite v-if="state.page == '邀请页'"></v-invite>
     <v-result v-if="state.page == '开奖页'"></v-result>
-    <all-receive-list v-if="state.page == '总邀请者页'"></all-receive-list>
+
     <open-box v-show="state.open_box.show"></open-box>
     <v-toast :show="state.toast.show" :txt="state.toast.txt" :has_icon="state.toast.has_icon"></v-toast>
     <div v-show="state.loading_redbag" class="redbag">
@@ -20,7 +20,7 @@ import { reSetBindTwtterId, reSetBindPostContent, reSetBindRepost } from '@/http
 import { getQueryString } from '@/uilts/help'
 import { getChromeStorage, sendChromeTabMessage } from '@/uilts/chromeExtension.js'
 import VToast from '@/view/iframe/treasure-hunt/components/toast.vue'
-import AllReceiveList from '@/view/iframe/treasure-hunt/all-receive-list.vue'
+
 import OpenBox from '@/view/iframe/treasure-hunt/components/open-box.vue'
 import Report from "@/log-center/log"
 
@@ -282,7 +282,7 @@ const handleStatus = (callback) => {
         }
         // 如果 夺宝参与状态 = 已参与夺宝
         else if (joinStatus == 1) {
-            if (state.page != '总邀请者页') {
+            if (state.page_show != '总邀请者页') {
                 state.page = '邀请页'
             }
         }

+ 16 - 13
src/view/iframe/treasure-hunt/invite.vue

@@ -1,24 +1,27 @@
 <template>
-    <!-- 邀请页 -->
-    <div class="area-process" v-show-log="state.log_invite_show">
-        <div class="area1">
-            <v-head :left-data="state.detail.postUserInfo || null" :rightData="state.detail.remainAmountUsdValue">
-            </v-head>
-            <v-carousel></v-carousel>
+    <all-receive-list v-if="state.page_show == '总邀请者页'"></all-receive-list>
+    <div v-show="state.page_show != '总邀请者页'">
+        <!-- 邀请页 -->
+        <div class="area-process" v-show-log="state.log_invite_show">
+            <div class="area1">
+                <v-head :left-data="state.detail.postUserInfo || null" :rightData="state.detail.remainAmountUsdValue">
+                </v-head>
+                <v-carousel></v-carousel>
+            </div>
+            <v-boxs style="margin-top: 30px;"></v-boxs>
+            <invite-list></invite-list>
         </div>
-        <v-boxs style="margin-top: 30px;"></v-boxs>
-        <invite-list></invite-list>
-    </div>
 
-    <div class="area-info">
-        <invite-friends></invite-friends>
-        <!-- -->
+        <div class="area-info">
+            <invite-friends></invite-friends>
+            <!-- -->
+        </div>
     </div>
     <v-dialog v-show="state.dialog.show"></v-dialog>
 </template>
 <script setup>
 import { ref, onMounted, watch, inject } from 'vue'
-
+import AllReceiveList from '@/view/iframe/treasure-hunt/all-receive-list.vue'
 import VHead from '@/view/iframe/treasure-hunt/components/head.vue'
 import InviteList from '@/view/iframe/treasure-hunt/components/invite-list.vue'
 import HoverTip from '@/view/iframe/treasure-hunt/components/hover-tip.vue'