lrj
2 天以前 8337c34fcc761d07acaad796d10f3e12e9bbe2d1
wx/pages/profile/profile.wxml
@@ -8,187 +8,95 @@
  <!-- 个人信息区域 -->
  <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 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="stats-section">
      <view class="stats-grid">
        <view class="stat-item">
          <text class="stat-number">{{stats.totalRegistrations}}</text>
          <text class="stat-label">总报名</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>
      </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>
      <view class="menu-grid">
    <!-- 我的项目区域 -->
    <view class="projects-section">
      <text class="section-title">我的项目</text>
      <view class="project-list" wx:if="{{userProjects && userProjects.length > 0}}">
        <view 
          wx:for="{{judgeMenuItems}}"
          wx:key="path"
          class="menu-item"
          data-path="{{item.path}}"
          bindtap="onMenuItemTap"
          class="project-card"
          wx:for="{{userProjects}}"
          wx:key="id"
          bindtap="goToProjectDetail"
          data-project-id="{{item.id}}"
        >
          <view class="menu-icon-wrapper">
            <text class="icon {{item.iconName}}"></text>
            <view wx:if="{{item.badge > 0}}" class="badge">{{item.badge}}</view>
          <view class="project-icon">
            <!-- 如果有缩略图,显示图片 -->
            <image
              wx:if="{{item.thumbnailUrl}}"
              class="project-thumbnail"
              src="{{item.thumbnailUrl}}"
              mode="aspectFill"
            />
            <!-- 否则显示图标 -->
            <text wx:else class="icon {{item.icon}}"></text>
          </view>
          <text class="menu-title">{{item.title}}</text>
          <text class="menu-desc">{{item.desc}}</text>
          <view class="project-info">
            <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>
      <view class="empty-projects" wx:else>
        <text class="empty-icon">📋</text>
        <text class="empty-text">暂无项目</text>
        <text class="empty-desc">参加活动后,您的项目将在这里显示</text>
      </view>
    </view>
    <!-- 主办方专区 -->
    <view wx:if="{{isOrganizer}}" class="role-section">
    <!-- 我的评审区域 - 仅评委可见 -->
    <view class="review-section" wx:if="{{isJudge}}">
      <view class="section-header">
        <text class="section-title">主办方专区</text>
        <view class="organizer-stats">
          <text class="active-count">活跃活动: {{organizerStats.activeActivities}}</text>
        <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="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 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="logout-section">
      <view class="logout-btn" bindtap="onLogout">
        <text class="logout-text">退出登录</text>
      </view>
    </view>
  </view>
</view>