Browse Source

fix: ActivityEdit/ArticleEdit full scroll, action tab no auto-select, timeout 800ms

- ActivityEdit/ArticleEdit: match ProductEdit layout chain (display:block, width:100%, overflow:visible)
- action/index.vue: revert auto-select-first-child, only load when saved childId matches
- action/index.vue: tab-transition fallback timeout 5000ms -> 800ms
- ArticleEdit: add maxFileSize 5MB to upload config
- DatabaseInitializer: gate test data behind app.init-test-data flag
Xiaogang Liao 3 months ago
parent
commit
12dac9c1e0

+ 14 - 4
cfc-backend/src/main/java/com/etotem/cfc/config/DatabaseInitializer.java

@@ -3,6 +3,7 @@ package com.etotem.cfc.config;
 import com.etotem.cfc.mapper.*;
 import lombok.extern.slf4j.Slf4j;
 import javax.annotation.Resource;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.boot.CommandLineRunner;
 import org.springframework.core.io.ResourceLoader;
 import org.springframework.jdbc.core.JdbcTemplate;
@@ -25,6 +26,9 @@ public class DatabaseInitializer implements CommandLineRunner {
     @Resource
     private ResourceLoader resourceLoader;
 
+    @Value("${app.init-test-data:false}")
+    private boolean initTestData;
+
     @Override
     public void run(String... args) throws Exception {
         log.info("开始初始化数据库...");
@@ -38,12 +42,18 @@ public class DatabaseInitializer implements CommandLineRunner {
         // 3. 执行数据库迁移(添加新列)
         runMigrations();
 
-        // 4. 初始化默认数据
-        initializeDefaultData();
-
-        // 5. 初始化食品相关表
+        // 4. 初始化食品相关表(DDL,始终执行)
         initFoodTables();
 
+        // 5. 初始化测试/种子数据(仅测试/开发环境)
+        if (initTestData) {
+            log.info("init-test-data=true,开始初始化测试/种子数据...");
+            initializeDefaultData();
+            log.info("测试/种子数据初始化完成!");
+        } else {
+            log.info("init-test-data=false,跳过测试/种子数据初始化(生产模式)");
+        }
+
         log.info("数据库初始化完成!");
     }
 

+ 4 - 0
cfc-backend/src/main/resources/application.yml

@@ -113,6 +113,10 @@ logging:
   level:
     com.etotem.cfc: debug
 
+# 应用配置
+app:
+  init-test-data: false  # 是否初始化测试/种子数据,生产环境应关闭
+
 # Admin 登录配置
 admin:
   skip-captcha: true  # 测试环境跳过验证码,方便自动化测试

+ 3 - 8
cfc-frontend/pages/action/index.vue

@@ -299,13 +299,8 @@ export default {
               break
             }
           }
-          // 首次进入或未选孩子时,默认选第一个孩子以完成本页首屏渲染
-          if (!found && self.children.length > 0) {
-            self.currentChildId = self.children[0].childId
-            self.activeChildId = self.children[0].childId
-            self.currentChildName = self.children[0].name || self.children[0].nickname || '孩子'
-          }
-          if (self.activeChildId) {
+          // 孩子选择完全是手动的,不自动默认选
+          if (found) {
             self.loadDimensionData()
           }
         }
@@ -567,7 +562,7 @@ export default {
       setTimeout(function() {
         if (unwatch) unwatch()
         self.showTabTransition = false
-      }, 2000)
+      }, 800)
     }
   }
 }

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

@@ -14,12 +14,12 @@
 
 ### 文档
 - 家庭成员选择能力分析 — 梳理childId/memberId接口
+- 补充活动流程图 — 详情页分享/报名按钮 + 评价流程
 
 
 ## v1.0.620 (2026-07-29)
 
 ### 文档
-- 补充活动流程图 — 详情页分享/报名按钮 + 评价流程
 - 新增 checkout 地址管理改造设计文档和实施计划
 
 ### 其他

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

@@ -18,12 +18,12 @@
 
 ### 文档
 - 家庭成员选择能力分析 — 梳理childId/memberId接口
+- 补充活动流程图 — 详情页分享/报名按钮 + 评价流程
 
 
 ## v1.0.620 (2026-07-29)
 
 ### 文档
-- 补充活动流程图 — 详情页分享/报名按钮 + 评价流程
 - 新增 checkout 地址管理改造设计文档和实施计划
 
 ### 其他

+ 6 - 2
cfc-web/src/views/admin/ActivityEdit.vue

@@ -520,18 +520,22 @@ activityId
 <style scoped>
 .activity-edit {
   padding: 20px;
-  min-height: 0;
-  overflow-y: auto;
+  display: block;
+  min-height: auto;
 }
 .activity-edit > .el-card {
   display: block;
   min-height: auto;
+  width: 100%;
 }
 .activity-edit > .el-card /deep/ .el-card__body {
   display: block;
   min-height: auto;
   overflow: visible;
 }
+.activity-edit /deep/ .el-form {
+  width: 100%;
+}
 .activity-edit /deep/ .admin-page-header {
   display: flex;
   align-items: flex-start;

+ 7 - 2
cfc-web/src/views/admin/ArticleEdit.vue

@@ -255,6 +255,7 @@ export default {
             server: baseURL + '/api/admin/articles/upload/image',
             headers: token ? { Authorization: 'Bearer ' + token } : {},
             maxNumberOfFiles: 1,
+            maxFileSize: 5 * 1024 * 1024,
             fieldName: 'file',
             customAlert: (msg, type) => {
               this.$message && this.$message({ message: msg, type: type || 'error' })
@@ -518,18 +519,22 @@ export default {
 <style scoped>
 .article-edit {
   padding: 20px;
-  min-height: 0;
-  overflow-y: auto;
+  display: block;
+  min-height: auto;
 }
 .article-edit > .el-card {
   display: block;
   min-height: auto;
+  width: 100%;
 }
 .article-edit > .el-card /deep/ .el-card__body {
   display: block;
   min-height: auto;
   overflow: visible;
 }
+.article-edit /deep/ .el-form {
+  width: 100%;
+}
 .article-edit /deep/ .admin-page-header {
   display: flex;
   align-items: flex-start;