dapaijizhang3/pages/stats/session/session.wxml

204 lines
7.3 KiB
Plaintext
Raw Normal View History

2025-11-20 16:42:59 +08:00
<!--牌局统计页面-->
<view class="container">
<!-- 牌局信息卡片 -->
<view class="session-info card">
<view class="session-header">
<text class="session-name">{{session.session_name}}</text>
<text class="session-status status-{{session.status}}">
{{session.status === 'finished' ? '已结束' : '进行中'}}
</text>
</view>
<view class="session-meta">
<view class="meta-item">
<text class="meta-label">游戏类型</text>
<text class="meta-value">{{gameTypeText[session.game_type]}}</text>
</view>
<view class="meta-item">
<text class="meta-label">基础分值</text>
<text class="meta-value">{{session.base_score}}分</text>
</view>
<view class="meta-item">
<text class="meta-label">总局数</text>
<text class="meta-value">{{totalRounds}}局</text>
</view>
<view class="meta-item">
<text class="meta-label">游戏时长</text>
<text class="meta-value">{{duration}}</text>
</view>
</view>
</view>
<!-- 最终排名 -->
<view class="final-ranking card">
<view class="card-header">
<text class="card-title">最终排名</text>
<text class="total-chips">总分池: {{totalChips}}分</text>
</view>
<view class="ranking-list">
<view class="ranking-item {{index === 0 ? 'champion' : index === 1 ? 'runner-up' : index === 2 ? 'third' : ''}}"
wx:for="{{finalRanking}}" wx:key="player_id">
<view class="rank-badge">
<text class="rank-number">{{index + 1}}</text>
<text class="rank-label" wx:if="{{index === 0}}">冠军</text>
<text class="rank-label" wx:elif="{{index === 1}}">亚军</text>
<text class="rank-label" wx:elif="{{index === 2}}">季军</text>
</view>
<view class="player-info">
<image class="player-avatar" src="{{item.avatar_url || '/images/default-avatar.png'}}" />
<text class="player-name">{{item.nickname}}</text>
</view>
<view class="player-stats">
<view class="stat-item">
<text class="stat-value {{item.final_chips > 0 ? 'win' : item.final_chips < 0 ? 'lose' : ''}}">
{{item.final_chips > 0 ? '+' : ''}}{{item.final_chips}}
</text>
<text class="stat-label">总分</text>
</view>
<view class="stat-item">
<text class="stat-value">{{item.win_rate}}%</text>
<text class="stat-label">胜率</text>
</view>
<view class="stat-item">
<text class="stat-value">{{item.rounds_played}}</text>
<text class="stat-label">参与局数</text>
</view>
</view>
</view>
</view>
</view>
<!-- 战绩统计 -->
<view class="stats-summary card">
<view class="card-title">战绩统计</view>
<view class="stats-grid">
<view class="stat-card" wx:for="{{playerStats}}" wx:key="player_id">
<view class="stat-header">
<image class="player-avatar-small" src="{{item.avatar_url || '/images/default-avatar.png'}}" />
<text class="player-name">{{item.nickname}}</text>
</view>
<view class="stat-details">
<view class="stat-row">
<text class="stat-label">最高单局</text>
<text class="stat-value win">+{{item.max_win}}</text>
</view>
<view class="stat-row">
<text class="stat-label">最低单局</text>
<text class="stat-value lose">{{item.max_lose}}</text>
</view>
<view class="stat-row">
<text class="stat-label">平均得分</text>
<text class="stat-value">{{item.avg_score}}</text>
</view>
<view class="stat-row">
<text class="stat-label">连胜纪录</text>
<text class="stat-value">{{item.win_streak}}局</text>
</view>
</view>
</view>
</view>
</view>
<!-- 积分走势图 -->
<view class="chart-card card">
<view class="card-header">
<text class="card-title">积分走势</text>
<view class="legend">
<view class="legend-item" wx:for="{{chartLegend}}" wx:key="player_id">
<view class="legend-color" style="background-color: {{item.color}}"></view>
<text class="legend-name">{{item.nickname}}</text>
</view>
</view>
</view>
<scroll-view class="chart-container" scroll-x>
<canvas canvas-id="scoreChart" class="score-chart"
style="width: {{chartWidth}}px; height: 300px"></canvas>
</scroll-view>
</view>
<!-- 对战记录 -->
<view class="battle-records card">
<view class="card-header">
<text class="card-title">对战记录</text>
<text class="more-link" bindtap="viewAllRecords">查看全部</text>
</view>
<view class="records-timeline">
<view class="timeline-item" wx:for="{{recentRecords}}" wx:key="id">
<view class="timeline-marker">
<text class="round-number">{{item.round_number}}</text>
</view>
<view class="timeline-content">
<view class="record-time">{{item.timeText}}</view>
<view class="record-results">
<view class="result-item {{score.chips_change > 0 ? 'winner' : score.chips_change < 0 ? 'loser' : ''}}"
wx:for="{{item.playerScores}}" wx:for-item="score" wx:key="player_id">
<text class="player-name">{{score.nickname}}</text>
<text class="score-change">
{{score.chips_change > 0 ? '+' : ''}}{{score.chips_change}}
</text>
</view>
</view>
</view>
</view>
</view>
</view>
<!-- 数据分析 -->
<view class="analysis card">
<view class="card-title">数据分析</view>
<view class="analysis-content">
<view class="analysis-item">
<text class="analysis-label">最激烈对局</text>
<text class="analysis-value">第{{mostIntenseRound}}局 ({{mostIntenseScore}}分)</text>
</view>
<view class="analysis-item">
<text class="analysis-label">平均每局分数</text>
<text class="analysis-value">{{avgRoundScore}}分</text>
</view>
<view class="analysis-item">
<text class="analysis-label">最长连胜</text>
<text class="analysis-value">{{longestStreak.player}} ({{longestStreak.count}}局)</text>
</view>
<view class="analysis-item">
<text class="analysis-label">逆袭王</text>
<text class="analysis-value">{{comebackKing.player}} ({{comebackKing.points}}分逆转)</text>
</view>
</view>
</view>
<!-- 底部操作 -->
<view class="bottom-actions">
<button class="btn-secondary" bindtap="exportData">导出数据</button>
<button class="btn-primary" bindtap="shareStats">分享战绩</button>
</view>
</view>
<!-- 分享海报弹窗 -->
<view class="share-modal" wx:if="{{showSharePoster}}">
<view class="modal-mask" bindtap="closeSharePoster"></view>
<view class="modal-content">
<canvas canvas-id="sharePoster" class="share-poster"
style="width: 375px; height: 600px"></canvas>
<view class="share-actions">
<button class="btn-secondary" bindtap="savePoster">保存图片</button>
<button class="btn-primary" open-type="share">分享给好友</button>
</view>
<text class="close-btn" bindtap="closeSharePoster">×</text>
</view>
</view>