dapaijizhang3/pages/game/play/play.wxml

183 lines
7.0 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.

<!--实时记账页面-->
<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>