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

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

Xiaogang Liao 2 месяцев назад
Родитель
Сommit
21e317805d

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

@@ -1,7 +1,7 @@
 <template>
 <template>
   <view class="container">
   <view class="container">
     <PageBanner theme="action" tagline="干预 · 记录 · 成长" quote="知行合一,每天进步一点点" />
     <PageBanner theme="action" tagline="干预 · 记录 · 成长" quote="知行合一,每天进步一点点" />
-    <FamilyMemberStrip />
+    <FamilyMemberStrip @select="onMemberSelect" />
     <view class="reminder-bar" v-if="hasIncomplete">
     <view class="reminder-bar" v-if="hasIncomplete">
       <text class="reminder-text">⚠ 今日还有 {{ incompleteCount }} 项未记录</text>
       <text class="reminder-text">⚠ 今日还有 {{ incompleteCount }} 项未记录</text>
       <text class="reminder-close" @click="dismissReminder">✕</text>
       <text class="reminder-close" @click="dismissReminder">✕</text>
@@ -105,14 +105,22 @@ export default {
     currentRecords: function() { return this.trackingData[this.activeTab] || [] }
     currentRecords: function() { return this.trackingData[this.activeTab] || [] }
   },
   },
   onLoad(options) {
   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()
     var now = new Date()
     this.todayDate = now.getFullYear() + '-' + this.pad(now.getMonth() + 1) + '-' + this.pad(now.getDate())
     this.todayDate = now.getFullYear() + '-' + this.pad(now.getMonth() + 1) + '-' + this.pad(now.getDate())
     this.loadAllData()
     this.loadAllData()
   },
   },
