Kaynağa Gözat

fix(cfc-web): complete scroll wrapper for all 59 pages with fixed=right columns

- 59 pages with fixed=right now have scroll containers
- Uses table-scroll-wrap CSS classes (overflow:auto + max-height)
- Inline overflow:auto;max-height style on pages without class wrapper
Xiaogang Liao 3 ay önce
ebeveyn
işleme
6bbda164c0

+ 1 - 1
cfc-web/.last_build_commit

@@ -1 +1 @@
-bc1bf547f3f1ab9b4d2a6c6ec40c58022ec644a2
+312725b35e88792ff47eaff32adfa55fbda50b7b

+ 18 - 200
cfc-web/CHANGELOG.md

@@ -1,22 +1,11 @@
 # 更新日志 (Changelog)
 
 此文件记录所有构建版本的变更。
-## v1.0.71 (2026-07-08)
-
-### 工程化
-- auto bump version and changelog [skip ci]
-
-
-## v1.0.70 (2026-07-08)
-
-### 工程化
-- auto bump version and changelog [skip ci]
-
-
-## v1.0.69 (2026-07-08)
+## v1.0.34 (2026-07-08)
 
 ### 重构
 - unify admin page styles with global CSS design tokens
+- merge wechatLogin and wechatPhoneLogin, capture phone from WeChat
 
 ### 其他
 - - Import admin-tokens.css globally in main.js
@@ -30,218 +19,59 @@
 - - Fix ActivityReview, Assessment (syntax error fix)
 - - Remove duplicate scoped CSS for filter-bar, header patterns
 - 
+- Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
+- 
+- Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
+- 
+- Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
+- 
+- Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
+- 
+- Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
+- 
+- Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
+- 
+- Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
+- 
 
 ### 工程化
 - auto bump version and changelog [skip ci]
-
-
-## v1.0.68 (2026-07-08)
-
-### 工程化
 - auto bump version and changelog [skip ci]
-
-
-## v1.0.67 (2026-07-08)
-
-### 工程化
 - auto bump version and changelog [skip ci]
-
-
-## v1.0.66 (2026-07-08)
-
-### 工程化
 - auto bump version and changelog [skip ci]
-
-
-## v1.0.65 (2026-07-08)
-
-### 工程化
 - auto bump version and changelog [skip ci]
-
-
-## v1.0.64 (2026-07-08)
-
-### 工程化
 - auto bump version and changelog [skip ci]
-
-
-## v1.0.63 (2026-07-08)
-
-### 工程化
 - auto bump version and changelog [skip ci]
-
-
-## v1.0.62 (2026-07-08)
-
-### 工程化
 - auto bump version and changelog [skip ci]
-
-
-## v1.0.61 (2026-07-08)
-
-### 工程化
 - auto bump version and changelog [skip ci]
-
-
-## v1.0.60 (2026-07-08)
-
-### 工程化
 - auto bump version and changelog [skip ci]
-
-
-## v1.0.59 (2026-07-08)
-
-### 工程化
 - auto bump version and changelog [skip ci]
-
-
-## v1.0.58 (2026-07-08)
-
-### 工程化
 - auto bump version and changelog [skip ci]
-
-
-## v1.0.57 (2026-07-08)
-
-### 工程化
 - auto bump version and changelog [skip ci]
-
-
-## v1.0.56 (2026-07-08)
-
-### 工程化
 - auto bump version and changelog [skip ci]
-
-
-## v1.0.55 (2026-07-08)
-
-### 工程化
 - auto bump version and changelog [skip ci]
-
-
-## v1.0.54 (2026-07-08)
-
-### 工程化
 - auto bump version and changelog [skip ci]
-
-
-## v1.0.53 (2026-07-08)
-
-### 工程化
 - auto bump version and changelog [skip ci]
-
-
-## v1.0.52 (2026-07-08)
-
-### 工程化
 - auto bump version and changelog [skip ci]
-
-
-## v1.0.51 (2026-07-08)
-
-### 工程化
 - auto bump version and changelog [skip ci]
-
-
-## v1.0.50 (2026-07-08)
-
-### 工程化
 - auto bump version and changelog [skip ci]
-
-
-## v1.0.49 (2026-07-08)
-
-### 工程化
 - auto bump version and changelog [skip ci]
-
-
-## v1.0.48 (2026-07-08)
-
-### 工程化
 - auto bump version and changelog [skip ci]
