lrj
1 天以前 8337c34fcc761d07acaad796d10f3e12e9bbe2d1
wx/pages/project/detail.wxml
@@ -75,6 +75,57 @@
    </view>
  </view>
  <!-- 比赛阶段时间轴 -->
  <view class="timeline-card">
    <view class="card-header">
      <text class="card-title">比赛阶段</text>
    </view>
    <view class="timeline-loading" wx:if="{{timelineLoading}}">
      <view class="loading-spinner small"></view>
      <text class="loading-text">时间轴加载中...</text>
    </view>
    <view class="timeline-error" wx:elif="{{timelineError}}">
      {{timelineError}}
    </view>
    <view class="timeline-wrapper" wx:elif="{{timeline.length > 0}}">
      <view
        class="timeline-item {{item.participated ? 'timeline-item-active' : 'timeline-item-inactive'}} {{item.isClickable ? 'timeline-item-clickable' : ''}}"
        wx:for="{{timeline}}"
        wx:key="stageId"
        bindtap="openStageDetail"
        data-player-id="{{item.activityPlayerId}}"
        data-clickable="{{item.isClickable}}"
        data-participated="{{item.participated}}"
      >
        <view class="timeline-axis">
          <view class="timeline-dot"></view>
          <view class="timeline-line" wx:if="{{index < timeline.length - 1}}"></view>
        </view>
        <view class="timeline-body">
          <view class="timeline-title">
            <text class="stage-name">{{item.stageName}}</text>
            <text class="stage-score">{{item.scoreText}}</text>
          </view>
          <view class="timeline-sub">
            <text class="stage-time">{{item.matchTimeText || '时间待定'}}</text>
            <text class="stage-status" wx:if="{{item.participated}}">已参赛</text>
            <text class="stage-status stage-status-inactive" wx:else>未参赛</text>
          </view>
          <view class="timeline-actions" wx:if="{{item.hasRating && item.activityPlayerId}}">
            <text class="detail-link">【详情】</text>
          </view>
        </view>
      </view>
    </view>
    <view class="timeline-empty" wx:else>
      暂无阶段信息
    </view>
  </view>
  <!-- 参赛人信息 - 已隐藏 -->
  <!-- 
  <view class="player-card" wx:if="{{projectDetail.playerInfo}}">
@@ -128,49 +179,6 @@
    </view>
  </view>
  <!-- 评审信息 -->
  <view class="rating-card" wx:if="{{ratingStats}}">
    <view class="card-header">
      <text class="card-title">评审信息</text>
    </view>
    <view class="rating-info">
      <!-- 总平均分显示 -->
      <view class="average-score-section">
        <view class="average-score-container">
          <text class="average-score-label">总平均分</text>
          <text class="average-score-value">{{ratingStats.averageScore || '暂无评分'}}</text>
          <text class="rating-count-text">({{ratingStats.ratingCount || 0}}位评委已评分)</text>
        </view>
      </view>
      <!-- 各评委评分详情 -->
      <view class="judge-ratings-section" wx:if="{{ratingStats.judgeRatings && ratingStats.judgeRatings.length > 0}}">
        <text class="section-title">评委评分详情</text>
        <view
          class="judge-rating"
          wx:for="{{ratingStats.judgeRatings}}"
          wx:key="judgeId"
          wx:if="{{item.hasRated}}"
        >
          <view class="rating-header">
            <view class="judge-info">
              <text class="judge-label">评委 {{index + 1}}</text>
              <text class="rating-status rated">已评分</text>
            </view>
            <view class="score-info">
              <text class="score">{{item.totalScore}}分</text>
              <text class="rating-time">{{item.ratingTimeText}}</text>
            </view>
          </view>
          <view class="rating-comment" wx:if="{{item.remark}}">
            <text class="comment-label">点评:</text>
            <text class="comment-text">{{item.remark}}</text>
          </view>
        </view>
      </view>
    </view>
  </view>
</view>
<!-- 加载状态 -->
@@ -185,3 +193,39 @@
  <text class="error-text">{{error}}</text>
  <button class="retry-btn" bindtap="loadProjectDetail">重试</button>
</view>
<!-- 阶段评分详情弹窗 -->
<view class="rating-detail-overlay" wx:if="{{showRatingDetail}}">
  <view class="overlay-mask" bindtap="closeStageDetail"></view>
  <view class="overlay-panel">
    <view class="overlay-header">
      <text class="overlay-title">{{ratingDetail ? ratingDetail.stageName : '评分详情'}}</text>
      <view class="overlay-close" bindtap="closeStageDetail">×</view>
    </view>
    <text class="overlay-subtitle">{{ratingDetail && ratingDetail.matchTimeText ? ratingDetail.matchTimeText : '时间待定'}}</text>
    <view class="overlay-summary">
      <text class="summary-score">平均分:{{ratingDetail ? ratingDetail.averageScoreText : '暂无评分'}}</text>
      <text class="summary-count">评委数:{{ratingDetail ? ratingDetail.ratingCount : 0}}</text>
    </view>
    <view class="overlay-body">
      <view class="panel-loading" wx:if="{{ratingDetailLoading}}">
        <view class="loading-spinner small"></view>
        <text class="loading-text">加载评分详情...</text>
      </view>
      <view class="panel-error" wx:elif="{{ratingDetailError}}">{{ratingDetailError}}</view>
      <block wx:else>
        <view class="judge-item" wx:for="{{(ratingDetail && ratingDetail.judgeRatings) ? ratingDetail.judgeRatings : []}}" wx:key="judgeId">
          <view class="judge-header">
            <text class="judge-name">{{item.judgeName}}</text>
            <text class="judge-score">{{item.totalScoreText}}</text>
          </view>
          <text class="judge-time" wx:if="{{item.ratingTimeText}}">{{item.ratingTimeText}}</text>
          <view class="judge-feedback" wx:if="{{item.feedback}}">{{item.feedback}}</view>
        </view>
        <view class="panel-empty" wx:if="{{ratingDetail && ratingDetail.judgeRatings && ratingDetail.judgeRatings.length === 0}}">
          暂无评分详情
        </view>
      </block>
    </view>
  </view>
</view>