瀏覽代碼

首页: 移除日常服务导航-沙龙独立成卡片区块+校友校验行可点击+平台动态仅课程

liaoxg 6 天之前
父節點
當前提交
4df65cb8a2
共有 1 個文件被更改,包括 31 次插入52 次删除
  1. 31 52
      train-frontend/pages/index/index.vue

+ 31 - 52
train-frontend/pages/index/index.vue

@@ -13,9 +13,12 @@
 
     <!-- 我的档案 -->
     <view class="status-card">
-      <view class="status-row">
+      <view class="status-row" @click="goTo('/pages/verify/index')">
         <text class="status-label">校友校验</text>
-        <text :class="['status-value', verifyClass]">{{ verifyLabel }}</text>
+        <view class="status-value-wrap">
+          <text :class="['status-value', verifyClass]">{{ verifyLabel }}</text>
+          <text class="status-arrow">›</text>
+        </view>
       </view>
       <view class="status-row">
         <text class="status-label">我的班级</text>
@@ -46,31 +49,6 @@
       <text class="growth-guide-text">登录后查看我的成长档案</text>
     </view>
 
-    <!-- 日常服务 -->
-    <view class="section-title">日常服务</view>
-    <view class="nav-grid">
-      <view class="nav-item" @click="switchToTab('/pages/course/index')">
-        <text class="nav-icon">📚</text>
-        <text class="nav-text">课程</text>
-      </view>
-      <view class="nav-item" @click="goTo('/pages/enroll/list')">
-        <text class="nav-icon">🎫</text>
-        <text class="nav-text">报名中心</text>
-      </view>
-      <view class="nav-item" @click="goTo('/pages/survey/index')">
-        <text class="nav-icon">📝</text>
-        <text class="nav-text">兴趣调研</text>
-      </view>
-      <view class="nav-item" @click="goTo('/pages/verify/index')">
-        <text class="nav-icon">🎓</text>
-        <text class="nav-text">校友校验</text>
-      </view>
-      <view class="nav-item" @click="goTo('/pages/salon/list')">
-        <text class="nav-icon">🎨</text>
-        <text class="nav-text">沙龙</text>
-      </view>
-    </view>
-
     <!-- 平台动态 -->
     <view class="section-title">平台动态</view>
     <view class="dynamic-list" v-if="dynamics.length">
@@ -99,6 +77,23 @@
       </swiper-item>
     </swiper>
 
+    <!-- 沙龙 -->
+    <view class="section-title">沙龙</view>
+    <view class="course-mini-list">
+      <view class="course-mini-card" v-for="(s, idx) in salonNews" :key="idx" @click="goSalon(s)">
+        <view class="course-mini-head">
+          <text class="course-mini-level">{{ mapTheme(s.theme) }}</text>
+          <text class="course-mini-name">{{ s.title }}</text>
+          <text class="course-mini-status" :class="s.num <= 0 ? 'st-finished' : 'st-upcoming'">{{ s.num <= 0 ? '已满' : '可报名' }}</text>
+        </view>
+        <text class="course-mini-desc">{{ formatDateTime(s.time) }} · {{ s.place }}</text>
+        <text class="course-mini-desc">余 {{ s.num }}/{{ s.capacity }} 位</text>
+      </view>
+      <view class="course-mini-empty" v-if="!salonNews.length && isLoggedIn">
+        <text class="course-mini-empty-text">暂无沙龙活动</text>
+      </view>
+    </view>
+
     <!-- 最近课程 -->
     <view class="section-title">最近课程</view>
     <view class="course-mini-list">
