|
@@ -54,10 +54,21 @@
|
|
|
tagline="知行合一 · 快乐成长"
|
|
tagline="知行合一 · 快乐成长"
|
|
|
quote="千里之行,始于足下" />
|
|
quote="千里之行,始于足下" />
|
|
|
|
|
|
|
|
|
|
+ <!-- 能量沙盘 — Canvas 五行星图 -->
|
|
|
|
|
+ <WuxingSandbox
|
|
|
|
|
+ v-if="sandboxData"
|
|
|
|
|
+ mode="live"
|
|
|
|
|
+ :scores="sandboxScores"
|
|
|
|
|
+ :overallScore="sandboxData.overallScore || 0"
|
|
|
|
|
+ :members="sandboxData.members || []"
|
|
|
|
|
+ showDimensionBar
|
|
|
|
|
+ starHeight="480rpx" />
|
|
|
|
|
+
|
|
|
<!-- 家庭成员选择条 -->
|
|
<!-- 家庭成员选择条 -->
|
|
|
<FamilyMemberStrip
|
|
<FamilyMemberStrip
|
|
|
:members="familyMembersVisible"
|
|
:members="familyMembersVisible"
|
|
|
:selectedMemberId="selectedMemberId"
|
|
:selectedMemberId="selectedMemberId"
|
|
|
|
|
+ :energyMap="energyMapForGraph"
|
|
|
@select="onFamilyMemberSelect" />
|
|
@select="onFamilyMemberSelect" />
|
|
|
|
|
|
|
|
<!-- 五维能量条 -->
|
|
<!-- 五维能量条 -->
|
|
@@ -67,21 +78,16 @@
|
|
|
:sandboxData="sandboxData"
|
|
:sandboxData="sandboxData"
|
|
|
:dualDimension="dualDimension" />
|
|
:dualDimension="dualDimension" />
|
|
|
|
|
|
|
|
- <!-- 能量沙盘 — Canvas 五行星图 -->
|
|
|
|
|
- <WuxingSandbox
|
|
|
|
|
- v-if="sandboxData"
|
|
|
|
|
- mode="live"
|
|
|
|
|
- :scores="{
|
|
|
|
|
- body: sandboxData.bodyScore || 0,
|
|
|
|
|
- mind: sandboxData.mindScore || 0,
|
|
|
|
|
- wisdom: sandboxData.wisdomScore || 0,
|
|
|
|
|
- action: sandboxData.actionScore || 0,
|
|
|
|
|
- wealth: sandboxData.wealthScore || 0
|
|
|
|
|
- }"
|
|
|
|
|
- :overallScore="sandboxData.overallScore || 0"
|
|
|
|
|
- :members="sandboxData.members || []"
|
|
|
|
|
- showDimensionBar
|
|
|
|
|
- starHeight="480rpx" />
|
|
|
|
|
|
|
+ <!-- 家庭挑战任务 -->
|
|
|
|
|
+ <view class="section challenge-section" v-if="isLoggedIn && activeChallenges.length > 0">
|
|
|
|
|
+ <view class="section-header">
|
|
|
|
|
+ <text class="section-title">🔥 家庭挑战</text>
|
|
|
|
|
+ </view>
|
|
|
|
|
+ <FamilyChallengeCard
|
|
|
|
|
+ v-for="ch in activeChallenges"
|
|
|
|
|
+ :key="ch.id"
|
|
|
|
|
+ :challenge="ch" />
|
|
|
|
|
+ </view>
|
|
|
|
|
|
|
|
<!-- 今日行动任务 -->
|
|
<!-- 今日行动任务 -->
|
|
|
<DimensionTasks
|
|
<DimensionTasks
|
|
@@ -111,11 +117,45 @@
|
|
|
@productClick="goProductDetail"
|
|
@productClick="goProductDetail"
|
|
|
@moreProducts="goMoreProducts" />
|
|
@moreProducts="goMoreProducts" />
|
|
|
|
|
|
|
|
- <!-- ===== 重要关系维护(章鱼图) ===== -->
|
|
|
|
|
- <OctopusGraph
|
|
|
|
|
- :contactList="contactList"
|
|
|
|
|
- :healthAlerts="healthAlerts"
|
|
|
|
|
- :isLoggedIn="true" />
|
|
|
|
|
|
|
+ <!-- ===== 我的圈子 ===== -->
|
|
|
|
|
+ <view class="circle-section" v-if="isLoggedIn">
|
|
|
|
|
+ <view class="circle-header">
|
|
|
|
|
+ <text class="circle-section-title">🤝 我的圈子</text>
|
|
|
|
|
+ <text class="circle-header-link" @click="goDiscoverCircles">发现更多 ›</text>
|
|
|
|
|
+ </view>
|
|
|
|
|
+ <scroll-view class="circle-scroll" scroll-x enable-flex v-if="myCircles.length > 0">
|
|
|
|
|
+ <view class="circle-scroll-inner">
|
|
|
|
|
+ <view class="circle-card-wrap" v-for="item in myCircles" :key="getCircleKey(item)" @click="onCircleClick(item)">
|
|
|
|
|
+ <CircleCard :circle="item" compact />
|
|
|
|
|
+ </view>
|
|
|
|
|
+ </view>
|
|
|
|
|
+ </scroll-view>
|
|
|
|
|
+ <view class="circle-empty" v-else>
|
|
|
|
|
+ <text class="circle-empty-text">暂未加入圈子,去发现看看</text>
|
|
|
|
|
+ </view>
|
|
|
|
|
+
|
|
|
|
|
+ <!-- ===== 发现推荐 ===== -->
|
|
|
|
|
+ <view class="circle-discover" v-if="discoverCirclesList.length > 0">
|
|
|
|
|
+ <view class="circle-header">
|
|
|
|
|
+ <text class="circle-section-title">🔍 发现推荐</text>
|
|
|
|
|
+ <text class="circle-header-link" @click="goDiscoverCircles">查看更多 ›</text>
|
|
|
|
|
+ </view>
|
|
|
|
|
+ <view class="discover-list">
|
|
|
|
|
+ <view class="discover-item" v-for="item in discoverCirclesList" :key="getCircleKey(item)" @click="onCircleClick(item)">
|
|
|
|
|
+ <CircleCard :circle="item" />
|
|
|
|
|
+ </view>
|
|
|
|
|
+ </view>
|
|
|
|
|
+ </view>
|
|
|
|
|
+ </view>
|
|
|
|
|
+
|
|
|
|
|
+ <!-- 圈子详情弹窗 -->
|
|
|
|
|
+ <CircleDetail
|
|
|
|
|
+ :visible="circleDetailVisible"
|
|
|
|
|
+ :circle="detailCircle"
|
|
|
|
|
+ :isMember="selectedCircleIsMember"
|
|
|
|
|
+ @close="circleDetailVisible = false"
|
|
|
|
|
+ @join="onCircleJoin"
|
|
|
|
|
+ @leave="onCircleLeave" />
|
|
|
|
|
|
|
|
<!-- 功能入口 -->
|
|
<!-- 功能入口 -->
|
|
|
<view class="func-section">
|
|
<view class="func-section">
|
|
@@ -129,12 +169,6 @@
|
|
|
</view>
|
|
</view>
|
|
|
</view>
|
|
</view>
|
|
|
|
|
|
|
|
- <!-- 导入联系人弹窗 -->
|
|
|
|
|
- <ContactImport
|
|
|
|
|
- :visible="showImportModal"
|
|
|
|
|
- @close="onCloseImport"
|
|
|
|
|
- @success="onImportSuccess" />
|
|
|
|
|
-
|
|
|
|
|
<!-- 底部占位 -->
|
|
<!-- 底部占位 -->
|
|
|
<view class="bottom-spacer" style="height: 40rpx;"></view>
|
|
<view class="bottom-spacer" style="height: 40rpx;"></view>
|
|
|
</view>
|
|
</view>
|
|
@@ -316,10 +350,11 @@ import DimensionTasks from '../../components/DimensionTasks.vue'
|
|
|
import DimensionActivities from '../../components/DimensionActivities.vue'
|
|
import DimensionActivities from '../../components/DimensionActivities.vue'
|
|
|
import DimensionProducts from '../../components/DimensionProducts.vue'
|
|
import DimensionProducts from '../../components/DimensionProducts.vue'
|
|
|
import DimensionArticles from '../../components/DimensionArticles.vue'
|
|
import DimensionArticles from '../../components/DimensionArticles.vue'
|
|
|
-import OctopusGraph from '../../components/OctopusGraph.vue'
|
|
|
|
|
-import ContactImport from '../../components/ContactImport.vue'
|
|
|
|
|
|
|
+import CircleCard from '../../components/CircleCard.vue'
|
|
|
|
|
+import CircleDetail from '../../components/CircleDetail.vue'
|
|
|
import LoginGuideCard from '../../components/LoginGuideCard.vue'
|
|
import LoginGuideCard from '../../components/LoginGuideCard.vue'
|
|
|
-import { acceptParentInvite, productList, getActivityList, getFeaturedArticles, getFamilyEnergySandbox, getVisibleFamilyMembers, getTodayTasksByCategory, getChildren, getEnergyOverview, getProductsByDomain, getHealthAlerts, getContactList } from '../../utils/api.js'
|
|
|
|
|
|
|
+import FamilyChallengeCard from '../../components/FamilyChallengeCard.vue'
|
|
|
|
|
+import { acceptParentInvite, productList, getActivityList, getFeaturedArticles, getFamilyEnergySandbox, getVisibleFamilyMembers, getTodayTasksByCategory, getChildren, getEnergyOverview, getProductsByDomain, getChallengeList, getMyCircles, discoverCircles, joinGeneralCircle, leaveGeneralCircle } from '../../utils/api.js'
|
|
|
|
|
|
|
|
var DIMENSIONS = [
|
|
var DIMENSIONS = [
|
|
|
{ code: 'body', name: '身', icon: '🌏', color: '#8D6E63', bgColor: 'rgba(141,110,99,0.15)', title: '主动健康', desc: '用最适合的方法,从根源调理家人体质,畅享高质量长寿生活' },
|
|
{ code: 'body', name: '身', icon: '🌏', color: '#8D6E63', bgColor: 'rgba(141,110,99,0.15)', title: '主动健康', desc: '用最适合的方法,从根源调理家人体质,畅享高质量长寿生活' },
|
|
@@ -340,9 +375,10 @@ export default {
|
|
|
DimensionActivities,
|
|
DimensionActivities,
|
|
|
DimensionProducts,
|
|
DimensionProducts,
|
|
|
DimensionArticles,
|
|
DimensionArticles,
|
|
|
- OctopusGraph,
|
|
|
|
|
- ContactImport,
|
|
|
|
|
- LoginGuideCard
|
|
|
|
|
|
|
+ CircleCard,
|
|
|
|
|
+ CircleDetail,
|
|
|
|
|
+ LoginGuideCard,
|
|
|
|
|
+ FamilyChallengeCard
|
|
|
},
|
|
},
|
|
|
data() {
|
|
data() {
|
|
|
// 从 storage 预取登录态/角色,确保首次渲染即正确(WeChat 渲染层/逻辑层分离架构下 onLoad 执行前已渲染)
|
|
// 从 storage 预取登录态/角色,确保首次渲染即正确(WeChat 渲染层/逻辑层分离架构下 onLoad 执行前已渲染)
|
|
@@ -396,9 +432,12 @@ export default {
|
|
|
articles: [],
|
|
articles: [],
|
|
|
children: [],
|
|
children: [],
|
|
|
currentChildId: null,
|
|
currentChildId: null,
|
|
|
- contactList: [],
|
|
|
|
|
- showImportModal: false,
|
|
|
|
|
- healthAlerts: [],
|
|
|
|
|
|
|
+ activeChallenges: [],
|
|
|
|
|
+ myCircles: [],
|
|
|
|
|
+ discoverCirclesList: [],
|
|
|
|
|
+ circleDetailVisible: false,
|
|
|
|
|
+ detailCircle: null,
|
|
|
|
|
+ selectedCircleIsMember: false,
|
|
|
funcList: [
|
|
funcList: [
|
|
|
{ icon: '\u{1F3CB}', label: '任务', needLogin: true, page: '/pages/tasks/tasks' },
|
|
{ icon: '\u{1F3CB}', label: '任务', needLogin: true, page: '/pages/tasks/tasks' },
|
|
|
{ icon: '\u{1F3C0}', label: '活动', needLogin: false, page: '/pages/discover/index?type=activity' },
|
|
{ icon: '\u{1F3C0}', label: '活动', needLogin: false, page: '/pages/discover/index?type=activity' },
|
|
@@ -409,6 +448,27 @@ export default {
|
|
|
}
|
|
}
|
|
|
},
|
|
},
|
|
|
computed: {
|
|
computed: {
|
|
|
|
|
+ sandboxScores: function() {
|
|
|
|
|
+ var d = this.sandboxData || {}
|
|
|
|
|
+ return {
|
|
|
|
|
+ body: d.bodyScore || 0,
|
|
|
|
|
+ mind: d.mindScore || 0,
|
|
|
|
|
+ wisdom: d.wisdomScore || 0,
|
|
|
|
|
+ action: d.actionScore || 0,
|
|
|
|
|
+ wealth: d.wealthScore || 0
|
|
|
|
|
+ }
|
|
|
|
|
+ },
|
|
|
|
|
+ energyMapForGraph: function() {
|
|
|
|
|
+ var map = {}
|
|
|
|
|
+ var members = this.sandboxData && this.sandboxData.members || []
|
|
|
|
|
+ for (var i = 0; i < members.length; i++) {
|
|
|
|
|
+ var m = members[i]
|
|
|
|
|
+ if (m.memberId && m.actionScore !== undefined) {
|
|
|
|
|
+ map[m.memberId] = m.actionScore
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ return map
|
|
|
|
|
+ },
|
|
|
actionArticles: function() {
|
|
actionArticles: function() {
|
|
|
if (!this.articles || this.articles.length === 0) return []
|
|
if (!this.articles || this.articles.length === 0) return []
|
|
|
var result = []
|
|
var result = []
|
|
@@ -420,6 +480,12 @@ export default {
|
|
|
}
|
|
}
|
|
|
if (result.length === 0) return this.articles.slice(0, 5)
|
|
if (result.length === 0) return this.articles.slice(0, 5)
|
|
|
return result.slice(0, 5)
|
|
return result.slice(0, 5)
|
|
|
|
|
+ },
|
|
|
|
|
+ dimList: function() {
|
|
|
|
|
+ return DIMENSIONS
|
|
|
|
|
+ },
|
|
|
|
|
+ energyDotColors: function() {
|
|
|
|
|
+ return ['#8D6E63', '#FF6B35', '#FFD700', '#4CAF50', '#42A5F5']
|
|
|
}
|
|
}
|
|
|
},
|
|
},
|
|
|
onLoad(options) {
|
|
onLoad(options) {
|
|
@@ -483,7 +549,6 @@ export default {
|
|
|
// ===== 登录态数据加载 =====
|
|
// ===== 登录态数据加载 =====
|
|
|
loadLoggedInData: function() {
|
|
loadLoggedInData: function() {
|
|
|
this.loadFamilyMembers()
|
|
this.loadFamilyMembers()
|
|
|
- this.loadContacts()
|
|
|
|
|
this.loadChildren()
|
|
this.loadChildren()
|
|
|
},
|
|
},
|
|
|
loadChildren: function() {
|
|
loadChildren: function() {
|
|
@@ -506,6 +571,9 @@ export default {
|
|
|
this.loadActionActivities()
|
|
this.loadActionActivities()
|
|
|
this.loadActionProducts()
|
|
this.loadActionProducts()
|
|
|
this.loadActionArticles()
|
|
this.loadActionArticles()
|
|
|
|
|
+ this.loadChallenges()
|
|
|
|
|
+ this.loadMyCircles()
|
|
|
|
|
+ this.loadDiscoverCircles()
|
|
|
},
|
|
},
|
|
|
loadEnergyData: function() {
|
|
loadEnergyData: function() {
|
|
|
var self = this
|
|
var self = this
|
|
@@ -590,31 +658,74 @@ export default {
|
|
|
}
|
|
}
|
|
|
}).catch(function() {})
|
|
}).catch(function() {})
|
|
|
},
|
|
},
|
|
|
- loadFamilyMembers: function() {
|
|
|
|
|
|
|
+ loadChallenges: function() {
|
|
|
|
|
+ var familyId = uni.getStorageSync('familyId')
|
|
|
|
|
+ if (!familyId) return
|
|
|
var self = this
|
|
var self = this
|
|
|
- getVisibleFamilyMembers().then(function(res) {
|
|
|
|
|
|
|
+ getChallengeList({ familyId: familyId }).then(function(res) {
|
|
|
|
|
+ if (res.code === 200 && Array.isArray(res.data)) {
|
|
|
|
|
+ self.activeChallenges = res.data
|
|
|
|
|
+ }
|
|
|
|
|
+ }).catch(function() {
|
|
|
|
|
+ self.activeChallenges = []
|
|
|
|
|
+ })
|
|
|
|
|
+ },
|
|
|
|
|
+ loadMyCircles: function() {
|
|
|
|
|
+ var self = this
|
|
|
|
|
+ getMyCircles({}).then(function(res) {
|
|
|
if (res.code === 200 && res.data) {
|
|
if (res.code === 200 && res.data) {
|
|
|
- self.familyMembersVisible = Array.isArray(res.data) ? res.data : (res.data.list || [])
|
|
|
|
|
|
|
+ self.myCircles = Array.isArray(res.data) ? res.data : (res.data.list || [])
|
|
|
}
|
|
}
|
|
|
- }).catch(function() {})
|
|
|
|
|
|
|
+ }).catch(function() { self.myCircles = [] })
|
|
|
},
|
|
},
|
|
|
- loadContacts: function() {
|
|
|
|
|
|
|
+ loadDiscoverCircles: function() {
|
|
|
var self = this
|
|
var self = this
|
|
|
- getContactList({}).then(function(res) {
|
|
|
|
|
|
|
+ discoverCircles({ page: 1, size: 3 }).then(function(res) {
|
|
|
if (res.code === 200 && res.data) {
|
|
if (res.code === 200 && res.data) {
|
|
|
- self.contactList = Array.isArray(res.data) ? res.data : []
|
|
|
|
|
|
|
+ self.discoverCirclesList = Array.isArray(res.data) ? res.data : (res.data.list || [])
|
|
|
|
|
+ }
|
|
|
|
|
+ }).catch(function() { self.discoverCirclesList = [] })
|
|
|
|
|
+ },
|
|
|
|
|
+ getCircleKey: function(item) {
|
|
|
|
|
+ return item.id || item.circleId || Math.random()
|
|
|
|
|
+ },
|
|
|
|
|
+ onCircleClick: function(item) {
|
|
|
|
|
+ this.detailCircle = item
|
|
|
|
|
+ this.selectedCircleIsMember = item.isMember || false
|
|
|
|
|
+ this.circleDetailVisible = true
|
|
|
|
|
+ },
|
|
|
|
|
+ onCircleJoin: function(circle) {
|
|
|
|
|
+ var self = this
|
|
|
|
|
+ joinGeneralCircle({ circleId: circle.id }).then(function(res) {
|
|
|
|
|
+ if (res.code === 200) {
|
|
|
|
|
+ self.circleDetailVisible = false
|
|
|
|
|
+ self.loadMyCircles()
|
|
|
|
|
+ self.loadDiscoverCircles()
|
|
|
|
|
+ uni.showToast({ title: '加入成功', icon: 'success' })
|
|
|
}
|
|
}
|
|
|
}).catch(function() {})
|
|
}).catch(function() {})
|
|
|
},
|
|
},
|
|
|
- onShowImport: function() {
|
|
|
|
|
- this.showImportModal = true
|
|
|
|
|
|
|
+ onCircleLeave: function(circle) {
|
|
|
|
|
+ var self = this
|
|
|
|
|
+ leaveGeneralCircle({ circleId: circle.id }).then(function(res) {
|
|
|
|
|
+ if (res.code === 200) {
|
|
|
|
|
+ self.circleDetailVisible = false
|
|
|
|
|
+ self.loadMyCircles()
|
|
|
|
|
+ self.loadDiscoverCircles()
|
|
|
|
|
+ uni.showToast({ title: '已退出', icon: 'none' })
|
|
|
|
|
+ }
|
|
|
|
|
+ }).catch(function() {})
|
|
|
},
|
|
},
|
|
|
- onCloseImport: function() {
|
|
|
|
|
- this.showImportModal = false
|
|
|
|
|
|
|
+ goDiscoverCircles: function() {
|
|
|
|
|
+ uni.navigateTo({ url: '/pages/discover/circles' })
|
|
|
},
|
|
},
|
|
|
- onImportSuccess: function() {
|
|
|
|
|
- this.showImportModal = false
|
|
|
|
|
- this.loadContacts()
|
|
|
|
|
|
|
+ loadFamilyMembers: function() {
|
|
|
|
|
+ var self = this
|
|
|
|
|
+ getVisibleFamilyMembers().then(function(res) {
|
|
|
|
|
+ if (res.code === 200 && res.data) {
|
|
|
|
|
+ self.familyMembersVisible = Array.isArray(res.data) ? res.data : (res.data.list || [])
|
|
|
|
|
+ }
|
|
|
|
|
+ }).catch(function() {})
|
|
|
},
|
|
},
|
|
|
parseRelatedDimensions: function(val) {
|
|
parseRelatedDimensions: function(val) {
|
|
|
if (!val) return []
|
|
if (!val) return []
|
|
@@ -638,6 +749,10 @@ export default {
|
|
|
goTasks: function() {
|
|
goTasks: function() {
|
|
|
uni.switchTab({ url: '/pages/tasks/tasks' })
|
|
uni.switchTab({ url: '/pages/tasks/tasks' })
|
|
|
},
|
|
},
|
|
|
|
|
+ goMemberDetail: function(member) {
|
|
|
|
|
+ if (!member || !member.memberId) return
|
|
|
|
|
+ uni.navigateTo({ url: '/pages/child/child-detail?id=' + member.memberId })
|
|
|
|
|
+ },
|
|
|
goActivityDetail: function(act) {
|
|
goActivityDetail: function(act) {
|
|
|
if (!act || !act.id) return
|
|
if (!act || !act.id) return
|
|
|
uni.navigateTo({ url: '/pages/discover-detail/activity-detail/activity-detail?id=' + act.id })
|
|
uni.navigateTo({ url: '/pages/discover-detail/activity-detail/activity-detail?id=' + act.id })
|
|
@@ -882,15 +997,6 @@ export default {
|
|
|
}, 500)
|
|
}, 500)
|
|
|
},
|
|
},
|
|
|
|
|
|
|
|
- },
|
|
|
|
|
- computed: {
|
|
|
|
|
- dimList: function() {
|
|
|
|
|
- return DIMENSIONS
|
|
|
|
|
- },
|
|
|
|
|
-
|
|
|
|
|
- energyDotColors: function() {
|
|
|
|
|
- return ['#8D6E63', '#FF6B35', '#FFD700', '#4CAF50', '#42A5F5']
|
|
|
|
|
- }
|
|
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
</script>
|
|
</script>
|
|
@@ -1506,4 +1612,55 @@ export default {
|
|
|
color: #333;
|
|
color: #333;
|
|
|
font-weight: 500;
|
|
font-weight: 500;
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+/* ===== 圈子卡片 ===== */
|
|
|
|
|
+.circle-section {
|
|
|
|
|
+ margin: 20rpx 30rpx;
|
|
|
|
|
+}
|
|
|
|
|
+.circle-header {
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ justify-content: space-between;
|
|
|
|
|
+ align-items: center;
|
|
|
|
|
+ margin-bottom: 20rpx;
|
|
|
|
|
+}
|
|
|
|
|
+.circle-section-title {
|
|
|
|
|
+ font-size: 30rpx;
|
|
|
|
|
+ font-weight: bold;
|
|
|
|
|
+ color: #333;
|
|
|
|
|
+}
|
|
|
|
|
+.circle-header-link {
|
|
|
|
|
+ font-size: 24rpx;
|
|
|
|
|
+ color: #5B9BD5;
|
|
|
|
|
+}
|
|
|
|
|
+.circle-scroll {
|
|
|
|
|
+ white-space: nowrap;
|
|
|
|
|
+}
|
|
|
|
|
+.circle-scroll-inner {
|
|
|
|
|
+ display: inline-flex;
|
|
|
|
|
+ gap: 16rpx;
|
|
|
|
|
+}
|
|
|
|
|
+.circle-card-wrap {
|
|
|
|
|
+ display: inline-block;
|
|
|
|
|
+}
|
|
|
|
|
+.circle-empty {
|
|
|
|
|
+ padding: 40rpx 0;
|
|
|
|
|
+ text-align: center;
|
|
|
|
|
+}
|
|
|
|
|
+.circle-empty-text {
|
|
|
|
|
+ font-size: 26rpx;
|
|
|
|
|
+ color: #999;
|
|
|
|
|
+}
|
|
|
|
|
+.circle-discover {
|
|
|
|
|
+ margin-top: 30rpx;
|
|
|
|
|
+}
|
|
|
|
|
+.discover-list {
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ flex-direction: column;
|
|
|
|
|
+ gap: 16rpx;
|
|
|
|
|
+}
|
|
|
|
|
+.discover-item {
|
|
|
|
|
+ background: #fff;
|
|
|
|
|
+ border-radius: 16rpx;
|
|
|
|
|
+ overflow: hidden;
|
|
|
|
|
+}
|
|
|
</style>
|
|
</style>
|