2026-09-29 22:39:34 +08:00

83 lines
4.3 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.

<view class="score-page">
<view class="hero">
<view class="hero-orb hero-orb--one"></view>
<view class="hero-orb hero-orb--two"></view>
<text class="hero-title">成绩查询</text>
<text class="hero-subtitle">选择赛事,输入姓名或参赛编号查询</text>
</view>
<view class="search-card">
<text class="field-label">赛事</text>
<picker mode="selector" range="{{eventNames}}" value="{{eventIndex}}" bindchange="onEventChange">
<view class="picker-value">
<text class="picker-text">{{eventNames[eventIndex] || '暂无可查询赛事'}}</text>
<view class="picker-arrow"></view>
</view>
</picker>
<view class="filter-row">
<picker class="filter-picker" mode="selector" range="{{projectNames}}" value="{{projectIndex}}" bindchange="onProjectChange">
<view class="picker-value"><text class="picker-text">{{projectNames[projectIndex]}}</text><view class="picker-arrow"></view></view>
</picker>
<picker class="filter-picker" mode="selector" range="{{groupNames}}" value="{{groupIndex}}" bindchange="onGroupChange">
<view class="picker-value"><text class="picker-text">{{groupNames[groupIndex]}}</text><view class="picker-arrow"></view></view>
</picker>
</view>
<text class="field-label field-label--keyword">参赛人</text>
<view class="keyword-box">
<text class="search-symbol">⌕</text>
<input class="keyword-input" value="{{keyword}}" placeholder="姓名 / 参赛编号" placeholder-class="placeholder" confirm-type="search" bindinput="onKeywordInput" bindconfirm="onSearch" />
<text wx:if="{{keyword}}" class="clear-btn" bindtap="onClearKeyword">×</text>
</view>
<button class="search-btn" loading="{{loading}}" disabled="{{loading || !selectedEventId || !projects.length || !groupNames.length}}" bindtap="onSearch">查询成绩</button>
</view>
<view class="result-header" wx:if="{{searched && !loading}}">
<text class="result-title">查询结果</text>
<text class="result-count">共 {{rows.length}} 条</text>
</view>
<view class="skeleton-card" wx:if="{{loading}}" >
<view class="skeleton-line skeleton-line--short"></view>
<view class="skeleton-line"></view>
<view class="skeleton-line skeleton-line--middle"></view>
</view>
<view class="empty" wx:elif="{{searched && rows.length === 0}}">
<view class="empty-icon">分</view>
<text class="empty-title">未查询到成绩</text>
<text class="empty-desc">请核对赛事、姓名或参赛编号后重试</text>
</view>
<view class="result-card" wx:for="{{rows}}" wx:key="id">
<view class="result-top">
<view class="athlete-info">
<view class="rank-badge">{{item.rank}}</view>
<view class="athlete-text">
<view><text class="athlete-name">{{item.athleteName}}</text><text class="athlete-no">{{item.athleteNo}}</text></view>
<text class="event-name">{{item.eventName}}</text>
</view>
</view>
<view class="score-main">
<text class="score-num">{{item.totalScore}}</text>
<text class="score-unit">总分</text>
</view>
</view>
<view class="meta-grid">
<view class="meta-item"><text class="meta-label">比赛项目</text><text class="meta-value">{{item.category}}</text></view>
<view class="meta-item"><text class="meta-label">参赛组别</text><text class="meta-value">{{item.groupName}}</text></view>
<view class="meta-item"><text class="meta-label">比赛轮次</text><text class="meta-value">{{item.roundName}}</text></view>
<view class="meta-item"><text class="meta-label">成绩状态</text><text class="meta-value meta-value--success">{{item.status}}</text></view>
</view>
<view wx:if="{{expandedId === item.id}}" class="score-breakdown">
<view class="breakdown-item" wx:for="{{item.judgeScores}}" wx:key="label">
<text class="breakdown-label">{{item.label}}</text><text class="breakdown-score">{{item.score}}</text>
</view>
</view>
<view class="detail-toggle" data-id="{{item.id}}" bindtap="onToggleDetail">
<text>{{expandedId === item.id ? '收起评分明细' : '查看评分明细'}}</text>
<view class="toggle-arrow {{expandedId === item.id ? 'open' : ''}}"></view>
</view>
</view>
<view class="safe-space"></view>
</view>