Эх сурвалжийг харах

fix: 统一五维首页推荐组件 — 顺序为活动→商品→阅读→推荐

action: 旧DimensionProducts→DimensionProductList, 移除RecommendedSection的v-if

wealth: 添加DimensionActivities, 添加loadDimensionActivities, 移除v-if

mind: ArticleBookshelf移到DimensionProductList之后, 移除v-if

统一顺序: DimensionActivities → DimensionProductList → ArticleBookshelf → RecommendedSection

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
liaoxg 1 сар өмнө
parent
commit
a47ef21041

+ 5 - 8
cfc-frontend/pages/action/index.vue

@@ -68,12 +68,10 @@
       @activityClick="goActivityDetail"
       @moreActivities="goMoreActivities" />
 
-    <DimensionProducts
+    <DimensionProductList
       dimensionCode="action"
-      :products="dimensionProducts"
-      :isLoggedIn="isLoggedIn"
-      @productClick="goProductDetail"
-      @moreProducts="goMoreProducts" />
+      :familyId="activeChildId"
+      title="为你推荐" />
 
     <!-- 推荐阅读 -->
     <ArticleBookshelf
@@ -115,7 +113,6 @@
 
         <!-- 推荐 -->
         <RecommendedSection
-          v-if="recommendItems.length > 0"
           :items="recommendItems"
           :hasMore="recommendHasMore"
           @itemClick="onRecommendItemClick"
@@ -154,7 +151,7 @@ import LoginGuideCard from '../../components/LoginGuideCard.vue'
 import FamilyEnergyBar from '../../components/FamilyEnergyBar.vue'
 import DimensionTasks from '../../components/DimensionTasks.vue'
 import DimensionActivities from '../../components/DimensionActivities.vue'
-import DimensionProducts from '../../components/DimensionProducts.vue'
+import DimensionProductList from '../../components/DimensionProductList.vue'
 import ArticleBookshelf from '../../components/ArticleBookshelf.vue'
 import CircleCard from '../../components/CircleCard.vue'
 import CircleDetail from '../../components/CircleDetail.vue'
