Files
xingque/pages/fighter-rank/fighter-rank.wxml
XingQue 64db9f52ae feat: 排行榜奖励展示、俱乐部分榜切换与手动领取
- 集团总榜/本俱乐部榜切换,奖金仅在本俱乐部榜行内展示
- 待领取底栏与规则说明,对接 phbjlxx/phbjllq/phbjlphb

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-01 17:40:57 +08:00

163 lines
7.8 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<view class="rank-page">
<image class="page-bg" src="{{imgUrls.pageBg}}" mode="aspectFill" />
<view class="top-bar">
<view class="top-row">
<text class="page-title">{{roleMeta.title}}</text>
<view class="refresh-wrap" bindtap="onRefreshTap">
<image class="refresh-ico" src="{{imgUrls.refreshIcon}}" mode="aspectFit" />
</view>
</view>
<scroll-view scroll-x class="role-scroll" enhanced show-scrollbar="{{false}}">
<view class="role-line">
<view
wx:for="{{roleList}}" wx:key="key"
class="role-chip {{currentRole === item.key ? 'on' : ''}}"
data-role="{{item.key}}" bindtap="onRoleTap"
>{{item.label}}</view>
</view>
</scroll-view>
<view class="date-grid">
<view
wx:for="{{dateList}}" wx:key="key"
class="date-chip {{currentDate === item.key ? 'on' : ''}}"
data-date="{{item.key}}" bindtap="onDateTap"
>{{item.label}}</view>
</view>
<text class="sort-tip">{{currentDate}} · 按{{sortLabel}} · TOP50</text>
<view class="scope-row">
<view class="scope-chip {{fanwei === 'jituan' ? 'on' : ''}}" data-fanwei="jituan" bindtap="onScopeTap">集团总榜</view>
<view class="scope-chip {{fanwei === 'club' ? 'on' : ''}}" data-fanwei="club" bindtap="onScopeTap">本俱乐部榜</view>
</view>
<view class="reward-banner" wx:if="{{rewardInfo && rewardInfo.scheme_enabled}}" bindtap="onShowRules">
<view class="reward-banner-main">
<text class="reward-tag">🏆 {{rewardInfo.title || '排行榜奖励'}}</text>
<text class="reward-club">俱乐部 {{rewardInfo.club_id || myClubId}}</text>
<text class="reward-status" wx:if="{{rewardInfo.period_status === 'open'}}">进行中 · 结束后可领</text>
<text class="reward-status pending" wx:elif="{{rewardInfo.my_claim}}">待领取 ¥{{rewardInfo.my_claim.amount}}</text>
<text class="reward-status claimed" wx:elif="{{rewardInfo.my_claimed}}">已领取 ¥{{rewardInfo.my_claimed.amount}}</text>
</view>
<text class="reward-link">规则 </text>
</view>
</view>
<view class="state-wrap" wx:if="{{isLoading}}">
<view class="loader"></view>
<text>加载中</text>
</view>
<view class="state-wrap" wx:elif="{{isEmpty}}">
<image class="state-img" src="{{imgUrls.emptyIcon}}" mode="aspectFit" />
<text>暂无排行数据</text>
</view>
<scroll-view wx:else scroll-y class="body-scroll" enhanced show-scrollbar="{{false}}">
<!-- 前三名 · 纯 CSS 领奖台 -->
<view class="podium-panel" wx:if="{{topThree.length > 0}}">
<view class="podium-cols">
<!-- 榜二 -->
<view class="p-col p-second" wx:if="{{topThree[1]}}">
<view class="p-badge badge-silver"><text>2</text></view>
<view class="p-avatar-wrap wrap-silver">
<image class="p-avatar" src="{{topThree[1].avatar || defaultAvatar}}" mode="aspectFill" data-zone="top" data-index="1" binderror="onAvatarError" />
</view>
<text class="p-name">{{topThree[1].nicheng}}</text>
<text class="p-uid">ID {{topThree[1].uid}}</text>
<view class="p-amount">
<text class="p-money">{{topThree[1].mainPrefix}}{{topThree[1].mainValue}}</text>
<text class="p-label">{{topThree[1].mainLabel}}</text>
<text class="p-reward" wx:if="{{topThree[1].rewardAmount > 0}}">奖 ¥{{topThree[1].rewardAmount}}</text>
</view>
<view class="p-metrics">
<text class="p-metric" wx:for="{{topThree[1].metrics}}" wx:key="label" wx:for-item="m">{{m.label}} {{m.value}}</text>
</view>
<view class="p-pedestal pedestal-silver"></view>
</view>
<!-- 榜一 -->
<view class="p-col p-first" wx:if="{{topThree[0]}}">
<view class="p-badge badge-first"><text>1</text></view>
<view class="p-avatar-wrap wrap-first">
<image class="p-avatar p-avatar-lg" src="{{topThree[0].avatar || defaultAvatar}}" mode="aspectFill" data-zone="top" data-index="0" binderror="onAvatarError" />
</view>
<text class="p-name p-name-first">{{topThree[0].nicheng}}</text>
<text class="p-uid">ID {{topThree[0].uid}}</text>
<view class="p-amount">
<text class="p-money p-money-first">{{topThree[0].mainPrefix}}{{topThree[0].mainValue}}</text>
<text class="p-label">{{topThree[0].mainLabel}}</text>
<text class="p-reward" wx:if="{{topThree[0].rewardAmount > 0}}">奖 ¥{{topThree[0].rewardAmount}}</text>
</view>
<view class="p-metrics">
<text class="p-metric" wx:for="{{topThree[0].metrics}}" wx:key="label" wx:for-item="m">{{m.label}} {{m.value}}</text>
</view>
<view class="p-pedestal pedestal-first"></view>
</view>
<!-- 榜三 -->
<view class="p-col p-third" wx:if="{{topThree[2]}}">
<view class="p-badge badge-bronze"><text>3</text></view>
<view class="p-avatar-wrap wrap-bronze">
<image class="p-avatar" src="{{topThree[2].avatar || defaultAvatar}}" mode="aspectFill" data-zone="top" data-index="2" binderror="onAvatarError" />
</view>
<text class="p-name">{{topThree[2].nicheng}}</text>
<text class="p-uid">ID {{topThree[2].uid}}</text>
<view class="p-amount">
<text class="p-money">{{topThree[2].mainPrefix}}{{topThree[2].mainValue}}</text>
<text class="p-label">{{topThree[2].mainLabel}}</text>
<text class="p-reward" wx:if="{{topThree[2].rewardAmount > 0}}">奖 ¥{{topThree[2].rewardAmount}}</text>
</view>
<view class="p-metrics">
<text class="p-metric" wx:for="{{topThree[2].metrics}}" wx:key="label" wx:for-item="m">{{m.label}} {{m.value}}</text>
</view>
<view class="p-pedestal pedestal-bronze"></view>
</view>
</view>
</view>
<!-- 4-50 名 -->
<view class="list-wrap" wx:if="{{restList.length > 0}}">
<view class="list-title-row">
<text class="list-title">完整榜单</text>
<text class="list-range">第 4 - {{rankList.length}} 名</text>
</view>
<view class="list-card" wx:for="{{restList}}" wx:key="mingci">
<image class="list-card-bg" src="{{imgUrls.cardBg}}" mode="aspectFill" />
<view class="list-card-body">
<view class="lc-rank"><text>{{item.mingci}}</text></view>
<image class="lc-avatar" src="{{item.avatar || defaultAvatar}}" mode="aspectFill" data-zone="rest" data-index="{{index}}" binderror="onAvatarError" />
<view class="lc-info">
<text class="lc-name">{{item.nicheng}}</text>
<text class="lc-uid">ID {{item.uid}}<text wx:if="{{item.clubName && fanwei === 'jituan'}}"> · {{item.clubName}}</text></text>
<view class="lc-tags">
<text class="lc-tag" wx:for="{{item.metrics}}" wx:key="label" wx:for-item="m">{{m.label}} {{m.value}}</text>
</view>
</view>
<view class="lc-score">
<text class="lc-money">{{item.mainPrefix}}{{item.mainValue}}</text>
<text class="lc-label">{{item.mainLabel}}</text>
<text class="lc-reward" wx:if="{{item.rewardAmount > 0}}">奖¥{{item.rewardAmount}}</text>
</view>
</view>
</view>
</view>
<view class="bottom-gap"></view>
</scroll-view>
<view class="claim-bar" wx:if="{{showClaimBar && rewardInfo.my_claim}}">
<view class="claim-text">
<text class="claim-title">🎉 第{{rewardInfo.my_claim.mingci}}名 · 待领取</text>
<text class="claim-amount">¥{{rewardInfo.my_claim.amount}}</text>
</view>
<button class="claim-btn" loading="{{claimLoading}}" bindtap="onClaimTap">立即领取</button>
</view>
</view>
<global-notification id="global-notification" />