<!--pages/project/detail.wxml-->
|
<view class="container" wx:if="{{!loading}}">
|
<!-- 项目基本信息 -->
|
<view class="project-card">
|
<view class="card-header">
|
<text class="card-title">项目信息</text>
|
<view class="status-tag status-{{projectDetail.state}}">
|
{{statusText}}
|
</view>
|
</view>
|
|
<view class="project-info">
|
<view class="info-row">
|
<text class="label">项目名称</text>
|
<text class="value">{{projectDetail.projectName || '未填写'}}</text>
|
</view>
|
<view class="info-row">
|
<text class="label">比赛名称</text>
|
<text class="value">{{projectDetail.activityName}}</text>
|
</view>
|
<view class="info-row full-width" wx:if="{{projectDetail.description}}">
|
<text class="label">项目描述</text>
|
<view class="description">{{projectDetail.description}}</view>
|
</view>
|
</view>
|
</view>
|
|
<!-- 项目附件 -->
|
<view class="attachments-card" wx:if="{{projectDetail.submissionFiles && projectDetail.submissionFiles.length > 0}}">
|
<view class="card-header">
|
<text class="card-title">项目附件</text>
|
</view>
|
|
<view class="attachments-list">
|
<view
|
class="attachment-item"
|
wx:for="{{projectDetail.submissionFiles}}"
|
wx:key="id"
|
bindtap="previewFile"
|
data-file="{{item}}"
|
>
|
<view class="file-info">
|
<!-- 图片预览 -->
|
<view class="file-preview" wx:if="{{item.mediaType === 'IMAGE'}}">
|
<image
|
class="preview-image"
|
src="{{item.fullThumbUrl || item.fullUrl}}"
|
mode="aspectFill"
|
/>
|
<view class="media-type-badge image-badge">图片</view>
|
</view>
|
<!-- 视频预览 -->
|
<view class="file-preview" wx:elif="{{item.mediaType === 'VIDEO'}}">
|
<image
|
class="preview-image"
|
src="{{item.fullThumbUrl || item.fullUrl}}"
|
mode="aspectFill"
|
/>
|
<view class="media-type-badge video-badge">视频</view>
|
<view class="play-icon">▶</view>
|
</view>
|
<!-- 其他文件类型 -->
|
<view class="file-icon" wx:else>
|
<text class="icon-file">📄</text>
|
</view>
|
<view class="file-details">
|
<text class="file-name">{{item.name}}</text>
|
<text class="file-size">{{item.fileSizeText}}</text>
|
</view>
|
</view>
|
<view class="file-actions">
|
<text class="action-btn">{{item.mediaType === 'IMAGE' ? '预览' : item.mediaType === 'VIDEO' ? '播放' : '查看'}}</text>
|
</view>
|
</view>
|
</view>
|
</view>
|
|
<!-- 参赛人信息 - 已隐藏 -->
|
<!--
|
<view class="player-card" wx:if="{{projectDetail.playerInfo}}">
|
<view class="card-header">
|
<text class="card-title">参赛人信息</text>
|
</view>
|
|
<view class="player-info">
|
<view class="player-basic">
|
<image
|
class="player-avatar"
|
src="{{projectDetail.playerInfo.userInfo.avatarUrl || '/images/default-avatar.svg'}}"
|
mode="aspectFill"
|
></image>
|
<view class="player-details">
|
<text class="player-name">{{projectDetail.playerInfo.name}}</text>
|
<text class="player-phone">{{projectDetail.playerInfo.phone}}</text>
|
</view>
|
</view>
|
|
<view class="player-extended">
|
<view class="info-row" wx:if="{{projectDetail.playerInfo.gender}}">
|
<text class="label">性别</text>
|
<text class="value">{{genderText}}</text>
|
</view>
|
<view class="info-row" wx:if="{{projectDetail.playerInfo.education}}">
|
<text class="label">学历</text>
|
<text class="value">{{educationText}}</text>
|
</view>
|
<view class="info-row" wx:if="{{projectDetail.playerInfo.birthday}}">
|
<text class="label">生日</text>
|
<text class="value">{{projectDetail.playerInfo.birthday}}</text>
|
</view>
|
<view class="info-row full-width" wx:if="{{projectDetail.playerInfo.introduction}}">
|
<text class="label">个人简介</text>
|
<view class="description">{{projectDetail.playerInfo.introduction}}</view>
|
</view>
|
</view>
|
</view>
|
</view>
|
-->
|
|
<!-- 审核反馈信息 -->
|
<view class="feedback-card" wx:if="{{projectDetail.feedback}}">
|
<view class="card-header">
|
<text class="card-title">审核反馈</text>
|
</view>
|
|
<view class="feedback-content">
|
{{projectDetail.feedback}}
|
</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>
|
|
<!-- 加载状态 -->
|
<view class="loading-container" wx:if="{{loading}}">
|
<view class="loading-spinner"></view>
|
<text class="loading-text">加载中...</text>
|
</view>
|
|
<!-- 错误状态 -->
|
<view class="error-container" wx:if="{{error}}">
|
<text class="error-icon">⚠️</text>
|
<text class="error-text">{{error}}</text>
|
<button class="retry-btn" bindtap="loadProjectDetail">重试</button>
|
</view>
|