|
@@ -38,66 +38,81 @@
|
|
|
</template>
|
|
</template>
|
|
|
|
|
|
|
|
<!-- 登录后:五维能量条 -->
|
|
<!-- 登录后:五维能量条 -->
|
|
|
- <FamilyEnergyBar
|
|
|
|
|
- v-if="isLoggedIn"
|
|
|
|
|
- dimensionCode="mind"
|
|
|
|
|
- :sandboxData="sandboxData" />
|
|
|
|
|
|
|
+ <view v-if="hasFamily">
|
|
|
|
|
+ <FamilyEnergyBar
|
|
|
|
|
+ v-if="isLoggedIn"
|
|
|
|
|
+ dimensionCode="mind"
|
|
|
|
|
+ :sandboxData="sandboxData" />
|
|
|
|
|
+ </view>
|
|
|
|
|
+ <view v-else>
|
|
|
|
|
+ <FamilyEmptyState type="card" />
|
|
|
|
|
+ </view>
|
|
|
|
|
|
|
|
<!-- 心理报告卡片(登录后可见) -->
|
|
<!-- 心理报告卡片(登录后可见) -->
|
|
|
- <view class="emi-card" v-if="isLoggedIn && emiData">
|
|
|
|
|
- <view class="emi-header">
|
|
|
|
|
- <text class="emi-title">心理测评报告</text>
|
|
|
|
|
- <view class="emi-overall-wrap">
|
|
|
|
|
- <text class="emi-overall-label">综合EQ分</text>
|
|
|
|
|
- <text class="emi-overall-value">{{ emiData.overallScore || 0 }}</text>
|
|
|
|
|
- <text :class="['emi-overall-level', 'level-' + getScoreLevel(emiData.overallScore || 0)]">
|
|
|
|
|
- {{ getScoreLevelText(emiData.overallScore || 0) }}
|
|
|
|
|
- </text>
|
|
|
|
|
|
|
+ <view v-if="hasFamily">
|
|
|
|
|
+ <view class="emi-card" v-if="isLoggedIn && emiData">
|
|
|
|
|
+ <view class="emi-header">
|
|
|
|
|
+ <text class="emi-title">心理测评报告</text>
|
|
|
|
|
+ <view class="emi-overall-wrap">
|
|
|
|
|
+ <text class="emi-overall-label">综合EQ分</text>
|
|
|
|
|
+ <text class="emi-overall-value">{{ emiData.overallScore || 0 }}</text>
|
|
|
|
|
+ <text :class="['emi-overall-level', 'level-' + getScoreLevel(emiData.overallScore || 0)]">
|
|
|
|
|
+ {{ getScoreLevelText(emiData.overallScore || 0) }}
|
|
|
|
|
+ </text>
|
|
|
|
|
+ </view>
|
|
|
</view>
|
|
</view>
|
|
|
- </view>
|
|
|
|
|
- <view class="emi-dimensions">
|
|
|
|
|
- <view class="emi-dimension" v-for="dim in emiDimensions" :key="dim.key">
|
|
|
|
|
- <view class="emi-dim-header">
|
|
|
|
|
- <text class="emi-dim-label">{{ dim.label }}</text>
|
|
|
|
|
- <view class="emi-dim-values">
|
|
|
|
|
- <text class="emi-dim-score">{{ emiData[dim.key] || 0 }}</text>
|
|
|
|
|
- <text :class="['emi-dim-level', 'level-' + getScoreLevel(emiData[dim.key] || 0)]">
|
|
|
|
|
- {{ getScoreLevelText(emiData[dim.key] || 0) }}
|
|
|
|
|
- </text>
|
|
|
|
|
|
|
+ <view class="emi-dimensions">
|
|
|
|
|
+ <view class="emi-dimension" v-for="dim in emiDimensions" :key="dim.key">
|
|
|
|
|
+ <view class="emi-dim-header">
|
|
|
|
|
+ <text class="emi-dim-label">{{ dim.label }}</text>
|
|
|
|
|
+ <view class="emi-dim-values">
|
|
|
|
|
+ <text class="emi-dim-score">{{ emiData[dim.key] || 0 }}</text>
|
|
|
|
|
+ <text :class="['emi-dim-level', 'level-' + getScoreLevel(emiData[dim.key] || 0)]">
|
|
|
|
|
+ {{ getScoreLevelText(emiData[dim.key] || 0) }}
|
|
|
|
|
+ </text>
|
|
|
|
|
+ </view>
|
|
|
|
|
+ </view>
|
|
|
|
|
+ <view class="emi-dim-bar">
|
|
|
|
|
+ <view class="emi-dim-bar-fill" :style="{ width: (emiData[dim.key] || 0) + '%', background: dim.color }"></view>
|
|
|
</view>
|
|
</view>
|
|
|
- </view>
|
|
|
|
|
- <view class="emi-dim-bar">
|
|
|
|
|
- <view class="emi-dim-bar-fill" :style="{ width: (emiData[dim.key] || 0) + '%', background: dim.color }"></view>
|
|
|
|
|
</view>
|
|
</view>
|
|
|
</view>
|
|
</view>
|
|
|
|
|
+ <view class="emi-footer" @click="goEmotionReport">
|
|
|
|
|
+ <text class="emi-footer-text">查看详情</text>
|
|
|
|
|
+ <text class="emi-footer-icon">→</text>
|
|
|
|
|
+ </view>
|
|
|
</view>
|
|
</view>
|
|
|
- <view class="emi-footer" @click="goEmotionReport">
|
|
|
|
|
- <text class="emi-footer-text">查看详情</text>
|
|
|
|
|
- <text class="emi-footer-icon">→</text>
|
|
|
|
|
- </view>
|
|
|
|
|
|
|
+ </view>
|
|
|
|
|
+ <view v-else>
|
|
|
|
|
+ <FamilyEmptyState type="card" />
|
|
|
</view>
|
|
</view>
|
|
|
|
|
|
|
|
- <!-- 肠脑轴情绪卡片 -->
|
|
|
|
|
- <view class="section" v-if="gutIndicators && gutIndicators.length > 0">
|
|
|
|
|
- <view class="section-header">
|
|
|
|
|
- <text class="section-title">🧠 肠脑情绪关联</text>
|
|
|
|
|
- </view>
|
|
|
|
|
- <view class="gut-insight-text" v-if="gutInsight">
|
|
|
|
|
- <text>{{ gutInsight }}</text>
|
|
|
|
|
- </view>
|
|
|
|
|
- <view class="gut-indicator-list">
|
|
|
|
|
- <view class="gut-indicator-item" v-for="ind in gutIndicators" :key="ind.id">
|
|
|
|
|
- <view class="gut-indicator-left">
|
|
|
|
|
- <text class="gut-indicator-name">{{ ind.indicatorName || ind.name }}</text>
|
|
|
|
|
- </view>
|
|
|
|
|
- <view class="gut-indicator-bar-track">
|
|
|
|
|
- <view class="gut-indicator-bar-fill" :style="{ width: (ind.value || 0) + '%', background: indicatorColor(ind.status) }"></view>
|
|
|
|
|
|
|
+ <!-- 肠脑轴情绪卡片 -->
|
|
|
|
|
+ <view v-if="hasFamily">
|
|
|
|
|
+ <view class="section" v-if="gutIndicators && gutIndicators.length > 0">
|
|
|
|
|
+ <view class="section-header">
|
|
|
|
|
+ <text class="section-title">🧠 肠脑情绪关联</text>
|
|
|
|
|
+ </view>
|
|
|
|
|
+ <view class="gut-insight-text" v-if="gutInsight">
|
|
|
|
|
+ <text>{{ gutInsight }}</text>
|
|
|
|
|
+ </view>
|
|
|
|
|
+ <view class="gut-indicator-list">
|
|
|
|
|
+ <view class="gut-indicator-item" v-for="ind in gutIndicators" :key="ind.id">
|
|
|
|
|
+ <view class="gut-indicator-left">
|
|
|
|
|
+ <text class="gut-indicator-name">{{ ind.indicatorName || ind.name }}</text>
|
|
|
|
|
+ </view>
|
|
|
|
|
+ <view class="gut-indicator-bar-track">
|
|
|
|
|
+ <view class="gut-indicator-bar-fill" :style="{ width: (ind.value || 0) + '%', background: indicatorColor(ind.status) }"></view>
|
|
|
|
|
+ </view>
|
|
|
|
|
+ <text class="gut-indicator-value">{{ ind.value }}{{ ind.unit || '%' }}</text>
|
|
|
|
|
+ <text :class="['gut-indicator-status', 'status-' + (ind.status || 'normal')]">{{ statusLabel(ind.status) }}</text>
|
|
|
|
|
+ </view>
|
|
|
|
|
+ </view>
|
|
|
</view>
|
|
</view>
|
|
|
- <text class="gut-indicator-value">{{ ind.value }}{{ ind.unit || '%' }}</text>
|
|
|
|
|
- <text :class="['gut-indicator-status', 'status-' + (ind.status || 'normal')]">{{ statusLabel(ind.status) }}</text>
|
|
|
|
|
</view>
|
|
</view>
|
|
|
- </view>
|
|
|
|
|
- </view>
|
|
|
|
|
|
|
+ <view v-else>
|
|
|
|
|
+ <FamilyEmptyState type="card" />
|
|
|
|
|
+ </view>
|
|
|
|
|
|
|
|
<!-- ===== 底部:维度任务/活动/商品 ===== -->
|
|
<!-- ===== 底部:维度任务/活动/商品 ===== -->
|
|
|
<DimensionTasks
|
|
<DimensionTasks
|
|
@@ -267,6 +282,9 @@ components: { TabTransition, PageBanner, RadarChart, LoginGuideCard, FamilyEnerg
|
|
|
}
|
|
}
|
|
|
},
|
|
},
|
|
|
computed: {
|
|
computed: {
|
|
|
|
|
+ hasFamily: function() {
|
|
|
|
|
+ return this.$store.getters.hasFamily
|
|
|
|
|
+ },
|
|
|
personalityScores: function() {
|
|
personalityScores: function() {
|
|
|
if (!this.emiData) return []
|
|
if (!this.emiData) return []
|
|
|
return [
|
|
return [
|