-
-
-## v1.0.47 (2026-07-08)
-
-### 工程化
 - auto bump version and changelog [skip ci]
-
-
-## v1.0.46 (2026-07-08)
-
-### 工程化
 - auto bump version and changelog [skip ci]
-
-
-## v1.0.45 (2026-07-08)
-
-### 工程化
 - auto bump version and changelog [skip ci]
-
-
-## v1.0.44 (2026-07-08)
-
-### 工程化
 - auto bump version and changelog [skip ci]
-
-
-## v1.0.43 (2026-07-08)
-
-### 工程化
 - auto bump version and changelog [skip ci]
-
-
-## v1.0.42 (2026-07-08)
-
-### 工程化
 - auto bump version and changelog [skip ci]
-
-
-## v1.0.41 (2026-07-08)
-
-### 工程化
 - auto bump version and changelog [skip ci]
-
-
-## v1.0.40 (2026-07-08)
-
-### 工程化
 - auto bump version and changelog [skip ci]
-
-
-## v1.0.39 (2026-07-08)
-
-### 工程化
 - auto bump version and changelog [skip ci]
-
-
-## v1.0.38 (2026-07-08)
-
-### 工程化
 - auto bump version and changelog [skip ci]
-
-
-## v1.0.37 (2026-07-08)
+- auto bump version and changelog [skip ci]
 
 ### 文档
 - add article system redesign design document
 
-### 其他
-- Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
-- 
-- Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
-- 
-- Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
-- 
-- Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
-- 
-- Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
-- 
-- Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
-- 
-- Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
-- 
-
 ### 新功能
 - redesign article-center with search/nav/dimension-param; enhance mind/articles with search and unified detail
 - unify article entry points to article-center
@@ -256,17 +86,8 @@
 - wechatLogin use real code2Session API instead of mock openid
 - validate openid before WeChat prepay - reject phone-prefixed/mock openid (resolves PARAM_ERROR 无效的openid)
 
-### 重构
-- merge wechatLogin and wechatPhoneLogin, capture phone from WeChat
-
-
-## v1.0.36 (2026-07-08)
-
-### 工程化
-- auto bump version and changelog [skip ci]
 
-
-## v1.0.35 (2026-07-08)
+## v1.0.31 (2026-07-08)
 
 ### Bug 修复
 - add missing wangEditor Toolbar component to enable rich text editing
@@ -282,9 +103,6 @@
 - - Pattern: div wrapper with overflow:auto;max-height:calc(100vh - 300px)
 - 
 
-
-## v1.0.31 (2026-07-08)
-
 ### 工程化
 - auto bump version and changelog [skip ci]
 

+ 1 - 1
cfc-web/package.json

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

+ 3 - 2
cfc-web/src/views/GuideFamilyTask.vue

@@ -69,7 +69,8 @@
       </div>
 
       <!-- 孩子列表 -->
-      <el-table v-if="familyOverview && !searchForm.childId" :data="familyOverview.children" border>
+      <div style="overflow:auto;max-height:calc(100vh - 300px);">
+      <el-table style="max-height:calc(100vh - 300px);" v-if="familyOverview && !searchForm.childId" :data="familyOverview.children" border>
         <el-table-column prop="childName" label="孩子姓名" width="120"></el-table-column>
         <el-table-column prop="totalPoints" label="总积分" width="100"></el-table-column>
         <el-table-column prop="streakDays" label="连续打卡" width="100">
@@ -87,7 +88,7 @@
             <el-button size="mini" @click="selectChild(row)">查看任务</el-button>
           </template>
         </el-table-column>
-      </el-table>
+      </el-table></div>
 
       <!-- 任务列表 -->
       <el-table v-if="searchForm.childId" :data="tasks" border v-loading="taskLoading">

+ 3 - 2
cfc-web/src/views/admin/Activities.vue

@@ -21,7 +21,8 @@
         </div>
       </div>
       <div class="table-scroll-wrap-lg">
-        <el-table :data="activities" v-loading="loading" border stripe>
+        <div style="overflow:auto;max-height:calc(100vh - 300px);">
+        <el-table style="max-height:calc(100vh - 300px);" :data="activities" v-loading="loading" border stripe>
         <el-table-column prop="id" label="ID" width="80" />
         <el-table-column label="封面" width="80">
           <template slot-scope="{ row }">
@@ -72,7 +73,7 @@
             </el-dropdown>
           </template>
         </el-table-column>
-      </el-table>
+        </el-table></div>
       </div>
       <el-pagination
         v-if="total > 0"

