From c4a9cad1c50e89365e2a58b50e259af642ed3b8c Mon Sep 17 00:00:00 2001 From: Codex Assistant <codex@example.com> Date: 星期二, 07 十月 2025 16:12:20 +0800 Subject: [PATCH] feat(review): 调整评审详情展示顺序与样式,描述支持多行,项目信息列宽40/60 fix(auth): 登录页与首页循环跳转保护;api.ts 在登录页不再重定向;401分支在登录页不跳转 fix(router): /login 放行策略优化,避免死循环;评审列表跳转到 /project-review/:id/detail fix(frontend): 补齐 utils/appConfig.ts,避免启动白屏 fix(review): 详情页提交评分缺少stageId时回退使用项目详情的stageId feat(backend): ActivityPlayerDetailResponse.playerInfo 补充 avatarUrl/avatar,服务组装时填充用户头像 chore(dev): 启动脚本注入本地JWT密钥,重启前后端 --- wx/pages/profile/profile.wxml | 119 +++++++++++++++++++++++++++++++++++++++++++---------------- 1 files changed, 87 insertions(+), 32 deletions(-) diff --git a/wx/pages/profile/profile.wxml b/wx/pages/profile/profile.wxml index f3574a8..6b3b802 100644 --- a/wx/pages/profile/profile.wxml +++ b/wx/pages/profile/profile.wxml @@ -21,54 +21,109 @@ <text class="avatar-text">{{avatarText}}</text> </view> </view> - <text class="user-name">{{userInfo.name || 'Ethan'}}</text> - <text class="user-role">{{userRoles.includes('JUDGE') ? '璇勫' : userRoles.includes('ORGANIZER') ? '涓诲姙鏂�' : '鍙傝禌鑰�'}}</text> + <view class="user-info"> + <text class="user-name">{{userInfo.name || 'Ethan'}}</text> + <text class="user-role">{{userRoles.includes('JUDGE') ? '璇勫' : userRoles.includes('ORGANIZER') ? '涓诲姙鏂�' : '鍙傝禌鑰�'}}</text> + </view> + <view class="settings-btn" bindtap="goToPersonalInfo"> + <text class="icon-settings">鈿欙笍</text> + </view> </view> <!-- 鎴戠殑椤圭洰鍖哄煙 --> <view class="projects-section"> <text class="section-title">鎴戠殑椤圭洰</text> - <view class="project-list"> - <view class="project-card project-a" bindtap="onMenuItemTap" data-path="/pages/profile/registrations"> + <view class="project-list" wx:if="{{userProjects && userProjects.length > 0}}"> + <view + class="project-card" + wx:for="{{userProjects}}" + wx:key="id" + bindtap="goToProjectDetail" + data-project-id="{{item.id}}" + > <view class="project-icon"> - <text class="icon-plant">馃尡</text> + <!-- 濡傛灉鏈夌缉鐣ュ浘锛屾樉绀哄浘鐗� --> + <image + wx:if="{{item.thumbnailUrl}}" + class="project-thumbnail" + src="{{item.thumbnailUrl}}" + mode="aspectFill" + /> + <!-- 鍚﹀垯鏄剧ず鍥炬爣 --> + <text wx:else class="icon {{item.icon}}"></text> </view> <view class="project-info"> - <text class="project-name">鎴戠殑鎶ュ悕</text> - <text class="project-desc">鏌ョ湅鎶ュ悕璁板綍</text> + <text class="project-title">{{item.projectName || '鏈懡鍚嶉」鐩�'}}</text> + <text class="project-subtitle">{{item.activityName || ''}}</text> + </view> + <view class="project-status"> + <text class="status-text status-{{item.statusType}}">{{item.statusText}}</text> </view> <text class="project-arrow">></text> </view> - <view class="project-card project-b" bindtap="onMenuItemTap" data-path="/pages/profile/achievements"> - <view class="project-icon"> - <text class="icon-trophy">馃弳</text> - </view> - <view class="project-info"> - <text class="project-name">鎴戠殑鎴愮哗</text> - <text class="project-desc">鏌ョ湅娲诲姩鎴愮哗</text> - </view> - <text class="project-arrow">></text> + </view> + <view class="empty-projects" wx:else> + <text class="empty-icon">馃搵</text> + <text class="empty-text">鏆傛棤椤圭洰</text> + <text class="empty-desc">鍙傚姞娲诲姩鍚庯紝鎮ㄧ殑椤圭洰灏嗗湪杩欓噷鏄剧ず</text> + </view> + </view> + + <!-- 鎴戠殑璇勫鍖哄煙 - 浠呰瘎濮斿彲瑙� --> + <view class="review-section" wx:if="{{isJudge}}"> + <view class="section-header"> + <text class="section-title">鎴戠殑璇勫</text> + <view class="review-action-btn" bindtap="goToReviewPage"> + <text class="action-text">璇勫</text> + <text class="action-arrow">></text> + </view> + </view> + + <view class="review-stats"> + <view class="stat-item"> + <text class="stat-number">{{judgeStats.pendingReviews || 0}}</text> + <text class="stat-label">寰呰瘎瀹�</text> + </view> + <view class="stat-divider"></view> + <view class="stat-item"> + <text class="stat-number">{{judgeStats.completedReviews || 0}}</text> + <text class="stat-label">宸茶瘎瀹�</text> + </view> + <view class="stat-divider"></view> + <view class="stat-item"> + <text class="stat-number">{{judgeStats.studentUnReviewedCount || 0}}</text> + <text class="stat-label">瀛﹀憳鏈瘎瀹�</text> </view> </view> </view> - <!-- 鍏朵粬鍔熻兘鑿滃崟 --> - <view class="other-menu-section"> - <view class="menu-item-simple" bindtap="onMenuItemTap" data-path="/pages/profile/favorites"> - <text class="menu-icon">猸�</text> - <text class="menu-title">鎴戠殑鏀惰棌</text> - <text class="menu-arrow">></text> + <!-- 鎴戠殑瀹℃牳鍖哄煙 - 浠呭憳宸ュ彲瑙� --> + <view class="review-section" wx:if="{{isEmployee}}"> + <view class="section-header"> + <text class="section-title">鎴戠殑瀹℃牳</text> + <view class="review-action-btn" bindtap="goToEmployeeReviewPage"> + <text class="action-text">瀹℃牳</text> + <text class="action-arrow">></text> + </view> </view> - <view class="menu-item-simple" bindtap="onMenuItemTap" data-path="/pages/profile/settings"> - <text class="menu-icon">鈿欙笍</text> - <text class="menu-title">璁剧疆</text> - <text class="menu-arrow">></text> - </view> - <view class="menu-item-simple" bindtap="onLogout"> - <text class="menu-icon">馃毆</text> - <text class="menu-title">閫�鍑虹櫥褰�</text> - <text class="menu-arrow">></text> + + <view class="review-stats"> + <view class="stat-item"> + <text class="stat-number">{{employeeReviewStats.pendingCount || 0}}</text> + <text class="stat-label">寰呭鏍�</text> + </view> + <view class="stat-divider"></view> + <view class="stat-item"> + <text class="stat-number">{{employeeReviewStats.approvedCount || 0}}</text> + <text class="stat-label">宸插鏍�</text> + </view> + <view class="stat-divider"></view> + <view class="stat-item"> + <text class="stat-number">{{employeeReviewStats.rejectedCount || 0}}</text> + <text class="stat-label">椹冲洖</text> + </view> </view> </view> + </view> -</view> \ No newline at end of file +</view> -- Gitblit v1.8.0