@@ -167,7 +164,7 @@ import { getVisibleSections, getEnergyOverview, getFamilyEnergySandbox, getToday
 
 export default {
   mixins: [recommendMixin],
-  components: { TabTransition, PageBanner, LoginGuideCard, FamilyEnergyBar, DimensionTasks, DimensionActivities, DimensionProducts, ArticleBookshelf, FamilyRelationGraph, WuxingSandbox, FamilyMemberStrip, CircleCard, CircleDetail, RecommendedSection },
+  components: { TabTransition, PageBanner, LoginGuideCard, FamilyEnergyBar, DimensionTasks, DimensionActivities, DimensionProductList, ArticleBookshelf, FamilyRelationGraph, WuxingSandbox, FamilyMemberStrip, CircleCard, CircleDetail, RecommendedSection },
   data() {
     return {
       showTabTransition: true,

+ 7 - 8
cfc-frontend/pages/mind/index.vue

@@ -98,13 +98,6 @@
       </view>
     </view>
 
-    <!-- 推荐阅读 -->
-    <ArticleBookshelf
-      :articles="emotionArticles"
-      :isLoggedIn="isLoggedIn"
-      @articleClick="goArticleDetail"
-      @moreArticles="goArticles" />
-
     <!-- ===== 底部:维度任务/活动/商品 ===== -->
     <DimensionTasks
       v-if="isLoggedIn"
@@ -125,6 +118,13 @@
       :familyId="currentChildId"
       title="为你推荐" />
 
+    <!-- 推荐阅读 -->
+    <ArticleBookshelf
+      :articles="emotionArticles"
+      :isLoggedIn="isLoggedIn"
+      @articleClick="goArticleDetail"
+      @moreArticles="goArticles" />
+
     <!-- ===== Phase 1.2: 心理告警横幅 ===== -->
     <PsychCrisisBanner v-if="isLoggedIn" :childId="currentChildId" source="screening" />
 
@@ -152,7 +152,6 @@
 
     <!-- 个性化推荐 -->
     <RecommendedSection
-      v-if="recommendItems.length > 0"
       :items="recommendItems"
       :hasMore="recommendHasMore"
       @itemClick="onRecommendItemClick"

+ 31 - 4
cfc-frontend/pages/wealth/index.vue

@@ -172,6 +172,14 @@
         :familyId="activeChildId"
         title="为你推荐" />
 
+      <!-- 推荐活动 -->
+      <DimensionActivities
+        dimensionCode="wealth"
+        :activities="dimensionActivities"
+        :isLoggedIn="isLoggedIn"
+        @activityClick="goActivityDetail"
+        @moreActivities="goMoreActivities" />
+
       <!-- 推荐阅读 -->
       <ArticleBookshelf
         :articles="wealthArticles"
@@ -181,7 +189,6 @@
 
       <!-- 个性化推荐 -->
       <RecommendedSection
-        v-if="recommendItems.length > 0"
         :items="recommendItems"
         :hasMore="recommendHasMore"
         @itemClick="onRecommendItemClick"
@@ -211,6 +218,7 @@ import TabTransition from '../../components/tab-transition.vue'
 import PageBanner from '../../components/PageBanner.vue'
 import ArticleBookshelf from '../../components/ArticleBookshelf.vue'
 import DimensionProductList from '../../components/DimensionProductList.vue'
+import DimensionActivities from '../../components/DimensionActivities.vue'
 import WealthSubScores from '../../components/WealthSubScores.vue'
 import BodyWealthAlert from '../../components/BodyWealthAlert.vue'
 import FamilyMemberStrip from '../../components/FamilyMemberStrip.vue'
@@ -224,12 +232,13 @@ import {
   getReferralSummary,
   getCommissionSummary,
   getVisibleFamilyMembers,
-  getFeaturedArticles
+  getFeaturedArticles,
+  getActivityList
 } from '../../utils/api.js'
 
 export default {
   mixins: [recommendMixin],
-  components: { TabTransition, PageBanner, DimensionProductList, WealthSubScores, BodyWealthAlert, FamilyMemberStrip, RecommendedSection, ArticleBookshelf },
+  components: { TabTransition, PageBanner, DimensionProductList, DimensionActivities, WealthSubScores, BodyWealthAlert, FamilyMemberStrip, RecommendedSection, ArticleBookshelf },
   data() {
     return {
       showTabTransition: true,
@@ -268,7 +277,8 @@ export default {
       familyMembersVisible: [],
       selectedMemberId: null,
       wealthArticles: [],
-      articlesLoading: false
+      articlesLoading: false,
+      dimensionActivities: []
     }
   },
   computed: {
@@ -304,6 +314,7 @@ export default {
     this.loadFamilyMembersVisible()
     this.loadRecommendations('wealth')
     this.loadWealthArticles()
+    this.loadDimensionActivities()
     this._watchPageReady()
   },
   methods: {
@@ -313,6 +324,22 @@ export default {
     goMoreRecommend: function() {
       uni.navigateTo({ url: '/pages/discover/index' })
     },
+    loadDimensionActivities: function() {
+      var self = this
+      getActivityList({ dimensionCode: 'wealth', page: 1, size: 3 }).then(function(res) {
+        if (res && res.data) {
+          var list = Array.isArray(res.data) ? res.data : (res.data.records || [])
+          self.dimensionActivities = list.slice(0, 3)
+        }
+      }).catch(function() { self.dimensionActivities = [] })
+    },
+    goActivityDetail: function(act) {
+      if (!act || !act.id) return
+      uni.navigateTo({ url: '/pages/activity/activity-detail/activity-detail?id=' + act.id })
+    },
+    goMoreActivities: function() {
+      uni.navigateTo({ url: '/pages/discover/index?type=activity' })
+    },
     loadWealthArticles: function() {
       var self = this
       self.articlesLoading = true