From afeeed281e60466b576fbe74d339634cc5d07b82 Mon Sep 17 00:00:00 2001 From: Codex Assistant <codex@example.com> Date: 星期三, 08 十月 2025 08:56:42 +0800 Subject: [PATCH] 修复评审功能和用户认证问题 --- wx/pages/judge/review.wxml | 210 +++++++++++++++++----------------------------------- 1 files changed, 68 insertions(+), 142 deletions(-) diff --git a/wx/pages/judge/review.wxml b/wx/pages/judge/review.wxml index 1ed466d..fd5c086 100644 --- a/wx/pages/judge/review.wxml +++ b/wx/pages/judge/review.wxml @@ -16,32 +16,33 @@ {{reviewStatus === 'COMPLETED' ? '宸茶瘎瀹�' : '寰呰瘎瀹�'}} </view> </view> - + <view class="submission-detail"> <text class="submission-title">{{submission.title}}</text> - <text class="submission-desc">{{submission.description}}</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> + <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-school">{{submission.participant.school}} - {{submission.participant.major}}</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}}" class="team-info"> - <text class="team-label">鍥㈤槦锛歿{submission.team.name}}</text> + + <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> @@ -50,74 +51,36 @@ </view> </view> </view> - - <text class="submit-time">鎻愪氦鏃堕棿锛歿{formatDate(submission.submittedAt)}}</text> + </view> </view> - <!-- 浣滃搧濯掍綋 --> - <view wx:if="{{submission.images.length > 0 || submission.videos.length > 0}}" class="media-section"> - <text class="section-title">浣滃搧灞曠ず</text> - - <!-- 鍥剧墖 --> - <view wx:if="{{submission.images.length > 0}}" class="media-grid"> - <view - wx:for="{{submission.images}}" - wx:key="*this" - class="media-item image-item" - data-url="{{item}}" - data-type="image" - bindtap="onMediaTap" - > - <image class="media-image" src="{{item}}" mode="aspectFill"></image> - </view> - </view> - - <!-- 瑙嗛 --> - <view wx:if="{{submission.videos.length > 0}}" class="media-grid"> - <view - wx:for="{{submission.videos}}" - wx:key="*this" - class="media-item video-item" - data-url="{{item}}" - data-type="video" - bindtap="onMediaTap" - > - <video class="media-video" src="{{item}}" poster="{{item}}" controls></video> - <view class="play-overlay"> - <text class="play-icon">鈻�</text> - </view> - </view> - </view> - </view> - - <!-- 浣滃搧鏂囦欢 --> - <view wx:if="{{submission.files.length > 0}}" class="files-section"> - <text class="section-title">浣滃搧鏂囦欢</text> - - <view class="file-list"> - <view - wx:for="{{submission.files}}" + <!-- 浣滃搧绱犳潗 --> + <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="file-item" + class="media-item" + bindtap="onMediaTap" + data-index="{{index}}" > - <view class="file-info"> - <text class="file-icon">馃搫</text> - <view class="file-detail"> - <text class="file-name">{{item.name}}</text> - <text class="file-size">{{getFileSizeText(item.size)}}</text> - </view> + <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="download-btn {{item.isDownloading ? 'downloading' : ''}}" - data-file-id="{{item.id}}" - data-file-name="{{item.name}}" - data-file-url="{{item.url}}" - bindtap="onDownloadFile" - > - <text class="download-icon">{{item.isDownloading ? '鈴�' : '猬�'}}</text> - <text class="download-text">{{item.isDownloading ? '涓嬭浇涓�' : '涓嬭浇'}}</text> + <view class="media-info"> + <text class="media-name">{{item.name}}</text> + <text class="media-size">{{getFileSizeText(item.size)}}</text> </view> </view> </view> @@ -126,84 +89,70 @@ <!-- 璇勫鏍囧噯 --> <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> + <text class="criterion-score">{{scores[item.id] || 0}} / {{item.maxScore}} 鍒�</text> </view> - - <text class="criterion-desc">{{item.description}}</text> - - <!-- 璇勫垎閫夋嫨鍣� --> - <view class="score-selector"> - <picker - range="{{scoreOptions}}" - range-key="label" - value="{{(scores[item.id] || 1) - 1}}" + + <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}}" - bindchange="onScoreChange" - disabled="{{reviewStatus === 'COMPLETED'}}" - > - <view class="score-picker {{reviewStatus === 'COMPLETED' ? 'disabled' : ''}}"> - <text class="score-text">{{getScoreLabel(scores[item.id] || 0)}}</text> - <text class="picker-arrow">{{reviewStatus === 'COMPLETED' ? '' : '鈻�'}}</text> - </view> - </picker> + 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> + <text class="total-value">{{totalScore}} / {{maxScore}} 鍒�</text> </view> </view> <!-- 璇勫鎰忚 --> <view class="comment-section"> <text class="section-title">璇勫鎰忚</text> - - <textarea - class="comment-input {{reviewStatus === 'COMPLETED' ? 'disabled' : ''}}" - placeholder="璇峰~鍐欒缁嗙殑璇勫鎰忚锛屽寘鎷綔鍝佺殑浼樼偣銆佷笉瓒冲拰鏀硅繘寤鸿..." + <textarea + class="comment-input" + placeholder="璇峰~鍐欒缁嗚瘎瀹℃剰瑙侊紝鍖呮嫭浣滃搧浼樼偣銆佷笉瓒冲拰鏀硅繘寤鸿..." value="{{comment}}" maxlength="1000" show-confirm-bar="{{false}}" - disabled="{{reviewStatus === 'COMPLETED'}}" bindinput="onCommentInput" ></textarea> - <view class="comment-counter"> - <text class="counter-text">{{comment.length}}/1000</text> + <text class="counter-text">{{comment.length}} / 1000</text> </view> </view> - <!-- 宸叉湁璇勫璁板綍 --> + <!-- 鏃㈡湁璇勫 --> <view wx:if="{{existingReview}}" class="existing-review"> - <text class="section-title">璇勫璁板綍</text> - + <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> + <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> + <text class="other-reviews-text">鏌ョ湅鍏朵粬璇勫璇勫垎</text> </view> </view> - <!-- 搴曢儴鎿嶄綔鏍� --> - <view wx:if="{{reviewStatus !== 'COMPLETED'}}" class="bottom-actions"> - <view class="action-btn draft-btn" bindtap="onSaveDraft"> - <text class="btn-icon">馃捑</text> - <text class="btn-text">淇濆瓨鑽夌</text> - </view> - - <view + <!-- 搴曢儴鎿嶄綔 --> + <view class="bottom-actions"> + <view class="action-btn submit-btn {{submitting ? 'submitting' : ''}}" bindtap="onSubmitReview" > @@ -212,27 +161,4 @@ </view> </view> </view> - - <!-- 瑙嗛棰勮妯℃�佹 --> - <view wx:if="{{showMediaPreview}}" class="media-preview-modal"> - <view class="modal-overlay" bindtap="onCloseMediaPreview"></view> - <view class="modal-content"> - <view class="modal-header"> - <text class="modal-title">瑙嗛棰勮</text> - <view class="close-btn" bindtap="onCloseMediaPreview"> - <text class="close-icon">鉁�</text> - </view> - </view> - - <view class="modal-body"> - <video - wx:if="{{mediaType === 'video'}}" - class="preview-video" - src="{{currentMedia}}" - controls - autoplay - ></video> - </view> - </view> - </view> -</view> \ No newline at end of file +</view> -- Gitblit v1.8.0