@@ -304,23 +299,11 @@ export default {
       }).catch(function() {})
     },
     buildDynamics() {
-      // 平台动态 = 沙龙(可报名,最多 2 条)+ 进行中/未开始课程(最多 2 条)
+      // 平台动态 = 进行中/未开始课程(最多 3 条);沙龙已独立成区块,避免重复
       var self = this
       var arr = []
-      var salons = this.salonNews || []
-      for (var i = 0; i < salons.length && arr.length < 2; i++) {
-        var s = salons[i]
-        arr.push({
-          type: 'salon',
-          tag: self.mapTheme(s.theme),
-          tagClass: 'dynamic-tag-salon',
-          title: s.title,
-          desc: formatDateTime(s.time) + ' · ' + (s.place || '') + ' · 余 ' + s.num + '/' + s.capacity,
-          url: '/pages/salon/list'
-        })
-      }
       var courses = this.recentCourses || []
-      for (var j = 0; j < courses.length && arr.length < 4; j++) {
+      for (var j = 0; j < courses.length && arr.length < 3; j++) {
         var c = courses[j]
         if (c.effectiveStatus !== 'active' && c.effectiveStatus !== 'upcoming') continue
         arr.push({
@@ -352,6 +335,9 @@ export default {
       if (!c || !c.id) return
       uni.navigateTo({ url: '/pages/course/detail?courseId=' + c.id })
     },
+    goSalon() {
+      uni.navigateTo({ url: '/pages/salon/list' })
+    },
     goDynamic(d) {
       if (!d || !d.url) return
       uni.navigateTo({ url: d.url })
@@ -396,9 +382,6 @@ export default {
     },
     goTo(url) {
       uni.navigateTo({ url: url })
-    },
-    switchToTab(url) {
-      uni.switchTab({ url: url })
     }
   }
 }
@@ -438,7 +421,9 @@ export default {
 .status-row { display: flex; justify-content: space-between; padding: 14rpx 0; border-bottom: 1rpx solid #F1F5F9; }
 .status-row:last-child { border-bottom: none; }
 .status-label { font-size: 28rpx; color: #5A4F4B; }
-.status-value { font-size: 28rpx; color: #2A2326; font-weight: 500; max-width: 420rpx; text-align: right; }
+.status-value-wrap { display: flex; align-items: center; max-width: 420rpx; }
+.status-value { font-size: 28rpx; color: #2A2326; font-weight: 500; max-width: 390rpx; text-align: right; }
+.status-arrow { font-size: 28rpx; color: #B6AA9F; margin-left: 8rpx; }
 .val-pass { color: #22C55E; }
 .val-pending { color: #FFB74D; }
 .val-fail { color: #EF5350; }
@@ -459,13 +444,8 @@ export default {
 .growth-card-guide { display: flex; align-items: center; justify-content: center; padding: 40rpx 32rpx; }
 .growth-guide-text { font-size: 26rpx; color: #94877F; }
 
-/* 日常服务 */
+/* 区块标题 */
 .section-title { font-size: 30rpx; font-weight: 600; color: #2A2326; margin-bottom: 16rpx; border-left: 8rpx solid #FC7A57; padding-left: 16rpx; }
-.nav-grid { display: flex; flex-wrap: nowrap; background: #FFF; border-radius: 16rpx; overflow: hidden; margin-bottom: 24rpx; }
-.nav-item { flex: 1; display: flex; flex-direction: column; align-items: center; padding: 28rpx 0; }
-.nav-item:active { background: #F8FAFC; }
-.nav-icon { font-size: 44rpx; margin-bottom: 8rpx; }
-.nav-text { font-size: 24rpx; color: #2A2326; text-align: center; }
 
 /* 平台动态 */
 .dynamic-list { background: #FFF; border-radius: 16rpx; overflow: hidden; margin-bottom: 24rpx; }
@@ -473,7 +453,6 @@ export default {
 .dynamic-item:last-child { border-bottom: none; }
 .dynamic-item:active { background: #FAF7F4; }
 .dynamic-tag { flex-shrink: 0; font-size: 22rpx; font-weight: 600; padding: 4rpx 14rpx; border-radius: 6rpx; margin-right: 16rpx; }
-.dynamic-tag-salon { background: #FFF0E8; color: #FC7A57; }
 .dynamic-tag-course { background: #EEF2FF; color: #7C3AED; }
 .dynamic-main { flex: 1; overflow: hidden; }
 .dynamic-title { display: block; font-size: 28rpx; font-weight: 600; color: #2A2326; margin-bottom: 4rpx; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }