Ver código fonte

Merge branch 'cfclub' of http://git.iwintrue.com/liaoxg/cfc into cfclub

E2E Test Bot 3 dias atrás
pai
commit
32473fa0ae

+ 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)

+ 1 - 1
cfc-frontend/pages/profile-main/profile.vue

@@ -365,7 +365,7 @@ export default {
       return map[this.role] || '用户'
     },
     memberLevelText() {
-      var map = { FREE: '免费用户', FAMILY: '家庭会员', PREMIUM: '高级会员', LIFETIME: '终身会员' }
+      var map = { FREE: '免费用户', BASIC: '体验会员', FAMILY: '家庭会员', PREMIUM: '高级会员', LIFETIME: '终身会员' }
       return map[this.memberLevel] || this.memberLevel || ''
     },
     isLifetime() {

+ 2 - 2
cfc-web/src/views/Users.vue

@@ -486,11 +486,11 @@ const res = await getUserList(params)
       return String(dateStr).replace('T', ' ').substring(0, 19)
     },
     memberLevelLabel(level) {
-      const map = { FREE: '免费会员', FAMILY: '家庭会员', PROVIDER: '标准会员', PREMIUM: '高级家庭会员', LIFETIME: '终身会员' }
+      const map = { FREE: '免费会员', BASIC: '体验会员', FAMILY: '家庭会员', PROVIDER: '标准会员', PREMIUM: '高级家庭会员', LIFETIME: '终身会员' }
       return map[level] || '免费会员'
     },
     memberLevelType(level) {
-      const map = { FREE: 'info', FAMILY: 'success', PROVIDER: 'warning', PREMIUM: 'primary', LIFETIME: 'danger' }
+      const map = { FREE: 'info', BASIC: 'warning', FAMILY: 'success', PROVIDER: 'warning', PREMIUM: 'primary', LIFETIME: 'danger' }
       return map[level] || 'info'
     },
     async searchUsersForReferrer(query) {

+ 1 - 1
cfc-web/src/views/admin/MembershipCenter.vue

@@ -306,7 +306,7 @@
 import SortMixin from '@/mixins/SortMixin'
 import { searchUsers, updateMembershipUser, updateMembershipLevel, getMembershipStats, listMembershipLevels } from '@/api/admin'
 
-const LEVEL_TAG_TYPE = { FREE: 'info', FAMILY: 'success', PROVIDER: 'warning', PREMIUM: 'primary', LIFETIME: 'danger' }
+const LEVEL_TAG_TYPE = { FREE: 'info', BASIC: 'warning', FAMILY: 'success', PROVIDER: 'warning', PREMIUM: 'primary', LIFETIME: 'danger' }
 const UPGRADE_TYPE_LABEL = { pay: '付费升级', consumption: '消费升级', admin: '管理员操作', trial: '试用激活', lifetime: '终身会员授予' }
 const UPGRADE_TYPE_TAG = { pay: 'success', consumption: 'primary', admin: 'warning', trial: 'info', lifetime: 'danger' }