-  onShow() { this.loadAllData() },
+  onShow() {
+    if (!this.memberId) {
+      this.memberId = uni.getStorageSync('currentChildId') || ''
+    }
+    this.loadAllData()
+  },
   methods: {
   methods: {
+    onMemberSelect: function(member) {
+      this.memberId = member && member.id ? member.id : ''
+      this.loadAllData()
+    },
     pad: function(n) { return n < 10 ? '0' + n : '' + n },
     pad: function(n) { return n < 10 ? '0' + n : '' + n },
     getProgressKey(item) { return item && item.label ? item.label : 'p-' + Math.random() },
     getProgressKey(item) { return item && item.label ? item.label : 'p-' + Math.random() },
     getRecordKey(rec) { return rec && rec._text ? rec._text + rec._content : 'r-' + 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>
       </view>
       </view>
 
 
-      <FamilyMemberStrip />
+      <FamilyMemberStrip @select="onMemberSelect" />
 
 
       <view class="section section-dc-header">
       <view class="section section-dc-header">
         <view class="dc-title-row">
         <view class="dc-title-row">
@@ -170,16 +170,20 @@ export default {
   onShow() {
   onShow() {
     this.isLoggedIn = !!uni.getStorageSync('token')
     this.isLoggedIn = !!uni.getStorageSync('token')
     if (this.isLoggedIn) {
     if (this.isLoggedIn) {
-      this.loadHealthData()
-      this.loadPlanList()
       var stored = uni.getStorageSync('currentChildId') || ''
       var stored = uni.getStorageSync('currentChildId') || ''
       if (stored) {
       if (stored) {
         this.selectedMemberId = stored
         this.selectedMemberId = stored
         this.selectedMemberName = uni.getStorageSync('currentChildName') || '成员'
         this.selectedMemberName = uni.getStorageSync('currentChildName') || '成员'
       }
       }
+      this.loadHealthData()
+      this.loadPlanList()
     }
     }
   },
   },
   methods: {
   methods: {
+    onMemberSelect: function(member) {
+      this.selectedMemberId = member && member.id ? member.id : ''
+      this.selectedMemberName = member && member.name ? member.name : '成员'
+    },
     switchTab: function(code) { this.currentTab = code },
     switchTab: function(code) { this.currentTab = code },
     goPage: function(url) { uni.navigateTo({ url: url }) },
     goPage: function(url) { uni.navigateTo({ url: url }) },
     goQuiz: function(code) {
     goQuiz: function(code) {
@@ -199,7 +203,7 @@ export default {
       var self = this
       var self = this
       try {
       try {
         var api = require('../../utils/api.js')
         var api = require('../../utils/api.js')
-        api.getReportList().then(function(res) {
+        api.getReportList(self.selectedMemberId).then(function(res) {
           if (res.code === 200 && res.data) {
           if (res.code === 200 && res.data) {
             var list = Array.isArray(res.data) ? res.data : (res.data.list || [])
             var list = Array.isArray(res.data) ? res.data : (res.data.list || [])
             self.reports = list
             self.reports = list

+ 1 - 1
cfc-web/.last_build_commit

@@ -1 +1 @@
-912402f5889fdf9c02107e9fa6e660cfaeea9bcd
+db2f2dacc7a83fcd8343101973cc9d47ca21bcdd

+ 2 - 2
cfc-web/package-lock.json

@@ -1,12 +1,12 @@
 {
 {
   "name": "cfc-web",
   "name": "cfc-web",
-  "version": "1.0.936",
+  "version": "1.0.938",
   "lockfileVersion": 3,
   "lockfileVersion": 3,
   "requires": true,
   "requires": true,
   "packages": {
   "packages": {
     "": {
     "": {
       "name": "cfc-web",
       "name": "cfc-web",
-      "version": "1.0.936",
+      "version": "1.0.938",
       "dependencies": {
       "dependencies": {
         "@wangeditor/editor": "^5.1.23",
         "@wangeditor/editor": "^5.1.23",
         "@wangeditor/editor-for-vue": "^1.0.2",
         "@wangeditor/editor-for-vue": "^1.0.2",

+ 1 - 1
cfc-web/package.json

@@ -1,6 +1,6 @@
 {
 {
   "name": "cfc-web",
   "name": "cfc-web",
-  "version": "1.0.937",
+  "version": "1.0.938",
   "private": true,
   "private": true,
   "scripts": {
   "scripts": {
     "dev": "vue-cli-service serve",
     "dev": "vue-cli-service serve",

+ 11 - 0
cfc-web/public/CHANGELOG-v1.0.md

@@ -4,6 +4,17 @@
 
 
 ---
 ---
 
 
+## v1.0.938 (2026-08-10)
+
+### Bug 修复
+- 权限不足时跳403而非/,避免无限循环导致栈溢出
+
+### 其他
+- 形成 '/dashboard → / → /dashboard → …' 无限循环。
+- 改为 next('/403') 直接跳 403 页面,终止循环。
+- 
+
+
 ## v1.0.937 (2026-08-10)
 ## v1.0.937 (2026-08-10)
 
 
 ### 重构
 ### 重构

+ 12 - 1
cfc-web/public/CHANGELOG.md

@@ -1,6 +1,6 @@
 # 更新日志
 # 更新日志
 
 
-> 当前版本: v1.0.937
+> 当前版本: v1.0.938
 
 
 ## 历史版本
 ## 历史版本
 
 
@@ -8,6 +8,17 @@
 
 
 ---
 ---
 
 
+## v1.0.938 (2026-08-10)
+
+### Bug 修复
+- 权限不足时跳403而非/,避免无限循环导致栈溢出
+
+### 其他
+- 形成 '/dashboard → / → /dashboard → …' 无限循环。
+- 改为 next('/403') 直接跳 403 页面,终止循环。
+- 
+
+
 ## v1.0.937 (2026-08-10)
 ## v1.0.937 (2026-08-10)
 
 
 ### 重构
 ### 重构

+ 1 - 1
cfc-web/src/router/index.js

@@ -793,7 +793,7 @@ router.beforeEach(async (to, from, next) => {
     const perms = getEffectivePermissions(roles)
     const perms = getEffectivePermissions(roles)
     if (!hasPermission(perms, requiredPerm)) {
     if (!hasPermission(perms, requiredPerm)) {
       console.warn('Access denied: insufficient permissions for', to.name)
       console.warn('Access denied: insufficient permissions for', to.name)
-      return next({ path: '/', query: { accessDenied: 'no-permission' }, replace: true })
+      return next({ path: '/403', replace: true })
     }
     }
   }
   }
   return next()
   return next()