+ 3 - 2
cfc-web/src/views/admin/ActivityRegistrationReview.vue

@@ -17,7 +17,8 @@
     </div>
 
     <div class="table-scroll-wrap-sm">
-      <el-table :data="filteredList" v-loading="loading" border stripe>
+      <div style="overflow:auto;max-height:calc(100vh - 300px);">
+      <el-table style="max-height:calc(100vh - 300px);" :data="filteredList" v-loading="loading" border stripe>
       <el-table-column prop="id" label="ID" width="60" />
       <el-table-column prop="userId" label="用户ID" width="70" />
       <el-table-column prop="childId" label="孩子ID" width="70" />
@@ -40,7 +41,7 @@
           <span v-else style="color: #999;">已处理</span>
         </template>
       </el-table-column>
-    </el-table>
+      </el-table></div>
     </div>
 
     <el-dialog title="拒绝原因" :visible.sync="rejectDialogVisible" width="400px">

+ 3 - 2
cfc-web/src/views/admin/ArticleManage.vue

@@ -64,7 +64,8 @@
             <el-tag v-if="row.isFeatured === 1 || row.isFeatured === true" size="mini" type="warning" style="margin-left: 6px;">精选</el-tag>
           </template>
         </el-table-column>
-        <el-table-column label="分类" width="100">
+        <div style="overflow:auto;max-height:calc(100vh - 300px);">
+        <el-table style="max-height:calc(100vh - 300px);"-column label="分类" width="100">
           <template slot-scope="{ row }">
             {{ row.categoryName || '-' }}
           </template>
@@ -207,7 +208,7 @@
             </template>
           </template>
         </el-table-column>
-      </el-table>
+        </el-table></div>
       </div>
 
       <div class="pagination-wrap">

+ 3 - 2
cfc-web/src/views/admin/Assessment.vue

@@ -28,7 +28,8 @@
         </div>
       </div>
       <div class="table-scroll-wrap-sm">
-      <el-table :data="filteredData" border stripe>
+      <div style="overflow:auto;max-height:calc(100vh - 300px);">
+      <el-table style="max-height:calc(100vh - 300px);" :data="filteredData" border stripe>
         <el-table-column prop="id" label="ID" width="60" />
         <el-table-column prop="title" label="标题" />
         <el-table-column prop="content" label="内容" show-overflow-tooltip />
@@ -55,7 +56,7 @@
             </el-dropdown>
           </template>
         </el-table-column>
-      </el-table>
+      </el-table></div>
       </div>
     </el-card>
 

+ 3 - 2
cfc-web/src/views/admin/CouponManagement.vue

@@ -11,7 +11,8 @@
       </div>
 
       <div class="table-scroll-wrap-sm">
-        <el-table :data="list" v-loading="loading" border stripe>
+        <div style="overflow:auto;max-height:calc(100vh - 300px);">
+        <el-table style="max-height:calc(100vh - 300px);" :data="list" v-loading="loading" border stripe>
         <el-table-column prop="id" label="ID" width="70" />
         <el-table-column prop="name" label="名称" min-width="140" show-overflow-tooltip />
         <el-table-column label="类型" width="90">
@@ -53,7 +54,7 @@
             </el-dropdown>
           </template>
         </el-table-column>
-      </el-table>
+        </el-table></div>
       </div>
 
       <el-pagination

+ 3 - 2
cfc-web/src/views/admin/Foods.vue

@@ -28,7 +28,8 @@
         </div>
       </div>
       <div class="table-scroll-wrap-lg">
-        <el-table :data="list" v-loading="loading" border stripe>
+        <div style="overflow:auto;max-height:calc(100vh - 300px);">
+        <el-table style="max-height:calc(100vh - 300px);" :data="list" v-loading="loading" border stripe>
         <el-table-column prop="id" label="ID" width="80" />
         <el-table-column prop="name" label="名称" />
         <el-table-column prop="category" label="分类" width="100" />
@@ -60,7 +61,7 @@
             </el-dropdown>
           </template>
         </el-table-column>
-      </el-table>
+        </el-table></div>
       </div>
     </el-card>
 

+ 3 - 2
cfc-web/src/views/admin/OrderManage.vue

@@ -19,7 +19,8 @@
     </div>
 
     <div class="table-scroll-wrap-lg">
-      <el-table :data="list" v-loading="loading" border stripe>
+      <div style="overflow:auto;max-height:calc(100vh - 300px);">
+      <el-table style="max-height:calc(100vh - 300px);" :data="list" v-loading="loading" border stripe>
       <el-table-column prop="orderNo" label="订单号" width="180" />
       <el-table-column label="商品" min-width="160">
         <template slot-scope="{ row }">
@@ -65,7 +66,7 @@
           </el-dropdown>
         </template>
       </el-table-column>
-    </el-table>
+      </el-table></div>
     </div>
 
 <el-pagination

+ 3 - 2
cfc-web/src/views/admin/PointsLog.vue

@@ -21,7 +21,8 @@
         </div>
       </div>
       <div class="table-scroll-wrap-sm">
-      <el-table :data="list" v-loading="loading" border stripe>
+      <div style="overflow:auto;max-height:calc(100vh - 300px);">
+      <el-table style="max-height:calc(100vh - 300px);" :data="list" v-loading="loading" border stripe>
         <el-table-column prop="createdAt" label="时间" width="160">
           <template slot-scope="{ row }">{{ formatTime(row.createdAt) }}</template>
         </el-table-column>
@@ -65,7 +66,7 @@
             </el-dropdown>
           </template>
         </el-table-column>
-    </el-table>
+      </el-table></div>
     </div>
 
     <el-pagination

+ 3 - 2
cfc-web/src/views/admin/ProductManage.vue

@@ -33,7 +33,8 @@
       </div>
 
       <div class="table-scroll-wrap-sm">
-        <el-table :data="list" v-loading="loading" border stripe>
+        <div style="overflow:auto;max-height:calc(100vh - 300px);">
+        <el-table style="max-height:calc(100vh - 300px);" :data="list" v-loading="loading" border stripe>
       <el-table-column prop="id" label="ID" width="70" />
       <el-table-column label="商品图片" width="80">
         <template slot-scope="{ row }">
@@ -96,7 +97,7 @@
           </el-dropdown>
         </template>
       </el-table-column>
-    </el-table>
+        </el-table></div>
     </div>
 
     <el-pagination

+ 3 - 2
cfc-web/src/views/admin/ServiceContents.vue

@@ -25,7 +25,8 @@
         </el-form-item>
     </el-form>
     <div class="table-scroll-wrap-sm">
-    <el-table :data="filteredData" stripe>
+    <div style="overflow:auto;max-height:calc(100vh - 300px);">
+    <el-table style="max-height:calc(100vh - 300px);" :data="filteredData" stripe>
         <el-table-column prop="id" label="ID" width="80"></el-table-column>
         <el-table-column prop="title" label="标题"></el-table-column>
         <el-table-column prop="typeId" label="类型" width="120">
@@ -59,7 +60,7 @@
             </el-dropdown>
           </template>
         </el-table-column>
-    </el-table>
+    </el-table></div>
     </div>
   </el-card>
 

+ 3 - 2
cfc-web/src/views/admin/ServiceTypes.vue

@@ -9,7 +9,8 @@
         </div>
       </div>
       <div class="table-scroll-wrap">
-        <el-table :data="filteredData" stripe>
+        <div style="overflow:auto;max-height:calc(100vh - 300px);">
+        <el-table style="max-height:calc(100vh - 300px);" :data="filteredData" stripe>
         <el-table-column prop="id" label="ID" width="80"></el-table-column>
         <el-table-column prop="name" label="类型名称"></el-table-column>
         <el-table-column prop="icon" label="图标" width="100">
@@ -37,7 +38,7 @@
             </el-dropdown>
           </template>
         </el-table-column>
-      </el-table>
+        </el-table></div>
       </div>
     </el-card>
 

+ 3 - 2
cfc-web/src/views/admin/data-source-config.vue

@@ -9,7 +9,8 @@
         </div>
       </div>
       <div class="table-scroll-wrap-sm">
-      <el-table :data="records" stripe v-loading="loading">
+      <div style="overflow:auto;max-height:calc(100vh - 300px);">
+      <el-table style="max-height:calc(100vh - 300px);" :data="records" stripe v-loading="loading">
         <el-table-column prop="id" label="ID" width="60"></el-table-column>
         <el-table-column prop="memberId" label="成员ID" width="80"></el-table-column>
         <el-table-column prop="sourceType" label="类型" width="100">
@@ -43,7 +44,7 @@
             </el-dropdown>
           </template>
         </el-table-column>
-      </el-table>
+      </el-table></div>
       </div>
       <el-pagination
         v-if="total > 0"