dapaijizhang3/pages/game/play/play.wxml

183 lines
7.0 KiB
Plaintext
Raw Normal View History

2025-11-20 16:42:59 +08:00
<!--实时记账页面-->
<custom-navbar title="实时记账" />
<view class="container">
<!-- 牌局信息头部 -->
<view class="session-header card">
<view class="header-info">
<text class="session-name">{{session.session_name}}</text>
<text class="round-number">第 {{currentRound}} 局</text>
</view>
<view class="header-actions">
<button class="btn-text" bindtap="viewHistory">历史记录</button>
</view>
</view>
<!-- 快速记账区 -->
<view class="quick-entry card">
<view class="card-title">快速记账</view>
<!-- 赢家选择 -->
<view class="winner-section">
<text class="section-label">赢家</text>
<view class="player-select">
<view class="player-option {{item.selected ? 'selected' : ''}}"
wx:for="{{players}}" wx:key="id"
bindtap="toggleWinner" data-id="{{item.id}}">
<image class="player-avatar-small" src="{{item.avatar_url || '/images/default-avatar.png'}}" />
<text class="player-name">{{item.nickname}}</text>
<view class="check-mark" wx:if="{{item.selected}}">✓</view>
</view>
</view>
</view>
<!-- 输家选择 -->
<view class="loser-section">
<text class="section-label">输家</text>
<view class="player-select">
<view class="player-option {{item.losing ? 'losing' : ''}}"
wx:for="{{players}}" wx:key="id"
bindtap="toggleLoser" data-id="{{item.id}}">
<image class="player-avatar-small" src="{{item.avatar_url || '/images/default-avatar.png'}}" />
<text class="player-name">{{item.nickname}}</text>
<view class="check-mark lose" wx:if="{{item.losing}}">✗</view>
</view>
</view>
</view>
<!-- 分数输入 -->
<view class="score-section">
<text class="section-label">本局分数</text>
<view class="score-input-group">
<button class="score-preset" bindtap="setScore" data-score="50">50</button>
<button class="score-preset" bindtap="setScore" data-score="100">100</button>
<button class="score-preset" bindtap="setScore" data-score="200">200</button>
<button class="score-preset" bindtap="setScore" data-score="500">500</button>
<input class="score-input" type="number" placeholder="自定义"
value="{{customScore}}" bindinput="onScoreInput" />
</view>
</view>
<!-- 提交按钮 -->
<button class="btn-primary submit-btn" bindtap="submitQuickEntry"
disabled="{{!canSubmitQuick}}">
提交本局 ({{selectedScore || 0}}分)
</button>
</view>
<!-- 详细记账区 -->
<view class="detailed-entry card">
<view class="card-header">
<text class="card-title">详细记账</text>
<text class="toggle-btn" bindtap="toggleDetailMode">
{{showDetailMode ? '收起' : '展开'}}
</text>
</view>
<view class="detail-content" wx:if="{{showDetailMode}}">
<!-- 每个玩家的输入 -->
<view class="player-entry" wx:for="{{detailPlayers}}" wx:key="id">
<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="score-entry">
<text class="current-chips">当前: {{item.current_chips}}</text>
<input class="chips-input {{item.chips_change > 0 ? 'win' : item.chips_change < 0 ? 'lose' : ''}}"
type="number" placeholder="+/-分数"
value="{{item.chips_change || ''}}"
bindinput="onDetailScoreInput" data-id="{{item.id}}" />
</view>
</view>
<!-- 平衡检查 -->
<view class="balance-check">
<text class="balance-label">总计:</text>
<text class="balance-value {{totalBalance === 0 ? 'balanced' : 'unbalanced'}}">
{{totalBalance > 0 ? '+' : ''}}{{totalBalance}}
</text>
<text class="balance-tip" wx:if="{{totalBalance !== 0}}">
需要平衡到0
</text>
</view>
<button class="btn-primary" bindtap="submitDetailEntry"
disabled="{{totalBalance !== 0}}">
提交详细记账
</button>
</view>
</view>
<!-- 当前积分榜 -->
<view class="scoreboard card">
<view class="card-title">当前积分榜</view>
<view class="scoreboard-list">
<view class="scoreboard-item" wx:for="{{scoreboard}}" wx:key="id">
<view class="rank">{{index + 1}}</view>
<view class="player-info">
<image class="player-avatar-small" src="{{item.avatar_url || '/images/default-avatar.png'}}" />
<text class="player-name">{{item.nickname}}</text>
</view>
<view class="player-score {{item.total_chips > 0 ? 'win' : item.total_chips < 0 ? 'lose' : ''}}">
{{item.total_chips > 0 ? '+' : ''}}{{item.total_chips}}
</view>
</view>
</view>
</view>
<!-- 最近记录 -->
<view class="recent-records card" wx:if="{{recentRecords.length > 0}}">
<view class="card-header">
<text class="card-title">最近5局</text>
</view>
<view class="record-list">
<view class="record-item" wx:for="{{recentRecords}}" wx:key="id">
<view class="record-round">第{{item.round_number}}局</view>
<view class="record-scores">
<text class="score-item" wx:for="{{item.scores}}" wx:for-item="score" wx:key="player_id">
{{score.nickname}}: {{score.chips_change > 0 ? '+' : ''}}{{score.chips_change}}
</text>
</view>
<text class="record-time">{{item.timeText}}</text>
<text class="undo-btn" bindtap="undoRecord" data-id="{{item.id}}"
wx:if="{{item.can_undo}}">撤销</text>
</view>
</view>
</view>
<!-- 底部操作栏 -->
<view class="bottom-bar">
<button class="btn-secondary" bindtap="pauseGame">暂停</button>
<button class="btn-primary" bindtap="endGame">结束牌局</button>
</view>
</view>
<!-- 历史记录弹窗 -->
<view class="history-modal" wx:if="{{showHistory}}">
<view class="modal-mask" bindtap="closeHistory"></view>
<view class="modal-content">
<view class="modal-header">
<text class="modal-title">历史记录</text>
<text class="close-btn" bindtap="closeHistory">×</text>
</view>
<scroll-view class="modal-body" scroll-y>
<view class="history-item" wx:for="{{historyRecords}}" wx:key="id">
<view class="history-header">
<text class="history-round">第{{item.round_number}}局</text>
<text class="history-time">{{item.timeText}}</text>
</view>
<view class="history-scores">
<view class="history-score" wx:for="{{item.scores}}" wx:for-item="score" wx:key="player_id">
<text class="player-name">{{score.nickname}}</text>
<text class="score-change {{score.chips_change > 0 ? 'win' : 'lose'}}">
{{score.chips_change > 0 ? '+' : ''}}{{score.chips_change}}
</text>
</view>
</view>
</view>
</scroll-view>
</view>
</view>