183 lines
7.0 KiB
Plaintext
183 lines
7.0 KiB
Plaintext
<!--实时记账页面-->
|
||
<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> |