Эх сурвалжийг харах

fix(frontend): 修复 4Tab 编译错误 - 补回 wealth/index.vue 缺失的 service-item v-for 和 serviceList 数据; 修复 report-detail.vue 和 report-blocks-renderer.vue 的 :key 表达式改为方法调用

liaoxg 1 сар өмнө
parent
commit
aab190f4d3

+ 14 - 7
cfc-frontend/components/report-blocks-renderer.vue

@@ -1,11 +1,11 @@
 <template>
   <view class="blocks-renderer">
-    <view v-for="(block, bi) in blocks" :key="'b' + bi" class="block-wrap">
+    <view v-for="(block, bi) in blocks" :key="getBlockKey(bi)" class="block-wrap">
       <!-- score: 评分圆环组 -->
       <view v-if="block.type === 'score'" class="block score-block">
         <view class="block-title">{{ block.title }}</view>
         <view class="score-grid">
-          <view class="score-item" v-for="(item, si) in block.items" :key="'s' + si">
+          <view class="score-item" v-for="(item, si) in block.items" :key="getScoreKey(si)">
             <view class="score-circle" :style="'border-color:' + (item.color || '#4A9BD7')">
               <text class="score-value">{{ item.value }}</text>
             </view>
@@ -17,7 +17,7 @@
       <!-- risk_group: 风险分组(按等级徽章) -->
       <view v-else-if="block.type === 'risk_group'" class="block risk-block">
         <view class="block-title">{{ block.title }}</view>
-        <view class="risk-card" v-for="(item, ri) in block.items" :key="'r' + ri"
+        <view class="risk-card" v-for="(item, ri) in block.items" :key="getRiskKey(ri)"
               :class="'risk-level-' + riskCss(item.level)">
           <text class="risk-name">{{ item.name }}</text>
           <text class="risk-value">风险值: {{ item.value || '--' }}</text>
@@ -28,7 +28,7 @@
       <!-- indicator: 指标明细 -->
       <view v-else-if="block.type === 'indicator'" class="block indicator-block">
         <view class="block-title">{{ block.title }}</view>
-        <view class="indicator-item" v-for="(item, ii) in block.items" :key="'i' + ii">
+        <view class="indicator-item" v-for="(item, ii) in block.items" :key="getIndicatorKey(ii)">
           <text class="ind-name">{{ item.name }}</text>
           <text class="ind-value">{{ item.value }} {{ item.unit }}</text>
           <text class="ind-status" :class="'status-' + statusCss(item.status)">{{ item.status }}</text>
@@ -39,12 +39,12 @@
       <view v-else-if="block.type === 'list'" class="block list-block">
         <view class="block-title">{{ block.title }}</view>
         <view class="list-head" v-if="block.columns">
-          <text class="list-cell head-cell" v-for="(colItem, ci) in block.columns" :key="'c' + ci"
+          <text class="list-cell head-cell" v-for="(colItem, ci) in block.columns" :key="getColumnKey(ci)"
                 :style="'flex:' + (ci === 0 ? 2 : 1)">{{ colItem.label }}</text>
         </view>
-        <view class="list-row" v-for="(item, li) in block.items" :key="'l' + li">
+        <view class="list-row" v-for="(item, li) in block.items" :key="getListItemKey(li)">
           <text class="list-cell" :style="'flex:' + (ci === 0 ? 2 : 1)"
-                v-for="(colItem, ci) in block.columns" :key="'lc' + ci">{{ item[colItem.key] || '--' }}</text>
+                v-for="(colItem, ci) in block.columns" :key="getListColumnKey(ci)">{{ item[colItem.key] || '--' }}</text>
         </view>
       </view>
 
@@ -70,6 +70,13 @@ export default {
     blocks: { type: Array, default: function() { return [] } }
   },
   methods: {
+    getBlockKey: function(bi) { return 'b' + bi },
+    getScoreKey: function(si) { return 's' + si },
+    getRiskKey: function(ri) { return 'r' + ri },
+    getIndicatorKey: function(ii) { return 'i' + ii },
+    getColumnKey: function(ci) { return 'c' + ci },
+    getListItemKey: function(li) { return 'l' + li },
+    getListColumnKey: function(ci) { return 'lc' + ci },
     riskCss: function(level) {
       var important = ['需注意', '注意', '高风险', '异常']
       return important.indexOf(level) >= 0 ? 'warning' : 'low'

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

@@ -21,7 +21,7 @@
       <view class="empty-hint" v-else>暂无报告内容</view>
       <!-- 风险编辑面板 -->
       <view class="edit-panel" v-if="isEditing">
-        <view class="edit-card" v-for="(risk, ei) in editRisks" :key="'e' + ei">
+        <view class="edit-card" v-for="(risk, ei) in editRisks" :key="getEditRiskKey(ei)">
           <text class="edit-name">{{ risk.diseaseName }}</text>
           <view class="edit-row">
             <text class="edit-label">风险值:</text>
@@ -130,6 +130,7 @@ export default {
         this.isEditing = true
       }
     },
+    getEditRiskKey: function(ei) { return 'e' + ei },
     riskLevelIndex: function(level) {
       var idx = this.riskLevels.indexOf(level)
       return idx >= 0 ? idx : 0

+ 15 - 4
cfc-frontend/pages/wealth/index.vue

@@ -164,12 +164,13 @@
           <text class="section-title">🚀 财富服务</text>
         </view>
         <view class="service-grid">
-            <view class="service-icon-wrap">
-              <text class="service-icon">{{ item.icon }}</text>
+          <view class="service-item" v-for="item in serviceList" :key="item.label" @click="onServiceClick(item.action)">
+              <view class="service-icon-wrap">
+                <text class="service-icon">{{ item.icon }}</text>
+              </view>
+              <text class="service-label">{{ item.label }}</text>
             </view>
-            <text class="service-label">{{ item.label }}</text>
           </view>
-        </view>
       </view>
 
             <!-- 富维度介绍卡片 -->
@@ -237,6 +238,16 @@ export default {
       weekTrend: [30, 40, 35, 50, 60, 55, 70],
       weekDays: ['一', '二', '三', '四', '五', '六', '日'],
       // 服务列表
+      serviceList: [
+        { icon: '📝', label: '记账打卡', action: 'goToCheckin' },
+        { icon: '🛡️', label: '保单管理', action: 'goToInsurance' },
+        { icon: '🎨', label: '创客中心', action: 'goToCreator' },
+        { icon: '🏪', label: '商城首页', action: 'goToShop' },
+        { icon: '🛒', label: '购物车', action: 'goToCart' },
+        { icon: '📋', label: '我的订单', action: 'goToOrders' },
+        { icon: '🔄', label: '售后服务', action: 'goToAfterSales' },
+        { icon: '📊', label: '收益中心', action: 'goToIncome' }
+      ],
       children: [],
       familyMembersVisible: [],
       selectedMemberId: null,