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

fix(frontend): 健康/成长页 memberId 为空修复 - getReportList 传 selectedMemberId、onShow 顺序调整、FamilyMemberStrip 绑定 @select 事件

liaoxg 1 месяц назад
Родитель
Сommit
b5bdd8031d
2 измененных файлов с 20 добавлено и 8 удалено
  1. 12 4
      cfc-frontend/pages/growth-main/index.vue
  2. 8 4
      cfc-frontend/pages/health-main/index.vue

+ 12 - 4
cfc-frontend/pages/growth-main/index.vue

@@ -1,7 +1,7 @@
 <template>
   <view class="container">
     <PageBanner theme="action" tagline="干预 · 记录 · 成长" quote="知行合一,每天进步一点点" />
-    <FamilyMemberStrip />
+    <FamilyMemberStrip @select="onMemberSelect" />
     <view class="reminder-bar" v-if="hasIncomplete">
       <text class="reminder-text">⚠ 今日还有 {{ incompleteCount }} 项未记录</text>
       <text class="reminder-close" @click="dismissReminder">✕</text>
@@ -105,14 +105,22 @@ export default {
     currentRecords: function() { return this.trackingData[this.activeTab] || [] }
   },
   onLoad(options) {
-    var ui = uni.getStorageSync('userInfo') || {}
-    this.memberId = options.memberId || ui.currentMemberId || ui.memberId
+    this.memberId = options.memberId || uni.getStorageSync('currentChildId') || ''
     var now = new Date()
     this.todayDate = now.getFullYear() + '-' + this.pad(now.getMonth() + 1) + '-' + this.pad(now.getDate())
     this.loadAllData()
   },
-  onShow() { this.loadAllData() },
+  onShow() {
+    if (!this.memberId) {
+      this.memberId = uni.getStorageSync('currentChildId') || ''
+    }
+    this.loadAllData()
+  },
   methods: {
+    onMemberSelect: function(member) {
+      this.memberId = member && member.id ? member.id : ''
+      this.loadAllData()
+    },
     pad: function(n) { return n < 10 ? '0' + n : '' + n },
     getProgressKey(item) { return item && item.label ? item.label : 'p-' + Math.random() },
     getRecordKey(rec) { return rec && rec._text ? rec._text + rec._content : 'r-' + Math.random() },

+ 8 - 4
cfc-frontend/pages/health-main/index.vue

@@ -23,7 +23,7 @@
         </view>
       </view>
 
-      <FamilyMemberStrip />
+      <FamilyMemberStrip @select="onMemberSelect" />
 
       <view class="section section-dc-header">
         <view class="dc-title-row">
@@ -170,16 +170,20 @@ export default {
   onShow() {
     this.isLoggedIn = !!uni.getStorageSync('token')
     if (this.isLoggedIn) {
-      this.loadHealthData()
-      this.loadPlanList()
       var stored = uni.getStorageSync('currentChildId') || ''
       if (stored) {
         this.selectedMemberId = stored
         this.selectedMemberName = uni.getStorageSync('currentChildName') || '成员'
       }
+      this.loadHealthData()
+      this.loadPlanList()
     }
   },
   methods: {
+    onMemberSelect: function(member) {
+      this.selectedMemberId = member && member.id ? member.id : ''
+      this.selectedMemberName = member && member.name ? member.name : '成员'
+    },
     switchTab: function(code) { this.currentTab = code },
     goPage: function(url) { uni.navigateTo({ url: url }) },
     goQuiz: function(code) {
@@ -199,7 +203,7 @@ export default {
       var self = this
       try {
         var api = require('../../utils/api.js')
-        api.getReportList().then(function(res) {
+        api.getReportList(self.selectedMemberId).then(function(res) {
           if (res.code === 200 && res.data) {
             var list = Array.isArray(res.data) ? res.data : (res.data.list || [])
             self.reports = list