ai-admin/docs/菜单表格优化/ALIGNMENT_菜单表格优化.md

3.9 KiB
Raw Permalink Blame History

菜单表格优化 - 需求对齐文档

项目上下文分析

技术栈

  • 前端框架Vue 3 + TypeScript + Composition API
  • UI库Element Plus 2.10.7
  • 构建工具Vite
  • 滚动库Perfect Scrollbar已安装但未在菜单页面使用
  • 样式Scoped CSS + Deep Selectors

现有菜单管理页面架构

  • 页面路径:/src/views/system/MenuView.vue
  • 页面布局使用Flexbox垂直布局高度填满视口
  • 表格组件Element Plus el-table 组件,支持树形数据结构
  • 数据结构分层菜单树目录M/菜单C/按钮F

现有实现分析

布局结构(从上到下):

  1. 卡片头部60px固定高度
  2. 搜索容器100px固定高度
  3. 表格工具栏50px固定高度
  4. 表格容器(calc(100vh - 280px)计算高度)

现有高度控制:

  • 整个页面容器:height: 100vh, overflow: hidden
  • 表格容器:max-height: calc(100vh - 280px)
  • 表格体滚动:.el-table__body-wrapper 设置了 overflow-y: auto

原始需求分析

用户描述的问题:

"菜单有分层可以展开会导致高度超出浏览器可视区的高度,我想要整个页面是不可滚动的,内部表格会根据是否展开菜单层级自适应变化高度,且最大高度不可超过浏览器可视区域的高度,当超过时,菜单表格可上下滚动"

需求分解:

  1. 整个页面不可滚动 - 已实现 ✓
  2. 表格根据展开状态自适应高度 - 需要优化 ⚠️
  3. 最大高度不超过可视区域 - 基本实现,需要精准计算 ⚠️
  4. 表格内部可滚动 - 已实现 ✓

边界确认

任务范围

  • 包含:优化菜单表格的高度自适应逻辑
  • 包含:确保表格滚动体验流畅
  • 包含:精准计算容器高度
  • 不包含:修改菜单数据结构
  • 不包含:重写整个页面布局
  • 不包含更换UI框架或组件

技术约束

  • 必须使用现有的Element Plus表格组件
  • 必须保持现有的Vue 3 Composition API写法
  • 必须保持现有的CSS Scoped样式结构
  • 不能影响现有的功能(搜索、编辑、删除等)

问题识别

当前可能存在的问题:

  1. 高度计算不够精准calc(100vh - 280px) 可能不准确
  2. 展开/折叠时高度没有动态调整:表格容器高度是固定的
  3. 滚动同步可能有问题:表头和表体的同步滚动逻辑复杂
  4. Perfect Scrollbar未使用:已安装但未在表格中应用

潜在的用户体验问题:

  1. 展开大量菜单项时,表格可能超出容器范围
  2. 表格滚动可能不够流畅
  3. 表头和表体可能出现不同步的情况

疑问澄清

需要确认的关键点:

  1. 高度计算精度:当前 calc(100vh - 280px) 中的280px是否包含了所有固定元素的高度

    • 卡片头部60px
    • 搜索容器100px
    • 工具栏50px
    • 卡片内边距40px (上下各20px)
    • 容器间距约10px
    • 实际应该是约260px而非280px
  2. 展开状态响应:用户是否希望表格容器高度根据内容动态调整,还是固定容器高度内滚动?

    • 理解:用户希望固定容器高度,内容超出时滚动
  3. 滚动体验优化是否需要使用已安装的Perfect Scrollbar来提升滚动体验

  4. 浏览器兼容性:是否需要考虑不同浏览器的视口计算差异?

技术实现思路

优化方案:

  1. 精准高度计算:动态计算所有固定元素高度
  2. 响应式调整:监听窗口大小变化,动态调整表格容器
  3. 滚动优化考虑集成Perfect Scrollbar
  4. 性能优化:优化展开/折叠时的重新渲染

实现步骤预估:

  1. 重新计算和校准容器高度
  2. 优化展开/折叠时的高度调整逻辑
  3. 改进滚动同步机制
  4. 测试各种展开状态下的显示效果