lrj
昨天 9f8395fab13ca4b230a0f7d62636e209745c91d4
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
<!--pages/activity/detail.wxml-->
<view class="container" wx:if="{{!loading && activity}}">
  <!-- 头部媒体区域 -->
  <view class="media-section">
    <swiper 
      class="media-swiper" 
      indicator-dots="{{mediaFiles.length > 1}}" 
      autoplay="{{false}}" 
      duration="{{500}}"
    >
      <swiper-item 
        wx:for="{{mediaFiles}}" 
        wx:key="url"
        bindtap="onMediaTap"
        data-index="{{index}}"
      >
        <image 
          wx:if="{{item.type === 'image'}}"
          class="media-image" 
          src="{{item.url}}" 
          mode="aspectFill" 
        />
        <view wx:if="{{item.type === 'video'}}" class="video-wrapper">
          <image class="video-poster" src="{{item.url}}" mode="aspectFill" />
          <view class="video-play-btn">▶</view>
        </view>
      </swiper-item>
    </swiper>
    
    <!-- 状态标签 -->
    <view class="status-badge {{getStatusClass(activity.state)}}">
      {{getStatusText(activity.state)}}
    </view>
  </view>
 
  <!-- 基本信息 -->
  <view class="info-section card">
    <view class="card-body">
      <view class="activity-title">{{activity.name}}</view>
      <view class="activity-desc">{{activity.description}}</view>
      
      <!-- 时间信息 -->
      <view class="time-info">
        <view class="time-item">
          <view class="time-label">活动时间</view>
          <view class="time-value">{{activity.formattedMatchTime || '待定'}}</view>
        </view>
        <view class="time-item">
          <view class="time-label">报名截止</view>
          <view class="time-value">{{activity.formattedSignupDeadline || '待定'}}</view>
        </view>
      </view>
 
      <!-- 地点信息 -->
      <view class="location-info" wx:if="{{activity.address}}">
        <view class="location-label">📍 活动地点</view>
        <view class="location-value">
          <text class="address">{{activity.address}}</text>
        </view>
      </view>
 
      <!-- 报名进度 -->
      <view class="registration-progress" wx:if="{{activity.playerMax > 0}}">
        <view class="progress-header">
          <view class="progress-label">报名进度</view>
          <view class="progress-count">{{currentParticipants}}/{{activity.playerMax}}</view>
        </view>
        <view class="progress-bar">
          <view 
            class="progress-fill" 
            style="width: {{getRegistrationProgress()}}%"
          ></view>
        </view>
        <view class="progress-percent">{{getRegistrationProgress()}}%</view>
      </view>
 
    </view>
  </view>
 
 
 
  <!-- 底部操作栏 -->
  <view class="bottom-actions">
    <view class="action-left">
      <view class="share-btn" bindtap="onShareTap">
        <text class="share-icon">📤</text>
        <text class="share-text">分享</text>
      </view>
    </view>
    <view class="action-right">
      <!-- 统一的报名按钮 -->
      <view 
        class="register-btn btn {{registerButtonDisabled ? 'btn-disabled' : (canRegisterStatus ? 'btn-primary' : 'btn-secondary')}}"
        bindtap="onRegisterTap"
      >
        {{registerButtonText}}
      </view>
    </view>
  </view>
</view>
 
<!-- 加载状态 -->
<view class="loading-wrapper" wx:if="{{loading}}">
  <view class="loading"></view>
  <text class="loading-text">加载中...</text>
</view>
 
<!-- 视频预览弹窗 -->
<view class="media-preview-modal" wx:if="{{showMediaPreview}}" bindtap="closeMediaPreview">
  <view class="modal-content" catchtap="">
    <video 
      class="preview-video"
      src="{{mediaFiles[currentMediaIndex].url}}"
      controls="{{true}}"
      autoplay="{{true}}"
    ></video>
    <view class="close-btn" bindtap="closeMediaPreview">✕</view>
  </view>
</view>