Преглед изворни кода

fix(health): 最近记录展示全家报告,报告列表默认选中本人

liaoxg пре 3 дана
родитељ
комит
47360e632c
2 измењених фајлова са 27 додато и 8 уклоњено
  1. 4 4
      cfc-frontend/pages/health-main/index.vue
  2. 23 4
      cfc-frontend/pages/health/report-list.vue

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

@@ -543,10 +543,10 @@ export default {
       try {
         var api = require('../../utils/api.js')
         var memberId = uni.getStorageSync('currentChildId') || uni.getStorageSync('currentMemberId') || uni.getStorageSync('userId') || ''
-        // 健康报告:最近记录只有两种情况——①未切换=当前登录用户自己的;②已切换=被切换成员的。
-        // currentChildId/currentMemberId 仅在切换视图时写入 storage、切回即清除,未切换时回退到 userId(登录者本人);
-        // memberId 为空时后端才返回全家报告——此处必须传 memberId,避免首页混入其他成员的报告
-        api.getReportList(memberId, 3).then(function(res) {
+        // 最近记录:展示家庭所有成员的最近报告——不传 memberId,后端返回当前家庭全部报告
+        // (按报告日期倒序)取最近 3 条,卡片通过 childName/personName 区分成员。
+        // 下方维度/认知/心理等数据仍按当前选中成员(memberId)加载,不受此影响
+        api.getReportList('', 3).then(function(res) {
           if (res.code === 200 && res.data) {
             var list = Array.isArray(res.data) ? res.data : (res.data.list || [])
             self.reports = list

+ 23 - 4
cfc-frontend/pages/health/report-list.vue

@@ -198,10 +198,17 @@ export default {
     }
   },
   onLoad(options) {
-    // 从 storage 获取当前用户ID(优先 currentChildId,其次 currentMemberId,最后回退登录 userId)
-    var currentUserId = uni.getStorageSync('currentChildId') || uni.getStorageSync('currentMemberId') || uni.getStorageSync('userId') || ''
-    this.memberId = options.memberId ? parseInt(options.memberId) : (currentUserId ? parseInt(currentUserId) : null)
-    // 默认显示当前用户的报告;"全部"可切换查看所有成员
+    // 默认选中本人(登录用户):
+    // - 无显式 memberId 时用登录 userId 过滤,后端 getMemberReports 兼容 users.id / family_members.id;
+    // - 不再优先 currentChildId/currentMemberId——切换视角进入时默认也是本人,点成员 chip 才切换
+    if (options.memberId) {
+      this.memberId = parseInt(options.memberId, 10)
+    } else {
+      var loginUserId = uni.getStorageSync('userId') || ''
+      this.memberId = loginUserId ? parseInt(loginUserId, 10) : null
+      // 成员列表返回后把 chip 高亮从 users.id 归一到本人的 family_members.id(_filterId)
+      this._selfUserId = loginUserId
+    }
     this.selectedMemberId = this.memberId
     this.loadMembers()
     this.loadData()
@@ -306,12 +313,24 @@ export default {
             var m = res.data[i]
             list.push({
               id: m.id,
+              userId: m.userId,
               nickname: m.nickname,
               avatar: m.avatar,
               _filterId: m.id || m.userId
             })
           }
           self.members = list
+          // 默认选中本人时,把 chip 高亮从 users.id 归一到本人的 family_members.id(_filterId):
+          // 两个 id 后端返回同一份报告,数据已在 onLoad 拉取过,这里只修高亮、不重复请求
+          if (self._selfUserId && self.selectedMemberId != null &&
+              Number(self.selectedMemberId) === Number(self._selfUserId)) {
+            for (var j = 0; j < list.length; j++) {
+              if (list[j].userId != null && Number(list[j].userId) === Number(self._selfUserId)) {
+                self.selectedMemberId = list[j]._filterId
+                break
+              }
+            }
+          }
         }
       }).catch(function(e) {
         console.log('获取家庭成员失败', e)