|
@@ -356,6 +356,7 @@
|
|
|
<script>
|
|
<script>
|
|
|
import { getReportDetail, editHealthReport, queryKnowledgeBase, queryIndicatorKnowledge, getGutFloraAnalysis, confirmReportPreview, discardReportDraft, parseReportDraft, getHealthFoods, getFoodCautionList, getFamilyMemberList, addFamilyMember, getIndicatorChangeRanking } from '../../utils/api.js'
|
|
import { getReportDetail, editHealthReport, queryKnowledgeBase, queryIndicatorKnowledge, getGutFloraAnalysis, confirmReportPreview, discardReportDraft, parseReportDraft, getHealthFoods, getFoodCautionList, getFamilyMemberList, addFamilyMember, getIndicatorChangeRanking } from '../../utils/api.js'
|
|
|
import HealthKnowledgePopup from '@/pages/health/components/health-knowledge-popup.vue'
|
|
import HealthKnowledgePopup from '@/pages/health/components/health-knowledge-popup.vue'
|
|
|
|
|
+import { BrandColors } from '../../utils/brand-colors.js'
|
|
|
import FeedbackPopup from '@/pages/health/components/feedback-popup.vue'
|
|
import FeedbackPopup from '@/pages/health/components/feedback-popup.vue'
|
|
|
import { parseDate } from '../../utils/format.js'
|
|
import { parseDate } from '../../utils/format.js'
|
|
|
import { resolveChangeStyle, formatDelta, colorClassFor } from '../../utils/indicator-change.js'
|
|
import { resolveChangeStyle, formatDelta, colorClassFor } from '../../utils/indicator-change.js'
|
|
@@ -791,15 +792,15 @@ applyDraftPayload: function(payload) {
|
|
|
var s = r.summary || r
|
|
var s = r.summary || r
|
|
|
var items = []
|
|
var items = []
|
|
|
var scoreFields = [
|
|
var scoreFields = [
|
|
|
- { key: 'overallScore', label: '综合', color: '#0EA5E9' },
|
|
|
|
|
- { key: 'gutHealthScore', label: '菌群健康', color: '#10B981' },
|
|
|
|
|
- { key: 'chronicDiseaseScore', label: '慢病控制', color: '#F59E0B' },
|
|
|
|
|
- { key: 'nutritionScore', label: '营养均衡', color: '#FF8C42' },
|
|
|
|
|
- { key: 'balanceScore', label: '平衡', color: '#6366F1' },
|
|
|
|
|
- { key: 'diversityScore', label: '多样性', color: '#FF6B9D' },
|
|
|
|
|
- { key: 'beneficialScore', label: '有益菌', color: '#10B981' },
|
|
|
|
|
- { key: 'harmfulScore', label: '有害菌', color: '#C62828' },
|
|
|
|
|
- { key: 'coreGenusScore', label: '核心菌属', color: '#0EA5E9' }
|
|
|
|
|
|
|
+ { key: 'overallScore', label: '综合', color: BrandColors.infoSky },
|
|
|
|
|
+ { key: 'gutHealthScore', label: '菌群健康', color: BrandColors.success },
|
|
|
|
|
+ { key: 'chronicDiseaseScore', label: '慢病控制', color: BrandColors.wealth },
|
|
|
|
|
+ { key: 'nutritionScore', label: '营养均衡', color: BrandColors.body },
|
|
|
|
|
+ { key: 'balanceScore', label: '平衡', color: BrandColors.wisdom },
|
|
|
|
|
+ { key: 'diversityScore', label: '多样性', color: BrandColors.mind },
|
|
|
|
|
+ { key: 'beneficialScore', label: '有益菌', color: BrandColors.success },
|
|
|
|
|
+ { key: 'harmfulScore', label: '有害菌', color: BrandColors.dangerStrong2 },
|
|
|
|
|
+ { key: 'coreGenusScore', label: '核心菌属', color: BrandColors.infoSky }
|
|
|
]
|
|
]
|
|
|
for (var i = 0; i < scoreFields.length; i++) {
|
|
for (var i = 0; i < scoreFields.length; i++) {
|
|
|
var f = scoreFields[i]
|
|
var f = scoreFields[i]
|
|
@@ -1069,6 +1070,14 @@ applyDraftPayload: function(payload) {
|
|
|
</script>
|
|
</script>
|
|
|
|
|
|
|
|
<style scoped lang="scss">
|
|
<style scoped lang="scss">
|
|
|
|
|
+// ===== 肠道菌群页专属色阶(Material Teal 提示色族;单页专用,约定见 uni.scss §14)=====
|
|
|
|
|
+$c-gf-amber: #FFB300; // amber-700 提示左边线
|
|
|
|
|
+$c-gf-brown: #795548; // brown-500 提示文字
|
|
|
|
|
+$c-gf-teal-bg: #E0F2F1; // teal-50 浅底
|
|
|
|
|
+$c-gf-teal: #00897B; // teal-600 主色
|
|
|
|
|
+$c-gf-teal-deep: #00695C; // teal-800 深档
|
|
|
|
|
+$c-gf-teal-ink: #004D40; // teal-900 深文字
|
|
|
|
|
+
|
|
|
.page { min-height: 100vh; background: $facade-fill-page; }
|
|
.page { min-height: 100vh; background: $facade-fill-page; }
|
|
|
.content { height: calc(100vh - 100rpx); }
|
|
.content { height: calc(100vh - 100rpx); }
|
|
|
|
|
|
|
@@ -1087,9 +1096,9 @@ applyDraftPayload: function(payload) {
|
|
|
.quick-nav { display: flex; padding: 20rpx; background: $app-surface; margin-bottom: 16rpx; }
|
|
.quick-nav { display: flex; padding: 20rpx; background: $app-surface; margin-bottom: 16rpx; }
|
|
|
.nav-card { flex: 1; display: flex; flex-direction: column; align-items: center; padding: 16rpx 0; }
|
|
.nav-card { flex: 1; display: flex; flex-direction: column; align-items: center; padding: 16rpx 0; }
|
|
|
.caution-card {
|
|
.caution-card {
|
|
|
- background: #FEF2F2;
|
|
|
|
|
|
|
+ background: $status-danger-tint-2;
|
|
|
border-radius: 16rpx;
|
|
border-radius: 16rpx;
|
|
|
- border: 2rpx solid #FECACA;
|
|
|
|
|
|
|
+ border: 2rpx solid $danger-line;
|
|
|
}
|
|
}
|
|
|
.caution-count { color: $status-danger-deep; font-weight: 700; }
|
|
.caution-count { color: $status-danger-deep; font-weight: 700; }
|
|
|
.nav-icon { font-size: 40rpx; margin-bottom: 6rpx; }
|
|
.nav-icon { font-size: 40rpx; margin-bottom: 6rpx; }
|
|
@@ -1158,7 +1167,7 @@ applyDraftPayload: function(payload) {
|
|
|
.indicator-range { font-size: calc(22rpx * var(--font-scale, 1)); color: $facade-text-ghost-light; display: block; margin-top: 4rpx; }
|
|
.indicator-range { font-size: calc(22rpx * var(--font-scale, 1)); color: $facade-text-ghost-light; display: block; margin-top: 4rpx; }
|
|
|
|
|
|
|
|
/* 指标知识库 "?" 按钮(与通用报告页一致) */
|
|
/* 指标知识库 "?" 按钮(与通用报告页一致) */
|
|
|
-.ind-help-btn { display: inline-flex; align-items: center; justify-content: center; width: 36rpx; height: 36rpx; border-radius: 50%; background: $mat-blue-tint; color: #1976D2; font-size: 22rpx; font-weight: 600; margin-left: 8rpx; flex-shrink: 0; }
|
|
|
|
|
|
|
+.ind-help-btn { display: inline-flex; align-items: center; justify-content: center; width: 36rpx; height: 36rpx; border-radius: 50%; background: $mat-blue-tint; color: $mat-blue; font-size: 22rpx; font-weight: 600; margin-left: 8rpx; flex-shrink: 0; }
|
|
|
|
|
|
|
|
/* 综合评级行 */
|
|
/* 综合评级行 */
|
|
|
.rating-line { margin: 12rpx 0 0; }
|
|
.rating-line { margin: 12rpx 0 0; }
|
|
@@ -1201,32 +1210,32 @@ applyDraftPayload: function(payload) {
|
|
|
|
|
|
|
|
/* 报告解读 */
|
|
/* 报告解读 */
|
|
|
.interpretation-box {
|
|
.interpretation-box {
|
|
|
- background: #FFF8E1;
|
|
|
|
|
|
|
+ background: $mat-amber-tint;
|
|
|
border-radius: 12rpx;
|
|
border-radius: 12rpx;
|
|
|
padding: 16rpx 20rpx;
|
|
padding: 16rpx 20rpx;
|
|
|
margin: 16rpx 0 0;
|
|
margin: 16rpx 0 0;
|
|
|
- border-left: 6rpx solid #FFB300;
|
|
|
|
|
|
|
+ border-left: 6rpx solid $c-gf-amber;
|
|
|
}
|
|
}
|
|
|
.interp-text {
|
|
.interp-text {
|
|
|
font-size: calc(24rpx * var(--font-scale, 1));
|
|
font-size: calc(24rpx * var(--font-scale, 1));
|
|
|
- color: #795548;
|
|
|
|
|
|
|
+ color: $c-gf-brown;
|
|
|
line-height: 1.6;
|
|
line-height: 1.6;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/* AI 解读框 */
|
|
/* AI 解读框 */
|
|
|
.ai-box {
|
|
.ai-box {
|
|
|
- background: #E0F2F1;
|
|
|
|
|
- border-left-color: #00897B;
|
|
|
|
|
|
|
+ background: $c-gf-teal-bg;
|
|
|
|
|
+ border-left-color: $c-gf-teal;
|
|
|
}
|
|
}
|
|
|
.interp-label {
|
|
.interp-label {
|
|
|
font-size: calc(24rpx * var(--font-scale, 1));
|
|
font-size: calc(24rpx * var(--font-scale, 1));
|
|
|
font-weight: 600;
|
|
font-weight: 600;
|
|
|
- color: #00695C;
|
|
|
|
|
|
|
+ color: $c-gf-teal-deep;
|
|
|
display: block;
|
|
display: block;
|
|
|
margin-bottom: 6rpx;
|
|
margin-bottom: 6rpx;
|
|
|
}
|
|
}
|
|
|
.ai-box .interp-text {
|
|
.ai-box .interp-text {
|
|
|
- color: #004D40;
|
|
|
|
|
|
|
+ color: $c-gf-teal-ink;
|
|
|
}
|
|
}
|
|
|
/* 报告总结描述 */
|
|
/* 报告总结描述 */
|
|
|
.summary-box {
|
|
.summary-box {
|
|
@@ -1234,7 +1243,7 @@ applyDraftPayload: function(payload) {
|
|
|
border-radius: 12rpx;
|
|
border-radius: 12rpx;
|
|
|
padding: 16rpx 20rpx;
|
|
padding: 16rpx 20rpx;
|
|
|
margin: 16rpx 0 0;
|
|
margin: 16rpx 0 0;
|
|
|
- border-left: 6rpx solid #A5D6A7;
|
|
|
|
|
|
|
+ border-left: 6rpx solid $mat-green-soft;
|
|
|
display: flex;
|
|
display: flex;
|
|
|
flex-direction: column;
|
|
flex-direction: column;
|
|
|
gap: 8rpx;
|
|
gap: 8rpx;
|