lrj
7 小时以前 bec58fa7fe4fae2deac88200d8d939e12ec8a08f
wx/pages/profile/profile.wxml
@@ -8,186 +8,66 @@
  <!-- 个人信息区域 -->
  <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>