- 在小程序天梯排名页添加“定位我”按钮,点击可滚动到当前用户所在位置 - 新增获取用户排名接口 `/ladder/my-rank` 用于定位计算 - 调整挑战赛权重从 1.5 降至 1.0,与日常畅打保持一致 - 新增数据库脚本 `setChallengeMatchWeightTo1.js` 用于更新历史数据 - 在管理员界面创建天梯用户时,根据所选等级自动填充默认战力值 - 修复管理员更新比赛时挑战赛权重强制设置为 1.0 的问题 - 新增天梯汇总大屏页面及相关路由 - 添加大屏比赛列表接口 `/match/display-list` 用于展示进行中和近期比赛 - 优化用户详情页的胜负场和胜率显示逻辑 - 修复小程序用户注册时的性别选择逻辑
86 lines
3.7 KiB
Plaintext
86 lines
3.7 KiB
Plaintext
<!-- 天梯排名页面 - 浅色高级感设计 -->
|
||
<view class="page-container">
|
||
<!-- 顶部装饰背景 -->
|
||
<view class="hero-section">
|
||
<view class="hero-pattern"></view>
|
||
<view class="hero-pattern-2"></view>
|
||
<!-- 门店信息 -->
|
||
<view class="store-header">
|
||
<view class="store-info">
|
||
<view class="store-dot"></view>
|
||
<text class="store-name">{{currentStore.storeName || '请选择门店'}}</text>
|
||
</view>
|
||
<view class="change-store-btn" bindtap="selectStore">
|
||
<text class="change-store-text">切换门店</text>
|
||
<text class="change-store-arrow">›</text>
|
||
</view>
|
||
</view>
|
||
<!-- 页面标题 -->
|
||
<view class="page-header animate-fadeInUp" style="animation-delay: 0.05s">
|
||
<text class="page-title">天梯排名</text>
|
||
<text class="page-subtitle">挑战自我,超越巅峰</text>
|
||
</view>
|
||
</view>
|
||
<!-- 主要内容区域 -->
|
||
<view class="main-content">
|
||
<!-- 性别筛选标签 - 吸附在顶部 -->
|
||
<view class="filter-bar-wrapper">
|
||
<view class="filter-bar animate-fadeInUp" style="animation-delay: 0.1s">
|
||
<view class="filter-items">
|
||
<view class="filter-item {{gender === '' ? 'active' : ''}}" bindtap="setGender" data-gender="">
|
||
全部
|
||
</view>
|
||
<view class="filter-item {{gender === '1' ? 'active' : ''}}" bindtap="setGender" data-gender="1">
|
||
男子
|
||
</view>
|
||
<view class="filter-item {{gender === '2' ? 'active' : ''}}" bindtap="setGender" data-gender="2">
|
||
女子
|
||
</view>
|
||
</view>
|
||
<view class="locate-btn {{locating ? 'disabled' : ''}}" bindtap="locateMe">
|
||
{{locating ? '定位中' : '定位我'}}
|
||
</view>
|
||
</view>
|
||
</view>
|
||
<!-- 排名列表 -->
|
||
<view class="ranking-list">
|
||
<block wx:if="{{list.length > 0}}">
|
||
<view id="player-{{item.id}}" class="ranking-item stagger-item {{index < 3 ? 'top-rank' : ''}} {{item.id === myLadderUserId ? 'is-me' : ''}} animate-fadeInUp" wx:for="{{list}}" wx:key="id" bindtap="viewPlayer" data-id="{{item.id}}" data-player="{{item}}">
|
||
<!-- 排名徽章 -->
|
||
<view class="rank-badge {{item.rank === 1 ? 'top1' : item.rank === 2 ? 'top2' : item.rank === 3 ? 'top3' : 'normal'}}">
|
||
<text>{{item.rank}}</text>
|
||
</view>
|
||
<!-- 选手头像 -->
|
||
<image class="player-avatar" src="{{item.avatar || '/images/avatar-default.svg'}}" mode="aspectFill"></image>
|
||
<!-- 选手信息 -->
|
||
<view class="player-info">
|
||
<text class="player-name">{{item.realName}}</text>
|
||
<view class="player-meta">
|
||
<text class="player-level lv{{item.level}}">Lv{{item.level}}</text>
|
||
<text class="player-stats">胜率 {{item.winRate}}%</text>
|
||
</view>
|
||
</view>
|
||
<!-- 战力值 -->
|
||
<view class="player-power">
|
||
<text class="power-value">{{item.powerScore}}</text>
|
||
<text class="power-label">战力</text>
|
||
</view>
|
||
</view>
|
||
</block>
|
||
<!-- 空状态 -->
|
||
<view wx:elif="{{!loading}}" class="empty-state">
|
||
<image class="empty-icon" src="/images/empty-ranking.svg" mode="aspectFit"></image>
|
||
<text class="empty-title">暂无排名数据</text>
|
||
<text class="empty-desc">每月完成3场比赛即可上榜</text>
|
||
</view>
|
||
<!-- 加载更多 -->
|
||
<view wx:if="{{loading}}" class="loading-state">
|
||
<text>加载中...</text>
|
||
</view>
|
||
<!-- 到底提示 -->
|
||
<view wx:if="{{list.length > 0 && !loading}}" class="load-more">
|
||
<text>— 已显示全部选手 —</text>
|
||
</view>
|
||
</view>
|
||
</view>
|
||
</view> |