Codex Assistant
10 小时以前 0a48616045ddce1562584543a0e89e5144051fde
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
<!--pages/judge/review.wxml-->
<view class="container">
  <!-- 加载状态 -->
  <view wx:if="{{loading}}" class="loading-container">
    <view class="loading-spinner"></view>
    <text class="loading-text">加载中...</text>
  </view>
 
  <!-- 评审内容 -->
  <view wx:else class="review-content">
    <!-- 作品信息 -->
    <view class="submission-info">
      <view class="info-header">
        <text class="info-title">作品信息</text>
        <view class="status-badge {{reviewStatus === 'COMPLETED' ? 'completed' : 'pending'}}">
          {{reviewStatus === 'COMPLETED' ? '已评审' : '待评审'}}
        </view>
      </view>
 
      <view class="submission-detail">
        <text class="submission-title">{{submission.title}}</text>
        <text class="submission-desc">{{submission.description || '暂无项目描述'}}</text>
 
        <!-- 参赛者信息 -->
        <view class="participant-info">
          <view class="participant-header">
            <text class="participant-label">参赛者:</text>
            <view class="contact-btn" bindtap="onContactParticipant">
              <text class="contact-icon">📞</text>
              <text class="contact-text">拨打电话</text>
            </view>
          </view>
 
          <view class="participant-detail">
            <image class="participant-avatar" src="{{submission.participant.avatar}}" mode="aspectFill"></image>
            <view class="participant-text">
              <text class="participant-name">{{submission.participant.name || '匿名'}}</text>
              <text class="participant-meta">性别:{{submission.participant.gender || '未填写'}},出生日期:{{submission.participant.birthday || '未填写'}}</text>
              <text class="participant-field">所属区域:{{submission.participant.region || '未填写'}}</text>
              <text class="participant-field">学历:{{submission.participant.education || '未填写'}}</text>
            </view>
          </view>
 
          <view wx:if="{{submission.team && submission.team.members}}" class="team-info">
            <text class="team-label">团队:{{submission.team.name || '未命名团队'}}</text>
            <view class="team-members">
              <view wx:for="{{submission.team.members}}" wx:key="id" class="team-member">
                <text class="member-name">{{item.name}}</text>
                <text class="member-role">{{item.role}}</text>
              </view>
            </view>
          </view>
        </view>
 
      </view>
    </view>
 
    <!-- 作品素材 -->
    <view wx:if="{{submission.mediaList && submission.mediaList.length > 0}}" class="media-section">
      <text class="section-title">参赛作品</text>
      <view class="media-list">
        <view
          wx:for="{{submission.mediaList}}"
          wx:key="id"
          class="media-item"
          bindtap="onMediaTap"
          data-index="{{index}}"
        >
          <view class="media-thumb-wrapper">
            <image
              wx:if="{{item.mediaType === 'image' || item.mediaType === 'video'}}"
              class="media-thumb"
              src="{{item.thumbUrl}}"
              mode="aspectFill"
            />
            <view wx:elif="{{item.mediaType === 'pdf'}}" class="media-icon pdf">PDF</view>
            <view wx:elif="{{item.mediaType === 'word'}}" class="media-icon doc">DOC</view>
            <view wx:else class="media-icon file">FILE</view>
            <view wx:if="{{item.mediaType === 'video'}}" class="media-play">▶</view>
          </view>
          <view class="media-info">
            <text class="media-name">{{item.name}}</text>
            <text class="media-size">{{getFileSizeText(item.size)}}</text>
          </view>
        </view>
      </view>
    </view>
 
    <!-- 评审标准 -->
    <view class="criteria-section">
      <text class="section-title">评审标准</text>
 
      <view class="criteria-list">
        <view wx:for="{{criteria}}" wx:key="id" class="criterion-item">
          <view class="criterion-header">
            <text class="criterion-name">{{item.name}}</text>
            <text class="criterion-score">{{scores[item.id] || 0}} / {{item.maxScore}} 分</text>
          </view>
 
          <text class="criterion-desc">{{item.description || '暂无评分说明'}}</text>
 
          <view class="score-control">
            <view class="score-btn" data-criterion-id="{{item.id}}" data-index="{{index}}" bindtap="decreaseScore">-</view>
            <input
              class="score-input"
              type="digit"
              value="{{scores[item.id] || 0}}"
              data-criterion-id="{{item.id}}"
              data-index="{{index}}"
              bindinput="onScoreChange"
              placeholder="0"
            />
            <view class="score-btn" data-criterion-id="{{item.id}}" data-index="{{index}}" bindtap="increaseScore">+</view>
          </view>
        </view>
      </view>
 
      <view class="total-score">
        <text class="total-label">总分:</text>
        <text class="total-value">{{totalScore}} / {{maxScore}} 分</text>
      </view>
    </view>
 
    <!-- 评审意见 -->
    <view class="comment-section">
      <text class="section-title">评审意见</text>
      <textarea
        class="comment-input"
        placeholder="请填写详细评审意见,包括作品优点、不足和改进建议..."
        value="{{comment}}"
        maxlength="1000"
        show-confirm-bar="{{false}}"
        bindinput="onCommentInput"
      ></textarea>
      <view class="comment-counter">
        <text class="counter-text">{{comment.length}} / 1000</text>
      </view>
    </view>
 
    <!-- 既有评审 -->
    <view wx:if="{{existingReview}}" class="existing-review">
      <text class="section-title">历史评审</text>
      <view class="review-info">
        <text class="review-time">评审时间:{{formatDate(existingReview.reviewedAt) || '未知'}}</text>
        <text class="review-total">总分:{{existingReview.totalScore}} / {{maxScore}} 分</text>
      </view>
      <view class="other-reviews-btn" bindtap="onViewOtherReviews">
        <text class="other-reviews-icon">👥</text>
        <text class="other-reviews-text">查看其他评委评分</text>
      </view>
    </view>
 
    <!-- 底部操作 -->
    <view class="bottom-actions">
      <view
        class="action-btn submit-btn {{submitting ? 'submitting' : ''}}"
        bindtap="onSubmitReview"
      >
        <text class="btn-icon">{{submitting ? '⏳' : '✓'}}</text>
        <text class="btn-text">{{submitting ? '提交中...' : '提交评审'}}</text>
      </view>
    </view>
  </view>
</view>