Просмотр исходного кода

feat(body): 身页面新增疾病风险卡片

- 调用已有 POST /api/health/report/body-abnormal 接口获取非低风险项
- 展示疾病名称、风险值、风险等级(高风险红/需注意黄)
- gut-flora 接口已为 POST,无需修改
iwt 2 месяцев назад
Родитель
Сommit
163ee2155e
1 измененных файлов с 26 добавлено и 1 удалено
  1. 26 1
      cfc-frontend/pages/body-detail/index.vue

+ 26 - 1
cfc-frontend/pages/body-detail/index.vue

@@ -147,7 +147,7 @@ import RadarChart from '../../components/RadarChart.vue'
 import FloatingAvatar from '../../components/AIFloatingAvatar.vue'
 import FloatingAvatar from '../../components/AIFloatingAvatar.vue'
 import DimensionIntroCard from '../../components/DimensionIntroCard.vue'
 import DimensionIntroCard from '../../components/DimensionIntroCard.vue'
 import FamilyMemberStrip from '../../components/FamilyMemberStrip.vue'
 import FamilyMemberStrip from '../../components/FamilyMemberStrip.vue'
-import { getVisibleSections, getEnergyOverview, getChildren, getFamilyEnergySandbox, getEnergySandbox, getFamilyMemberList, getDimensionOverview, getGutFloraIndicators } from '../../utils/api.js'
+import { getVisibleSections, getEnergyOverview, getChildren, getFamilyEnergySandbox, getEnergySandbox, getFamilyMemberList, getDimensionOverview, getGutFloraIndicators, getBodyAbnormalIndicators } from '../../utils/api.js'
 
 
 export default {
 export default {
   components: { TabTransition, PageBanner, FamilyEnergyBar, RadarChart, FloatingAvatar, FamilyMemberStrip, DimensionIntroCard },
   components: { TabTransition, PageBanner, FamilyEnergyBar, RadarChart, FloatingAvatar, FamilyMemberStrip, DimensionIntroCard },
@@ -169,6 +169,7 @@ export default {
       bodyIndicators: [],
       bodyIndicators: [],
       gutFloraIndicators: [],
       gutFloraIndicators: [],
       hasGutReport: false,
       hasGutReport: false,
+      diseaseRisks: [],
       sandboxData: null,
       sandboxData: null,
       currentView: 'self', // 'self' | 'family'
       currentView: 'self', // 'self' | 'family'
       dualDimension: null,
       dualDimension: null,
@@ -364,6 +365,8 @@ export default {
       self.loadBodyIndicators(memberId)
       self.loadBodyIndicators(memberId)
       // 加载菌群指标
       // 加载菌群指标
       self.loadGutFlora(memberId)
       self.loadGutFlora(memberId)
+      // 加载疾病风险
+      self.loadDiseaseRisks(memberId)
     },
     },
     loadBodyIndicators: function(memberId) {
     loadBodyIndicators: function(memberId) {
       var self = this
       var self = this
@@ -488,6 +491,14 @@ export default {
       }
       }
       uni.navigateTo({ url: '/pages/health/nutrition-profile?memberId=' + id })
       uni.navigateTo({ url: '/pages/health/nutrition-profile?memberId=' + id })
     },
     },
+    loadDiseaseRisks: function(memberId) {
+      var self = this
+      getBodyAbnormalIndicators(memberId).then(function(res) {
+        if (res.code === 200 && res.data && res.data.diseaseRisks) {
+          self.diseaseRisks = res.data.diseaseRisks
+        }
+      }).catch(function(e) { console.log('[body] loadDiseaseRisks failed', e) })
+    },
     goToBodyDetail: function() {
     goToBodyDetail: function() {
       var id = this.activeChildId || uni.getStorageSync('currentChildId')
       var id = this.activeChildId || uni.getStorageSync('currentChildId')
       if (!id) return
       if (!id) return
@@ -643,6 +654,20 @@ export default {
 .gut-empty-hint { text-align: center; padding: 30rpx; color: #999; font-size: 26rpx; background: #fff; border-radius: 16rpx; margin-bottom: 16rpx; }
 .gut-empty-hint { text-align: center; padding: 30rpx; color: #999; font-size: 26rpx; background: #fff; border-radius: 16rpx; margin-bottom: 16rpx; }
 .gut-upload-link { color: #3B82F6; margin-left: 8rpx; }
 .gut-upload-link { color: #3B82F6; margin-left: 8rpx; }
 
 
+/* ===== 疾病风险 ===== */
+.risk-section { margin: 20rpx 30rpx; }
+.risk-list { background: #fff; border-radius: 16rpx; padding: 8rpx 0; box-shadow: 0 2rpx 12rpx rgba(0,0,0,0.06); }
+.risk-item { display: flex; align-items: center; justify-content: space-between; padding: 20rpx 24rpx; border-bottom: 1rpx solid #F3F4F6; }
+.risk-item:last-child { border-bottom: none; }
+.risk-item.risk-高风险 { background: #FEF2F2; }
+.risk-item.risk-需注意 { background: #FFFBEB; }
+.risk-name { font-size: 28rpx; font-weight: 500; color: #333; flex: 1; }
+.risk-right { display: flex; align-items: center; gap: 12rpx; }
+.risk-value { font-size: 24rpx; color: #666; }
+.risk-level { font-size: 22rpx; padding: 4rpx 12rpx; border-radius: 20rpx; }
+.risk-level.高风险 { background: #FEE2E2; color: #DC2626; }
+.risk-level.需注意 { background: #FEF3C7; color: #D97706; }
+
 .bottom-spacer {
 .bottom-spacer {
   height: 120rpx;
   height: 120rpx;
 }
 }