f-4-30
This commit is contained in:
@@ -45,16 +45,8 @@ function getAgentLevelLabel(value) {
|
||||
}
|
||||
|
||||
// 获取收益列表
|
||||
function mergeUniqueById(oldList, newList) {
|
||||
const map = new Map()
|
||||
const resolveKey = (item, index) => String(item?.id ?? item?.order_id ?? `${item?.create_time || ''}_${item?.type || ''}_${index}`)
|
||||
oldList.forEach((item, index) => {
|
||||
map.set(resolveKey(item, index), item)
|
||||
})
|
||||
newList.forEach((item, index) => {
|
||||
map.set(resolveKey(item, oldList.length + index), item)
|
||||
})
|
||||
return Array.from(map.values())
|
||||
function appendList(oldList, newList) {
|
||||
return oldList.concat(newList)
|
||||
}
|
||||
|
||||
async function fetchRewardDetails(reset = false) {
|
||||
@@ -177,7 +169,7 @@ async function fetchRewardDetails(reset = false) {
|
||||
total.value = data.value.data.total || 0
|
||||
// 处理列表数据
|
||||
const list = data.value.data.list || []
|
||||
rewardDetails.value = reset ? list : mergeUniqueById(rewardDetails.value, list)
|
||||
rewardDetails.value = reset ? list : appendList(rewardDetails.value, list)
|
||||
const isLastPage = list.length < pageSize || rewardDetails.value.length >= total.value
|
||||
hasMore.value = !isLastPage
|
||||
loadMoreState.value = isLastPage ? 'finished' : 'loading'
|
||||
@@ -334,12 +326,8 @@ function formatNumber(num) {
|
||||
贡献统计
|
||||
</view>
|
||||
<view class="grid grid-cols-2 gap-3">
|
||||
<view
|
||||
v-for="item in statistics"
|
||||
:key="item.type"
|
||||
class="flex items-center rounded-lg p-2"
|
||||
:class="getRewardTypeClass(item.type).split(' ')[0]"
|
||||
>
|
||||
<view v-for="item in statistics" :key="item.type" class="flex items-center rounded-lg p-2"
|
||||
:class="getRewardTypeClass(item.type).split(' ')[0]">
|
||||
<image :src="getRewardTypeIcon(item.type)" class="mr-2 h-5 w-5 flex-shrink-0" />
|
||||
<view class="flex-1">
|
||||
<view class="text-sm font-medium" :class="getRewardTypeClass(item.type).split(' ')[1]">
|
||||
@@ -359,20 +347,18 @@ function formatNumber(num) {
|
||||
</view>
|
||||
<view class="mb-4 rounded-xl bg-white p-4 shadow-sm">
|
||||
<!-- 贡献记录列表 -->
|
||||
<view class="text-base text-gray-800 font-medium">
|
||||
<view class="text-base text-gray-800 font-medium mb-3">
|
||||
贡献记录
|
||||
</view>
|
||||
<view class="detail-scroll p-4">
|
||||
<view v-if="rewardDetails.length === 0" class="py-8 text-center text-gray-500">
|
||||
暂无贡献记录
|
||||
</view>
|
||||
<view v-for="item in rewardDetails" v-else :key="item.id" class="reward-item">
|
||||
<view class="detail-scroll">
|
||||
<EmptyState v-if="!loading && rewardDetails.length === 0" text="暂无贡献记录" />
|
||||
<view v-for="(item, index) in rewardDetails" v-else :key="index" class="reward-item">
|
||||
<view class="mb-3 border-b border-gray-200 pb-3">
|
||||
<view class="flex items-center justify-between">
|
||||
<view class="flex items-center space-x-3">
|
||||
<image :src="getRewardTypeIcon(item.type)" class="h-5 w-5 flex-shrink-0" />
|
||||
<image :src="getRewardTypeIcon(item.type)" class="h-4 w-4 flex-shrink-0" />
|
||||
<view>
|
||||
<view class="text-gray-800 font-medium">
|
||||
<view class="text-gray-800 font-sm">
|
||||
{{ getRewardTypeDescription(item.type) }}
|
||||
</view>
|
||||
<view class="text-xs text-gray-500">
|
||||
@@ -392,7 +378,7 @@ function formatNumber(num) {
|
||||
加载中...
|
||||
</view>
|
||||
</view>
|
||||
<wd-loadmore :state="loadMoreState" @reload="fetchRewardDetails" />
|
||||
<wd-loadmore v-if="rewardDetails.length > 0" :state="loadMoreState" @reload="fetchRewardDetails" />
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
Reference in New Issue
Block a user