status: done created: 2026-06-23 complexity: 🟡中等
copyPage/src 提供了一套更接近 Figma/低代码搭建器的工作台布局:顶部轻量工具栏、左右固定配置面板、中间页面切换条、点阵背景、居中白色页面和悬浮视图控制。当前 Forge 表单设计器和列表设计器虽然功能已经接近完成,但布局和视觉不统一:
list-page-switch、list-designer-head 和页面配置行信息过多,占用中间工作区高度。本次目标是只做布局、样式和展示交互统一,不改现有功能逻辑、数据协议、保存发布链路和拖拽判定逻辑。中间画布范围严格限定为:
可验证结果:
list-page-switch 不再占用过多高度,页面配置、参数和数据配置以更紧凑的面板/弹出层/折叠交互承载。每个结论必须有代码出处(文件路径 + 类名/方法名)
copyPage/src/app/layouts/RootLayout.tsx
Header + flex 三栏工作台,整体 h-screen bg-[#f8f9fa] overflow-hidden。copyPage/src/app/components/Header.tsx
copyPage/src/app/components/LeftPanel.tsx
copyPage/src/app/components/RightPanel.tsx
copyPage/src/app/components/Canvas.tsx
copyPage/src/app/components/canvas/PageDesignSwitcher.tsx
forge-admin-ui/src/views/app-center/components/designer/BusinessFormDesigner.vue
<template> 中外层仍有 designer-section-head 和 form-builder-grid,形成表单设计独有的头部和工作区外框。<style scoped> 中 .business-form-designer 使用 grid-template-columns: minmax(0, 1fr) 280px,与列表设计器内部三栏不同。.form-builder-grid 当前有 padding: 8px、background: #f8fafc,会包一层额外工作区。forge-admin-ui/src/views/app-center/components/designer/forge-form-designer/ForgeFormDesigner.vue
<template> 已经是左侧 ForgeFieldShelf、中间 ForgeFormCanvas、右侧 ForgePropertyPanel。.forge-form-designer 样式存在两段覆盖定义:先定义 248px/336px,后又覆盖成 260px/350px。.designer-toolbar 是表单独有头部,按钮文字较多;.designer-form-tabs-bar 是表单切换条,但与列表 list-page-switch 样式不统一。handleCanvasDragStart() 会拖拽时收起右侧面板,逻辑应保留。forge-admin-ui/src/views/app-center/components/designer/forge-form-designer/ForgeFormCanvas.vue
.forge-form-canvas 当前是线性网格背景,不是参考页点阵背景。.canvas-stage-shell 和 .canvas-stage 已经具备居中白色页面能力。.canvas-viewport-dock 是 position: absolute; bottom/right,在双层滚动场景下容易脱离用户视线。handleCanvasWheel()、applyCanvasPreviewMode()、updateDesignWidth()、updateCanvasZoom() 已经具备鼠标缩放和视口控制能力,逻辑不应重写。forge-admin-ui/src/views/app-center/components/designer/forge-form-designer/ForgeFieldShelf.vue
palette-panel 不完全一致。forge-admin-ui/src/views/app-center/components/designer/forge-form-designer/ForgePropertyPanel.vue
n-tabs + n-collapse。forge-admin-ui/src/views/app-center/components/designer/BusinessListDesigner.vue
.business-list-designer 使用 grid-template-rows: auto auto minmax(0, 1fr),顶部 list-designer-head、中间 list-page-switch、底部 list-workspace。.list-designer-head 已经压缩到 40px,但仍与表单设计顶部工具栏样式不同。.list-page-switch 同时承载页面切换、页面配置、参数配置、数据配置,导致高度过高。.page-config-row、.page-param-row、.page-data-row 当前是铺开的卡片行,和参考页“切换条 + 更多操作”不一致。.list-workspace 还有额外 padding: 8px 和滚动,和内部 ListPageGridDesigner 画布滚动叠加。forge-admin-ui/src/components/lowcode-builder/page/ListPageGridDesigner.vue
.list-grid-designer 是三栏:280px minmax(0, 1fr) 380px。.canvas-panel 已有点阵背景,但颜色和表单不统一。.canvas-grid 是白色页面主体,和表单 .canvas-stage 语义类似。.canvas-viewport-dock 当前在滚动区内 position: sticky,比表单稳定,但样式位置仍需统一。.canvas-toolbar 仍显示 1 个区块 · 20 行 × 12 列 · 1912px · 桌面 1920px / 58% 这类中间信息,本轮应隐藏行列信息或移到非主展示。[ ] 统一工作台框架
[ ] 统一页面切换条
designer-form-tabs-bar 和列表 list-page-switch 都对齐 PageDesignSwitcher:左侧标题/简短信息,中间分段页签,右侧更多操作。formAssets,列表继续切换 list/create/edit/detail 等页面配置。[ ] 统一中间画布四项视觉
.canvas-stage 和列表 .canvas-grid 视觉一致,半径、边框、阴影、留白一致。[ ] 统一左侧面板
ForgeFieldShelf 和列表 palette-panel 的宽度、搜索框、分组标题、两列卡片、禁用态和折叠按钮统一。[ ] 统一右侧属性面板
ForgePropertyPanel 和列表 ListPageGridDesigner 内右侧属性面板统一宽度、背景、标题区、Tab 样式、折叠卡片密度和滚动条。[ ] 按钮展示优化
title,不改变原点击回调。formDesignerSchema、pageSchema、保存发布字段、接口路径和 payload 结构。| 操作 | 表名 | 字段/索引 | 说明 |
|---|---|---|---|
| 无 | - | - | 本次仅前端布局、样式和展示交互 |
| 操作 | 接口 | 方法 | 变更内容 |
|---|---|---|---|
| 无 | - | - | 不改变接口协议 |
forge-admin-ui/src/views/app-center/components/designer/BusinessFormDesigner.vueforge-admin-ui/src/views/app-center/components/designer/forge-form-designer/ForgeFormDesigner.vueforge-admin-ui/src/views/app-center/components/designer/forge-form-designer/ForgeFormCanvas.vueforge-admin-ui/src/views/app-center/components/designer/forge-form-designer/ForgeFieldShelf.vueforge-admin-ui/src/views/app-center/components/designer/forge-form-designer/ForgePropertyPanel.vueforge-admin-ui/src/views/app-center/components/designer/BusinessListDesigner.vueforge-admin-ui/src/components/lowcode-builder/page/ListPageGridDesigner.vueListPageGridDesigner.vue 文件较大,改动应集中在模板工具区和样式,不触碰网格拖拽、缩放、嵌套块逻辑。ForgeFormDesigner.vue 现有 scoped CSS 存在重复覆盖,清理时必须确认折叠状态 left-collapsed/right-collapsed/right-open 没有回退。title 和可识别图标保证可用性。page-config-row/page-param-row/page-data-row 可以从常驻展示改为折叠/弹出式展示,但字段和保存逻辑保持不变?#f8f9fa。#fcfcfc,右侧 #fafafa。#e4e4e7 / #e5e7eb。| Task | 状态 | 实际改动文件 | 备注 |
|---|---|---|---|
| Research | 完成 | 无 | 已对照 copyPage/src、表单设计器、列表设计器入口和画布组件 |
| Plan | 完成 | code-copilot/changes/lowcode-designer-workbench-visual-unification/spec.md |
本文档 |
| Apply | 完成 | 表单/列表设计器相关 Vue 文件 | 统一工作台、页面切换条、点阵画布、白色页面、悬浮视图控制和左右面板样式 |
| Verify | 完成 | 无 | targeted eslint、pnpm --dir forge-admin-ui build、git diff --check 均通过 |
待实现后补充。