| | |
| | | |
| | | <!-- 个人信息区域 --> |
| | | <view wx:else class="profile-content"> |
| | | <!-- 用户信息卡片 --> |
| | | <view class="user-card"> |
| | | <view class="user-info"> |
| | | <!-- 用户信息区域 --> |
| | | <view class="user-section"> |
| | | <view class="user-avatar-wrapper"> |
| | | <image |
| | | wx:if="{{userInfo.avatar}}" |
| | | class="avatar" |
| | | class="user-avatar" |
| | | src="{{userInfo.avatar}}" |
| | | mode="aspectFill" |
| | | /> |
| | | <view wx:else class="avatar-placeholder"> |
| | | <view wx:else class="user-avatar-placeholder"> |
| | | <text class="avatar-text">{{avatarText}}</text> |
| | | </view> |
| | | <view class="user-details"> |
| | | <text class="username">{{userInfo.name || '未设置姓名'}}</text> |
| | | <text class="user-desc">{{userInfo.school || '未设置学校'}} | {{userInfo.major || '未设置专业'}}</text> |
| | | <view class="user-roles"> |
| | | <text wx:for="{{userRoles}}" wx:key="*this" class="role-tag"> |
| | | {{item === 'JUDGE' ? '评委' : item === 'ORGANIZER' ? '主办方' : '参赛者'}} |
| | | </text> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | <view class="edit-btn" bindtap="onEditProfile"> |
| | | <text class="icon ic-edit"></text> |
| | | <text class="edit-text">编辑</text> |
| | | </view> |
| | | <text class="user-name">{{userInfo.name || 'Ethan'}}</text> |
| | | <text class="user-role">{{userRoles.includes('JUDGE') ? '评委' : userRoles.includes('ORGANIZER') ? '主办方' : '参赛者'}}</text> |
| | | </view> |
| | | |
| | | <!-- 统计数据 --> |
| | | <view class="stats-section"> |
| | | <view class="stats-grid"> |
| | | <view class="stat-item"> |
| | | <text class="stat-number">{{stats.totalRegistrations}}</text> |
| | | <text class="stat-label">总报名</text> |
| | | <!-- 我的项目区域 --> |
| | | <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-icon"> |
| | | <text class="icon-plant">🌱</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="stat-item"> |
| | | <text class="stat-number">{{stats.ongoingActivities}}</text> |
| | | <text class="stat-label">进行中</text> |
| | | </view> |
| | | <view class="stat-item"> |
| | | <text class="stat-number">{{stats.completedActivities}}</text> |
| | | <text class="stat-label">已完成</text> |
| | | </view> |
| | | <view class="stat-item"> |
| | | <text class="stat-number">{{stats.awards}}</text> |
| | | <text class="stat-label">获奖数</text> |
| | | <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> |
| | | </view> |
| | | |
| | | <!-- 评委专区 --> |
| | | <view wx:if="{{isJudge}}" class="role-section"> |
| | | <view class="section-header"> |
| | | <text class="section-title">评委专区</text> |
| | | <view class="judge-stats"> |
| | | <text class="pending-count">待评审: {{judgeStats.pendingReviews}}</text> |
| | | </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> |
| | | <view class="menu-grid"> |
| | | <view |
| | | wx:for="{{judgeMenuItems}}" |
| | | wx:key="path" |
| | | class="menu-item" |
| | | data-path="{{item.path}}" |
| | | bindtap="onMenuItemTap" |
| | | > |
| | | <view class="menu-icon-wrapper"> |
| | | <text class="icon {{item.iconName}}"></text> |
| | | <view wx:if="{{item.badge > 0}}" class="badge">{{item.badge}}</view> |
| | | </view> |
| | | <text class="menu-title">{{item.title}}</text> |
| | | <text class="menu-desc">{{item.desc}}</text> |
| | | </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> |
| | | |
| | | <!-- 主办方专区 --> |
| | | <view wx:if="{{isOrganizer}}" class="role-section"> |
| | | <view class="section-header"> |
| | | <text class="section-title">主办方专区</text> |
| | | <view class="organizer-stats"> |
| | | <text class="active-count">活跃活动: {{organizerStats.activeActivities}}</text> |
| | | </view> |
| | | </view> |
| | | <view class="menu-grid"> |
| | | <view |
| | | wx:for="{{organizerMenuItems}}" |
| | | wx:key="path" |
| | | class="menu-item" |
| | | data-path="{{item.path}}" |
| | | bindtap="onMenuItemTap" |
| | | > |
| | | <view class="menu-icon-wrapper"> |
| | | <text class="icon {{item.iconName}}"></text> |
| | | </view> |
| | | <text class="menu-title">{{item.title}}</text> |
| | | <text class="menu-desc">{{item.desc}}</text> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | |
| | | <!-- 功能菜单 --> |
| | | <view class="menu-section"> |
| | | <view class="section-title">功能菜单</view> |
| | | <view class="menu-list"> |
| | | <view |
| | | wx:for="{{menuItems}}" |
| | | wx:key="path" |
| | | class="menu-item-row" |
| | | data-path="{{item.path}}" |
| | | bindtap="onMenuItemTap" |
| | | > |
| | | <view class="menu-left"> |
| | | <text class="icon {{item.iconName}}"></text> |
| | | <view class="menu-text"> |
| | | <text class="menu-title">{{item.title}}</text> |
| | | <text class="menu-desc">{{item.desc}}</text> |
| | | </view> |
| | | </view> |
| | | <text class="icon ic-arrow-right"></text> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | |
| | | <!-- 最近报名 --> |
| | | <view class="recent-section"> |
| | | <view class="section-header"> |
| | | <text class="section-title">最近报名</text> |
| | | <text class="view-more" bindtap="onViewMoreRegistrations">查看更多</text> |
| | | </view> |
| | | |
| | | <view wx:if="{{registrationLoading}}" class="loading-wrapper small"> |
| | | <view class="loading small"></view> |
| | | <text class="loading-text">加载中...</text> |
| | | </view> |
| | | |
| | | <view wx:elif="{{registrations.length === 0}}" class="empty-state"> |
| | | <text class="empty-icon">📝</text> |
| | | <text class="empty-text">暂无报名记录</text> |
| | | </view> |
| | | |
| | | <view wx:else class="registration-list"> |
| | | <view |
| | | wx:for="{{registrations}}" |
| | | wx:key="id" |
| | | class="registration-item" |
| | | data-id="{{item.id}}" |
| | | bindtap="onRegistrationTap" |
| | | > |
| | | <image |
| | | wx:if="{{item.activity.coverImage && item.activity.coverImage.fullUrl}}" |
| | | class="activity-cover" |
| | | src="{{item.activity.coverImage.fullUrl}}" |
| | | mode="aspectFill" |
| | | /> |
| | | <view wx:else class="activity-cover-placeholder"> |
| | | <text class="activity-cover-text">{{item.activity.titleText}}</text> |
| | | </view> |
| | | <view class="registration-info"> |
| | | <text class="activity-title">{{item.activity.title}}</text> |
| | | <text class="registration-time">报名时间: {{formatDate(item.registrationTime)}}</text> |
| | | <text class="activity-time">活动时间: {{formatDate(item.activity.startTime)}}</text> |
| | | <view class="status-row"> |
| | | <text class="registration-status {{getStatusClass(item.status)}}"> |
| | | {{getStatusText(item.status)}} |
| | | </text> |
| | | <text class="activity-status"> |
| | | {{getActivityStatusText(item.activity.status)}} |
| | | </text> |
| | | </view> |
| | | </view> |
| | | <text class="item-arrow">></text> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | |
| | | <!-- 退出登录 --> |
| | | <view class="logout-section"> |
| | | <view class="logout-btn" bindtap="onLogout"> |
| | | <text class="logout-text">退出登录</text> |
| | | <view class="menu-item-simple" bindtap="onLogout"> |
| | | <text class="menu-icon">🚪</text> |
| | | <text class="menu-title">退出登录</text> |
| | | <text class="menu-arrow">></text> |
| | | </view> |
| | | </view> |
| | | </view> |