فهرست منبع

refactor(c-2): C-2a-3 旧蓝分流·health 集群收尾 9 文件 26 处(#4A9BD7 族)

- gut-flora-detail 10 处:report-header 渐变 → 站点标准 hero
  ($brand-primary→$brand-primary-dark);fab/btn-confirm/btn-save 主行动 →
  $brand-primary;sub-group-title/feedback-text/change-more-text accent 文字 →
  $brand-primary;JS 九系色板 #4A9BD7×2 → #0EA5E9(保蓝色槽位,翻橙会与
  #FF8C42 营养均衡撞色——数据类目禁撞色)
- species-detail 4 处:nav-edit/tab-active/btn-save → $brand-primary;
  .flora-level-tag 等级徽章(配 #E3F2FD 浅蓝底)→ $uni-info 保徽章 coherent
- risks-detail 4 处:nav-edit/section-line 装饰竖线/risk-more/btn-save → 全橙
- feedback-popup 2 处:fb-btn-submit 主按钮 → $brand-primary;
  fb-quote-label(配 #F5FAFE 浅蓝底)→ $uni-info
- plan-list btn-create / my-feedback badge-question(→$uni-info)/
  indicator-quicklook cat-active 选中态 ×2 → 按角色分流
- report-blocks-renderer 模板兜底色 '#4A9BD7' → '#F97316';
  health-report 四系色板头位 '#5B9BD5' → '#F97316'(与 #FF9800 有列表间距)
- 7 个 style 块补 lang="scss"(原块零 $ 零 //);执行器新增单行块兼容
  (species 的 .flora-level-tag 选择器与声明同行)
- 验证:7/7 页 C-2 预期替换验证 PASS;JS/模板 3 处计数断言 + diff 复核;
  全文件终检 0 残留
liaoxg 6 روز پیش
والد
کامیت
be257352d7

+ 1 - 1
cfc-frontend/pages/body-detail/health-report.vue

@@ -277,7 +277,7 @@ export default {
       var items = []
       var r = this.report
       var pairs = [
-        {key:'overall', label:'综合评分', score: r.overallScore, color:'#5B9BD5'},
+        {key:'overall', label:'综合评分', score: r.overallScore, color:'#F97316'},
         {key:'gut', label:'肠道健康', score: r.gutHealthScore, color:'#4CAF50'},
         {key:'chronic', label:'慢病控制', score: r.chronicDiseaseScore, color:'#FF9800'},
         {key:'nutrition', label:'营养均衡', score: r.nutritionScore, color:'#2196F3'}

+ 3 - 3
cfc-frontend/pages/health/components/feedback-popup.vue

@@ -159,7 +159,7 @@ export default {
 }
 </script>
 
-<style scoped>
+<style scoped lang="scss">
 .fb-overlay {
   position: fixed;
   top: 0;
@@ -241,7 +241,7 @@ export default {
   margin-right: 20rpx;
 }
 .fb-btn-submit {
-  background: #4A9BD7;
+  background: $brand-primary;
   color: #fff;
 }
 .fb-btn-disabled {
@@ -257,7 +257,7 @@ export default {
 .fb-quote-label {
   display: block;
   font-size: 24rpx;
-  color: #4A9BD7;
+  color: $uni-info;
   margin-bottom: 8rpx;
 }
 .fb-quote-text {

+ 10 - 10
cfc-frontend/pages/health/gut-flora-detail.vue

@@ -791,7 +791,7 @@ applyDraftPayload: function(payload) {
       var s = r.summary || r
       var items = []
       var scoreFields = [
-        { key: 'overallScore',         label: '综合',            color: '#4A9BD7' },
+        { key: 'overallScore',         label: '综合',            color: '#0EA5E9' },
         { key: 'gutHealthScore',       label: '菌群健康',        color: '#10B981' },
         { key: 'chronicDiseaseScore',  label: '慢病控制',        color: '#F59E0B' },
         { key: 'nutritionScore',       label: '营养均衡',        color: '#FF8C42' },
@@ -799,7 +799,7 @@ applyDraftPayload: function(payload) {
         { key: 'diversityScore',       label: '多样性',          color: '#FF6B9D' },
         { key: 'beneficialScore',      label: '有益菌',          color: '#10B981' },
         { key: 'harmfulScore',         label: '有害菌',          color: '#C62828' },
-        { key: 'coreGenusScore',       label: '核心菌属',        color: '#4A9BD7' }
+        { key: 'coreGenusScore',       label: '核心菌属',        color: '#0EA5E9' }
       ]
       for (var i = 0; i < scoreFields.length; i++) {
         var f = scoreFields[i]
@@ -1068,11 +1068,11 @@ applyDraftPayload: function(payload) {
 }
 </script>
 
-<style scoped>
+<style scoped lang="scss">
 .page { min-height: 100vh; background: #f8f8f8; }
 .content { height: calc(100vh - 100rpx); }
 
-.report-header { background: linear-gradient(135deg, #4A9BD7, #6366F1); padding: 40rpx 30rpx; color: #fff; }
+.report-header { background: linear-gradient(135deg, $brand-primary, $brand-primary-dark); padding: 40rpx 30rpx; color: #fff; }
 .report-title { font-size: calc(36rpx * var(--font-scale, 1)); font-weight: 700; display: block; margin-bottom: 16rpx; }
 .report-meta { display: flex; gap: 20rpx; margin-bottom: 6rpx; }
 .meta-item { font-size: calc(24rpx * var(--font-scale, 1)); opacity: 0.9; }
@@ -1137,7 +1137,7 @@ applyDraftPayload: function(payload) {
 .risk-bacteria { font-size: calc(24rpx * var(--font-scale, 1)); color: #666; line-height: 1.6; }
 
 .sub-group { margin-bottom: 16rpx; }
-.sub-group-title { font-size: calc(26rpx * var(--font-scale, 1)); color: #4A9BD7; font-weight: 600; display: block; margin: 12rpx 0 8rpx; }
+.sub-group-title { font-size: calc(26rpx * var(--font-scale, 1)); color: $brand-primary; font-weight: 600; display: block; margin: 12rpx 0 8rpx; }
 
 .indicator-card { padding: 16rpx 0; border-bottom: 1rpx solid #f5f5f5; }
 .indicator-row { display: flex; align-items: center; justify-content: space-between; }
@@ -1172,18 +1172,18 @@ applyDraftPayload: function(payload) {
 .edit-input { border: 1rpx solid #ddd; border-radius: 8rpx; padding: 6rpx 10rpx; font-size: calc(26rpx * var(--font-scale, 1)); width: 100rpx; }
 .edit-picker { border: 1rpx solid #ddd; border-radius: 8rpx; padding: 6rpx 10rpx; font-size: calc(24rpx * var(--font-scale, 1)); color: #333; }
 
-.fab { position: fixed; right: 30rpx; bottom: 40rpx; width: 100rpx; height: 100rpx; background: #4A9BD7; border-radius: 50%; display: flex; align-items: center; justify-content: center; box-shadow: 0 4rpx 16rpx rgba(74,155,215,0.4); }
+.fab { position: fixed; right: 30rpx; bottom: 40rpx; width: 100rpx; height: 100rpx; background: $brand-primary; border-radius: 50%; display: flex; align-items: center; justify-content: center; box-shadow: 0 4rpx 16rpx rgba(249,115,22,0.4); }
 .fab-icon { font-size: 40rpx; color: #fff; }
 
 .draft-bar { position: fixed; bottom: 0; left: 0; right: 0; display: flex; padding: 20rpx 30rpx; background: #fff; border-top: 1rpx solid #eee; gap: 20rpx; z-index: 100; }
 .btn-discard { flex: 1; padding: 20rpx; border: 1rpx solid #ddd; border-radius: 12rpx; text-align: center; font-size: 28rpx; color: #666; }
-.btn-confirm { flex: 1; padding: 20rpx; background: #4A9BD7; border-radius: 12rpx; text-align: center; font-size: 28rpx; color: #fff; }
+.btn-confirm { flex: 1; padding: 20rpx; background: $brand-primary; border-radius: 12rpx; text-align: center; font-size: 28rpx; color: #fff; }
 .btn-parsing { flex: 1; padding: 20rpx; background: #f0f0f0; border-radius: 12rpx; text-align: center; }
 .parsing-text { font-size: calc(28rpx * var(--font-scale, 1)); color: #999; }
 
 .bottom-bar { position: fixed; bottom: 0; left: 0; right: 0; display: flex; padding: 20rpx 30rpx; background: #fff; border-top: 1rpx solid #eee; gap: 20rpx; z-index: 100; }
 .btn-cancel { flex: 1; padding: 20rpx; border: 1rpx solid #ddd; border-radius: 12rpx; text-align: center; font-size: 28rpx; color: #666; }
-.btn-save { flex: 1; padding: 20rpx; background: #4A9BD7; border-radius: 12rpx; text-align: center; font-size: 28rpx; color: #fff; }
+.btn-save { flex: 1; padding: 20rpx; background: $brand-primary; border-radius: 12rpx; text-align: center; font-size: 28rpx; color: #fff; }
 .feedback-section {
   display: flex;
   align-items: center;
@@ -1194,7 +1194,7 @@ applyDraftPayload: function(payload) {
   border: 1rpx solid #f0f0f0;
 }
 .feedback-icon { font-size: 32rpx; margin-right: 12rpx; }
-.feedback-text { flex: 1; font-size: calc(26rpx * var(--font-scale, 1)); color: #4A9BD7; }
+.feedback-text { flex: 1; font-size: calc(26rpx * var(--font-scale, 1)); color: $brand-primary; }
 .feedback-arrow { font-size: 28rpx; color: #ccc; }
 
 .bottom-spacer { height: 40rpx; }
@@ -1349,7 +1349,7 @@ applyDraftPayload: function(payload) {
 }
 .change-more-text {
   font-size: calc(24rpx * var(--font-scale, 1));
-  color: #4A9BD7;
+  color: $brand-primary;
 }
 .analysis-card {
   background: #fff;

+ 5 - 5
cfc-frontend/pages/health/gut-flora-risks-detail.vue

@@ -331,9 +331,9 @@ export default {
 }
 </script>
 
-<style scoped>
+<style scoped lang="scss">
 .page { min-height: 100vh; background: #f5f6fa; }
-.nav-edit { font-size: calc(28rpx * var(--font-scale, 1)); color: #4A9BD7; padding: 10rpx 30rpx; text-align: right; display: block; }
+.nav-edit { font-size: calc(28rpx * var(--font-scale, 1)); color: $brand-primary; padding: 10rpx 30rpx; text-align: right; display: block; }
 
 /* ===== 头部摘要 ===== */
 .header-summary {
@@ -377,7 +377,7 @@ export default {
   width: 6rpx;
   height: 28rpx;
   border-radius: 3rpx;
-  background: #4A9BD7;
+  background: $brand-primary;
 }
 .section-label {
   font-size: calc(28rpx * var(--font-scale, 1));
@@ -554,7 +554,7 @@ export default {
 }
 .risk-more {
   font-size: calc(24rpx * var(--font-scale, 1));
-  color: #4A9BD7;
+  color: $brand-primary;
   margin-left: auto;
 }
 
@@ -578,5 +578,5 @@ export default {
 /* 底栏 */
 .bottom-bar { position: fixed; bottom: 0; left: 0; right: 0; display: flex; padding: 20rpx 30rpx; background: #fff; border-top: 1rpx solid #eee; gap: 20rpx; z-index: 100; }
 .btn-cancel { flex: 1; padding: 20rpx; border: 1rpx solid #ddd; border-radius: 12rpx; text-align: center; font-size: 28rpx; color: #666; }
-.btn-save { flex: 1; padding: 20rpx; background: #4A9BD7; border-radius: 12rpx; text-align: center; font-size: 28rpx; color: #fff; }
+.btn-save { flex: 1; padding: 20rpx; background: $brand-primary; border-radius: 12rpx; text-align: center; font-size: 28rpx; color: #fff; }
 </style>

+ 5 - 5
cfc-frontend/pages/health/gut-flora-species-detail.vue

@@ -249,12 +249,12 @@ export default {
 }
 </script>
 
-<style scoped>
+<style scoped lang="scss">
 .page { min-height: 100vh; background: #f8f8f8; }
-.nav-edit { font-size: calc(28rpx * var(--font-scale, 1)); color: #4A9BD7; padding: 10rpx 0; }
+.nav-edit { font-size: calc(28rpx * var(--font-scale, 1)); color: $brand-primary; padding: 10rpx 0; }
 .tabs { background: #fff; padding: 10rpx 20rpx; display: flex; flex-wrap: wrap; border-bottom: 1rpx solid #eee; }
 .tab-item { display: inline-block; padding: 12rpx 24rpx; margin: 6rpx; border-radius: 30rpx; font-size: calc(24rpx * var(--font-scale, 1)); background: #f0f0f0; color: #666; }
-.tab-active { background: #4A9BD7; color: #fff; }
+.tab-active { background: $brand-primary; color: #fff; }
 .tab-count { font-size: 20rpx; opacity: 0.7; margin-left: 6rpx; }
 .content { padding: 20rpx 30rpx; height: calc(100vh - 200rpx); }
 .flora-card { background: #fff; border-radius: 16rpx; padding: 24rpx; margin-bottom: 16rpx; }
@@ -267,7 +267,7 @@ export default {
 .flora-name.status-insufficient { color: #C62828; }
 .arrow-up { color: #C62828; font-size: 22rpx; }
 .arrow-down { color: #E65100; font-size: 22rpx; }
-.flora-level-tag { padding: 2rpx 12rpx; background: #E3F2FD; border-radius: 16rpx; font-size: 20rpx; color: #4A9BD7; }
+.flora-level-tag { padding: 2rpx 12rpx; background: #E3F2FD; border-radius: 16rpx; font-size: 20rpx; color: $uni-info; }
 .flora-details { display: flex; align-items: center; }
 .detail-item { flex: 1; font-size: calc(22rpx * var(--font-scale, 1)); color: #999; text-align: center; white-space: nowrap; }
 .flora-edit-row { display: flex; align-items: center; gap: 12rpx; flex-wrap: wrap; }
@@ -277,6 +277,6 @@ export default {
 .empty-hint { text-align: center; color: #ccc; padding: 60rpx 0; font-size: calc(28rpx * var(--font-scale, 1)); }
 .bottom-bar { position: fixed; bottom: 0; left: 0; right: 0; display: flex; padding: 20rpx 30rpx; background: #fff; border-top: 1rpx solid #eee; gap: 20rpx; }
 .btn-cancel { flex: 1; padding: 20rpx; border: 1rpx solid #ddd; border-radius: 12rpx; text-align: center; font-size: 28rpx; color: #666; }
-.btn-save { flex: 1; padding: 20rpx; background: #4A9BD7; border-radius: 12rpx; text-align: center; font-size: 28rpx; color: #fff; }
+.btn-save { flex: 1; padding: 20rpx; background: $brand-primary; border-radius: 12rpx; text-align: center; font-size: 28rpx; color: #fff; }
 .bottom-spacer { height: 40rpx; }
 </style>

+ 2 - 2
cfc-frontend/pages/health/indicator-quicklook.vue

@@ -125,11 +125,11 @@ export default {
 }
 </script>
 
-<style scoped>
+<style scoped lang="scss">
 .member-picker { font-size: 24rpx; color: #666; }
 .cat-scroll { height: 40rpx; line-height: 40rpx; overflow-x: scroll; }
 .cat-tab { float: left; margin-right: 20rpx; padding: 0 12rpx; height: 32rpx; line-height: 32rpx; font-size: 22rpx; color: #999; }
-.cat-tab.cat-active { color: #4A9BD7; border-bottom: 2rpx solid #4A9BD7; }
+.cat-tab.cat-active { color: $brand-primary; border-bottom: 2rpx solid $brand-primary; }
 .item-list { padding: 20rpx; }
 .ql-item { margin-bottom: 20rpx; }
 .ql-name-row { display: flex; justify-content: space-between; margin-bottom: 8rpx; }

+ 2 - 2
cfc-frontend/pages/health/my-feedback.vue

@@ -91,7 +91,7 @@ export default {
 }
 </script>
 
-<style scoped>
+<style scoped lang="scss">
 .mf-page {
   min-height: 100vh;
   background: #F7F8FA;
@@ -116,7 +116,7 @@ export default {
   border-radius: 20rpx;
 }
 .mf-badge-question {
-  color: #4A9BD7;
+  color: $uni-info;
   background: #EAF4FC;
 }
 .mf-badge-suggestion {

+ 2 - 2
cfc-frontend/pages/health/plan-list.vue

@@ -134,7 +134,7 @@ export default {
 }
 </script>
 
-<style scoped>
+<style scoped lang="scss">
 .page {
   min-height: 100vh;
   background: #F5FAFE;
@@ -165,7 +165,7 @@ export default {
 
 .btn-create {
   width: 100%;
-  background: #4A9BD7;
+  background: $brand-primary;
   color: #fff;
   font-size: 30rpx;
   font-weight: 600;

+ 1 - 1
cfc-frontend/pages/health/report-blocks-renderer.vue

@@ -6,7 +6,7 @@
         <view class="block-title">{{ block.title }}</view>
         <view class="score-grid">
           <view class="score-item" v-for="(item, si) in block.items" :key="si">
-            <view class="score-circle" :style="'border-color:' + (item.color || '#4A9BD7')">
+            <view class="score-circle" :style="'border-color:' + (item.color || '#F97316')">
               <text class="score-value">{{ item.value }}</text>
             </view>
             <text class="score-label">{{ item.label }}</text>