copyPage/src 参考页面:
RootLayout.tsxHeader.tsxLeftPanel.tsxRightPanel.tsxCanvas.tsxcanvas/PageDesignSwitcher.tsxproperties/*BusinessFormDesigner.vueforge-form-designer/ForgeFormDesigner.vueforge-form-designer/ForgeFormCanvas.vueforge-form-designer/ForgeFieldShelf.vueforge-form-designer/ForgePropertyPanel.vueBusinessListDesigner.vuesrc/components/lowcode-builder/page/ListPageGridDesigner.vuespec.mdtasks.mdtest-spec.mdBusinessFormDesigner.vue 外层工作区背景、边界和包裹间距。ForgeFormDesigner.vue 三栏宽度、顶部工具栏和表单页切换条。ForgeFormCanvas.vue 点阵背景、居中白色页面、底部居中悬浮视图控制。ForgeFieldShelf.vue 左侧组件库视觉密度。ForgePropertyPanel.vue 右侧属性面板标题、搜索、Tab 和折叠卡片样式。BusinessListDesigner.vue 顶部工具栏和页面切换条。page-config-row、page-param-row、page-data-row 收到悬浮页面设置面板中。ListPageGridDesigner.vue 三栏宽度、点阵背景、白色页面、悬浮视图控制和左右面板样式。pnpm --dir forge-admin-ui exec eslint src/views/app-center/components/designer/BusinessFormDesigner.vue src/views/app-center/components/designer/forge-form-designer/ForgeFormDesigner.vue src/views/app-center/components/designer/forge-form-designer/ForgeFormCanvas.vue src/views/app-center/components/designer/forge-form-designer/ForgeFieldShelf.vue src/views/app-center/components/designer/forge-form-designer/ForgePropertyPanel.vue src/views/app-center/components/designer/BusinessListDesigner.vue src/components/lowcode-builder/page/ListPageGridDesigner.vue
git diff --check -- code-copilot/changes/lowcode-designer-workbench-visual-unification forge-admin-ui/src/views/app-center/components/designer/BusinessFormDesigner.vue forge-admin-ui/src/views/app-center/components/designer/forge-form-designer/ForgeFormDesigner.vue forge-admin-ui/src/views/app-center/components/designer/forge-form-designer/ForgeFormCanvas.vue forge-admin-ui/src/views/app-center/components/designer/forge-form-designer/ForgeFieldShelf.vue forge-admin-ui/src/views/app-center/components/designer/forge-form-designer/ForgePropertyPanel.vue forge-admin-ui/src/views/app-center/components/designer/BusinessListDesigner.vue forge-admin-ui/src/components/lowcode-builder/page/ListPageGridDesigner.vue
pnpm --dir forge-admin-ui build
// 注释、UserSelectModal 命名冲突、src/store/index.js 动静态混合 import;本轮未处理这些既有问题。copyPage/src:
BusinessObjectDesignerShell.vue:外层设计器壳改为 48px 顶栏、56px 折叠导航、无卡片内边距工作台,整体接近 RootLayout/Header。ForgeFormCanvas.vue:画布操作面板从底部改到画布顶部居中,补充缩小/放大/源码/专注图标按钮。ForgeFormDesigner.vue:接入画布源码和专注事件;源码打开右侧源码页签,专注收起左右栏。ForgePropertyPanel.vue:右侧属性面板 Tab 收敛为更接近 RightPanel 的分段按钮样式,基础配置命名调整为“属性”,样式配置调整为“样式”。ListPageGridDesigner.vue:列表画布操作面板从底部改到顶部居中,将源码/专注移入悬浮胶囊;右侧属性面板补充“属性/样式/交互”分段视觉。pnpm --dir forge-admin-ui exec eslint src/views/app-center/components/designer/BusinessObjectDesignerShell.vue src/views/app-center/components/designer/BusinessFormDesigner.vue src/views/app-center/components/designer/forge-form-designer/ForgeFormDesigner.vue src/views/app-center/components/designer/forge-form-designer/ForgeFormCanvas.vue src/views/app-center/components/designer/forge-form-designer/ForgePropertyPanel.vue src/views/app-center/components/designer/BusinessListDesigner.vue src/components/lowcode-builder/page/ListPageGridDesigner.vue
git diff --check
pnpm --dir forge-admin-ui build
// 注释、UserSelectModal 命名冲突、src/store/index.js 动静态混合 import;本轮未处理这些既有问题。ForgePropertyPanel.vue:
transform: translate(x, y)。ListPageGridDesigner.vue:
pnpm --dir forge-admin-ui exec eslint src/views/app-center/components/designer/forge-form-designer/ForgePropertyPanel.vue src/components/lowcode-builder/page/ListPageGridDesigner.vue
git diff --check
BusinessObjectDesignerShell.vue:发布按钮从 Naive Button 改为原生按钮,彻底脱离主题变量,避免白底白字/不可见问题。ListPageGridDesigner.vue:右侧属性面板 tab 下内容增加 copyPage 风格白底卡片容器,divider 改为属性卡片标题样式;输入框、数字框、下拉框改为 zinc-100 浅灰底、透明默认边框、focus 靛蓝边框。ForgePropertyPanel.vue:表单设计右侧面板同步 copyPage 风格,折叠项和直接配置卡片统一浅灰细边框、白底、8px 圆角、小字号表单控件。pnpm --dir forge-admin-ui exec eslint src/views/app-center/components/designer/BusinessObjectDesignerShell.vue src/views/app-center/components/designer/forge-form-designer/ForgePropertyPanel.vue src/components/lowcode-builder/page/ListPageGridDesigner.vue
git diff --check
pnpm --dir forge-admin-ui build
// 注释、UserSelectModal 命名冲突、src/store/index.js 动静态混合 import;本轮未处理这些既有问题。ListPageGridDesigner.vue:列表设计右侧“基础配置”里的基础路径/行主键、真实接口预览、接口地址改为 copyPage 风格的紧凑配置块;接口地址改为 GET/POST/PUT/DEL 方法徽标 + 单行输入,避免旧的输入框堆叠。ListPageGridDesigner.vue:搜索与表格、工具栏与导入导出、事件配置等区域统一白底浅灰细边框、小字号、8px 圆角;事件配置补充未配置空状态。CrudDefaultParamsEditor.vue:默认参数编辑器内部卡片、空状态、输入控件改为同一套 copyPage 风格。CrudHookRulesEditor.vue:事件回调/参数处理编辑器内部规则行、说明、空状态和输入控件统一为紧凑卡片样式。ForgePropertyPanel.vue:表单设计右侧 CRUD 面板重构为“接口与数据源”卡片,主面板直接展示基础路径/行主键和 API 接口地址配置;更多配置抽屉里的 AiCrudPage API 也改为方法徽标行。ForgePropertyPanel.vue:表单右侧字段配置卡片、交互预设、事件规则、空状态去掉旧蓝色强调,统一为白底/浅灰/靛蓝 focus 的属性面板风格。pnpm --dir forge-admin-ui exec eslint src/components/lowcode-builder/page/ListPageGridDesigner.vue src/components/lowcode-builder/page/CrudDefaultParamsEditor.vue src/components/lowcode-builder/page/CrudHookRulesEditor.vue src/views/app-center/components/designer/forge-form-designer/ForgePropertyPanel.vue
pnpm 需要写用户目录工具缓存,使用提权执行。git diff --check
pnpm --dir forge-admin-ui build
// 注释、UserSelectModal 命名冲突、src/store/index.js 动静态混合 import;本轮未处理这些既有问题。copyPage 的表单属性参考稿:
ForgePropertyPanel.vue:表单设计右侧选中组件后隐藏独立“布局 / 状态 / 源码”tab;校验规则合入“属性”,状态联动合入“交互”。ForgePropertyPanel.vue:源码入口改为由中间画布工具条打开弹窗,不再占用右侧属性 tab。ForgePropertyPanel.vue:组件“样式”tab 改成“位置与尺寸 / 布局与边距 / 文字排版 / 外观与装饰”四个折叠面板;表单级样式也同步改成这四组。ForgePropertyPanel.vue:表单资产区的新建/复制按钮改为纯图标按钮,顺序调整为复制、创建。ListPageGridDesigner.vue:列表设计 AiCrudPage 的“搜索与表格”改名为“搜索字段与列表列”,明确拆出“配置搜索字段”和“配置列表字段”两个入口。ListPageGridDesigner.vue:自定义操作入口上移到字段配置附近并用高亮卡片展示,避免藏在工具栏折叠项里找不到。ListPageGridDesigner.vue:相关折叠面板标题调整为“接口与数据源”“工具栏按钮与导入导出”“默认参数与数据处理”“生命周期回调”,降低理解成本。pnpm --dir forge-admin-ui exec eslint src/views/app-center/components/designer/forge-form-designer/ForgePropertyPanel.vue src/components/lowcode-builder/page/ListPageGridDesigner.vue
git diff --check
pnpm --dir forge-admin-ui build
// 注释、UserSelectModal 命名冲突、src/store/index.js 动静态混合 import;本轮未处理这些既有问题。ForgePropertyPanel.vue:状态联动里的“显示/隐藏规则”“禁用/只读规则”改为可点击入口,一键新增对应交互规则并留在交互面板继续配置目标字段和值。ForgePropertyPanel.vue:表单选中组件和表单级“外观与装饰”改成 copyPage 风格紧凑控件,使用色块 + Hex 输入 + 边框类型 + 圆角 + 阴影选择,减少 Naive 大控件占位。ListPageGridDesigner.vue:列表设计“样式”tab 的外观配置同步改成同款紧凑控件,保持写回现有 props.style。ListPageGridDesigner.vue:“搜索字段与列表列”里的字段配置入口压缩为小密度卡片,按钮文案改短;自定义操作卡片和树表操作开关同步收紧。pnpm --dir forge-admin-ui exec eslint src/views/app-center/components/designer/forge-form-designer/ForgePropertyPanel.vue src/components/lowcode-builder/page/ListPageGridDesigner.vue
git diff --check -- code-copilot/changes/lowcode-designer-workbench-visual-unification forge-admin-ui/src/views/app-center/components/designer/forge-form-designer/ForgePropertyPanel.vue forge-admin-ui/src/components/lowcode-builder/page/ListPageGridDesigner.vue
pnpm --dir forge-admin-ui build
// 注释、UserSelectModal 命名冲突、src/store/index.js 动静态混合 import;本轮未处理这些既有问题。ForgePropertyPanel.vue / ListPageGridDesigner.vue:背景色、边框色的色块改成可点击原生色板,同时保留 Hex 输入。ForgeFormDesigner.vue / ListPageGridDesigner.vue:表单设计和列表设计右侧属性面板从 280px 加宽到 320px,内部 padding 进一步收紧。ListPageGridDesigner.vue:“搜索字段与列表列”改名为“查询与列表字段”;字段配置按钮改为齿轮图标入口,避免按钮文案被截断。ListPageGridDesigner.vue:搜索布局补充“每行字段 / 标签宽 / 默认显示 / 行间距”显式标签和单位。ListPageGridDesigner.vue:事件配置每个下拉补充说明标签,事件触发和执行动作选项改为更业务化文案。ForgePropertyPanel.vue:表单样式“位置与尺寸”和列表样式“位置与尺寸”统一为坐标、宽度模式、高度控制的紧凑分段控件。ForgePropertyPanel.vue:表单资产“当前为默认”改成不可点击状态徽标;其他表单维护列表去掉重复“切换编辑”按钮。ForgePropertyPanel.vue:字段覆盖规则里的“必填 / 只读 / 隐藏”改为带文字的开关组,避免只靠 title。pnpm --dir forge-admin-ui exec eslint src/views/app-center/components/designer/forge-form-designer/ForgeFormDesigner.vue src/views/app-center/components/designer/forge-form-designer/ForgePropertyPanel.vue src/components/lowcode-builder/page/ListPageGridDesigner.vue
git diff --check -- forge-admin-ui/src/views/app-center/components/designer/forge-form-designer/ForgeFormDesigner.vue forge-admin-ui/src/views/app-center/components/designer/forge-form-designer/ForgePropertyPanel.vue forge-admin-ui/src/components/lowcode-builder/page/ListPageGridDesigner.vue
pnpm --dir forge-admin-ui build
// 注释、UserSelectModal 命名冲突、src/store/index.js 动静态混合 import;本轮未处理这些既有问题。BusinessObjectDesignerShell.vue:修复顶部保存/发布按钮白底白字问题;预览图标从眼睛换为播放预览图标;保存状态改为已保存绿色圆形勾、未保存橙色提醒。BusinessListDesigner.vue:模板下拉移到页面标题区域;page-actions 合并为一个“更多操作”入口,避免两个省略号图标并列。ListPageGridDesigner.vue:右侧属性面板真正按“属性 / 样式 / 交互”分 tab 展示,样式 tab 显示位置尺寸和外观,交互 tab 显示事件配置,属性 tab 显示基础、字段、接口等配置。ForgePropertyPanel.vue / ListPageGridDesigner.vue:继续对齐 copyPage 右侧面板内部样式,去掉蓝色竖条和厚重表单项卡片;折叠面板、表单标签、输入框、下拉框改为白底浅灰细边框、小字号、紧凑间距。pnpm --dir forge-admin-ui exec eslint src/views/app-center/components/designer/BusinessObjectDesignerShell.vue src/views/app-center/components/designer/BusinessListDesigner.vue src/views/app-center/components/designer/forge-form-designer/ForgePropertyPanel.vue src/components/lowcode-builder/page/ListPageGridDesigner.vue
git diff --check
pnpm --dir forge-admin-ui build
// 注释、UserSelectModal 命名冲突、src/store/index.js 动静态混合 import;本轮未处理这些既有问题。CHOKIDAR_USEPOLLING=true pnpm --dir forge-admin-ui dev --host 127.0.0.1 --port 5173
http://127.0.0.1:5173/。listen EPERM,已通过提权启动;首次非 polling 启动存在 EMFILE: too many open files, watch,改用 polling 模式。copyPage/src:
BusinessObjectDesignerShell.vue:顶栏右侧按钮改为已保存状态、设置图标、预览图标、保存按钮、黑色发布按钮;提升 loading 遮罩层级,确保覆盖画布悬浮控件。BusinessListDesigner.vue:隐藏旧 list-designer-head 视觉层,将撤销、重做、模板、更多操作合并到 list-page-switch 右侧;页面 tab 去掉冗余副文案展示。ListPageGridDesigner.vue:隐藏旧画布工具条,避免行列/宽度信息占据中间画布;悬浮视图控制上移并降低层级;右侧属性 tab 增加图标并修复 active 点击反馈。ForgeFormDesigner.vue / ListPageGridDesigner.vue:右侧属性面板宽度统一为 280px,对齐 copyPage。ForgePropertyPanel.vue:去掉 header 中重复的“交互/源码”按钮,改为 tab 内入口;tab 增加图标,折叠卡片间距、边框、背景继续贴近 copyPage RightPanel。ListPageGridDesigner.vue:右侧“属性/样式/交互”tab 点击后滚动定位到对应配置段,避免只高亮不跳转。pnpm --dir forge-admin-ui exec eslint src/views/app-center/components/designer/BusinessObjectDesignerShell.vue src/views/app-center/components/designer/BusinessListDesigner.vue src/views/app-center/components/designer/forge-form-designer/ForgeFormDesigner.vue src/views/app-center/components/designer/forge-form-designer/ForgeFormCanvas.vue src/views/app-center/components/designer/forge-form-designer/ForgePropertyPanel.vue src/components/lowcode-builder/page/ListPageGridDesigner.vue
pnpm --dir forge-admin-ui exec eslint src/components/lowcode-builder/page/ListPageGridDesigner.vue
git diff --check
pnpm --dir forge-admin-ui build
// 注释、UserSelectModal 命名冲突、src/store/index.js 动静态混合 import;本轮未处理这些既有问题。ListPageGridDesigner.vue:去掉右侧属性 tab 切换时的 scrollIntoView 自动滚动;“详情布局”的裸开关改为“显示边框”,补充说明“控制详情字段之间是否显示分隔边框”。BusinessListDesigner.vue:去掉顶部重复模板下拉;将 list-template-select inline 放到 page-switch-title 原 strong 位置,页面标题不再重复显示。useDict.js:增加字典请求 in-flight 去重,同一 dictType 并发加载时复用同一个 Promise,避免 /app-center 首屏多个 DictTag/DictSelect 同时触发重复 /system/dict/data/list。index.vue:/app-center 首屏增加业务域、指标、业务单元卡片骨架屏;页面 padding、头部高度、业务域列表、指标卡和内容区间距整体压缩。source ~/.nvm/nvm.sh && nvm use 20.19.0 && node -v && pnpm --dir forge-admin-ui exec eslint src/composables/useDict.js src/views/app-center/index.vue src/views/app-center/components/designer/BusinessListDesigner.vue src/components/lowcode-builder/page/ListPageGridDesigner.vue
nvm use 20.19.0 时提示 N/A 未安装,实际 Node 输出为 v20.20.0;lint 在 Node 20 下完成。git diff --check -- forge-admin-ui/src/composables/useDict.js forge-admin-ui/src/views/app-center/index.vue forge-admin-ui/src/views/app-center/components/designer/BusinessListDesigner.vue forge-admin-ui/src/components/lowcode-builder/page/ListPageGridDesigner.vue
NODE_OPTIONS=--max-old-space-size=8192 pnpm --dir forge-admin-ui build
// 注释、UserSelectModal 命名冲突、src/store/index.js 动静态混合 import;本轮未处理这些既有问题。BusinessListDesigner.vue:页面标题区域的模板选择从 n-select 改为 n-dropdown + button,避免输入框边框样式和标题区域耦合。BusinessListDesigner.vue:模板下拉、更多操作、页面操作菜单补充图标;页面设置入口图标从齿轮改为文档图标。GridBlockRenderer.vue / ListPageGridDesigner.vue:真实接口预览状态写回改为差异更新,去掉每次成功都写 lastPreviewAt 的行为,避免“真实列表/启用真实请求”触发请求状态写回后反复刷新中间列表。ListPageGridDesigner.vue:右侧属性搜索改为容错模式,搜索词未被分组关键词覆盖时不再隐藏所有分组;补充列宽、列标题、打开方式、标签宽度、工具栏等常见关键词。ForgePropertyPanel.vue:补全表单右侧属性搜索索引,覆盖字段、CRUD、布局、权限、事件、样式、源码等常见配置;未命中时展开当前面板全部配置。source ~/.nvm/nvm.sh && nvm use 20.19.0 && pnpm --dir forge-admin-ui exec eslint src/views/app-center/components/designer/BusinessListDesigner.vue src/components/lowcode-builder/page/GridBlockRenderer.vue src/components/lowcode-builder/page/ListPageGridDesigner.vue src/views/app-center/components/designer/forge-form-designer/ForgePropertyPanel.vue
nvm use 20.19.0 时仍提示 N/A 未安装,但命令在 Node 20 环境下完成。git diff --check -- forge-admin-ui/src/views/app-center/components/designer/BusinessListDesigner.vue forge-admin-ui/src/components/lowcode-builder/page/GridBlockRenderer.vue forge-admin-ui/src/components/lowcode-builder/page/ListPageGridDesigner.vue forge-admin-ui/src/views/app-center/components/designer/forge-form-designer/ForgePropertyPanel.vue
NODE_OPTIONS=--max-old-space-size=8192 pnpm --dir forge-admin-ui build
// 注释、UserSelectModal 命名冲突、src/store/index.js 动静态混合 import;本轮未处理这些既有问题。ForgePropertyPanel.vue:表单源码弹窗改为“源码编辑”,编辑器使用黑色背景和白色等宽文字;新增提示“支持实时编辑,并保存应用到画布”,底部新增“取消 / 保存并应用”。保存成功后才关闭弹窗,取消会丢弃本次草稿。ListPageGridDesigner.vue:列表源码弹窗从只读改为可编辑,支持编辑“画布布局 JSON”和“当前区块 JSON”;保存会解析 JSON 并应用到画布,当前区块保存时校验 id,避免误覆盖其他区块。ListPageGridDesigner.vue:列表右侧属性搜索改为全局搜索体验,输入关键词会自动切换到“属性 / 样式 / 交互”对应 tab,并展开属性 tab 内折叠面板,避免搜索结果藏在未激活 tab 或折叠项里。ForgeFormCanvas.vue / ListPageGridDesigner.vue:中间画布操作栏新增 Desktop / Tablet / Mobile 三个圆形设备按钮,点击直接切换现有桌面、窄屏、移动预览模式。source ~/.nvm/nvm.sh && nvm use 20.19.0 && pnpm --dir forge-admin-ui exec eslint src/components/lowcode-builder/page/ListPageGridDesigner.vue src/views/app-center/components/designer/forge-form-designer/ForgeFormCanvas.vue src/views/app-center/components/designer/forge-form-designer/ForgePropertyPanel.vue
nvm use 20.19.0 时仍提示 N/A 未安装,但命令在 Node 20 环境下完成。git diff --check -- forge-admin-ui/src/components/lowcode-builder/page/ListPageGridDesigner.vue forge-admin-ui/src/views/app-center/components/designer/forge-form-designer/ForgeFormCanvas.vue forge-admin-ui/src/views/app-center/components/designer/forge-form-designer/ForgePropertyPanel.vue
NODE_OPTIONS=--max-old-space-size=8192 pnpm --dir forge-admin-ui build
// 注释、UserSelectModal 命名冲突、src/store/index.js 动静态混合 import;本轮未处理这些既有问题。ListPageGridDesigner.vue:修复右侧属性搜索总是跳到“交互”tab 的问题。原实现用整段字符串 includes 匹配,搜索“接口”等属性词会误命中交互里的“接口请求”;现改为明确关键词数组,并按“属性 > 样式 > 交互”的优先级解析。ListPageGridDesigner.vue:列表画布进入专注/全屏态后恢复顶部安全留白,避免中间悬浮操作栏遮挡下面画布内容;表单设计器原有行为不变。source ~/.nvm/nvm.sh && nvm use 20.19.0 && pnpm --dir forge-admin-ui exec eslint src/components/lowcode-builder/page/ListPageGridDesigner.vue
nvm use 20.19.0 时仍提示 N/A 未安装,但命令在 Node 20 环境下完成。git diff --check -- forge-admin-ui/src/components/lowcode-builder/page/ListPageGridDesigner.vue
NODE_OPTIONS=--max-old-space-size=8192 pnpm --dir forge-admin-ui build
// 注释、UserSelectModal 命名冲突、src/store/index.js 动静态混合 import;本轮未处理这些既有问题。ListPageGridDesigner.vue:右侧搜索新增配置区锚点,搜索后在切换 tab、展开折叠项之后,会滚动到第一个命中的具体配置区;例如“列宽”滚到“查询与列表字段”,“弹窗”滚到“表单与弹窗”,“背景/圆角/阴影”滚到样式区。ListPageGridDesigner.vue:修复折叠面板内参数一变化就收起的问题。根因是原来 watch 整个 selectedBlock 对象,任意 patchBlockProps 都会替换区块对象并触发重置;现改为只 watch selectedBlockId,仅切换选中区块时重置展开项。ForgePropertyPanel.vue:表单设计器 watch 的是 selectedId,不是组件对象本身,参数变化不会触发折叠项重置,本轮无需改表单侧。source ~/.nvm/nvm.sh && nvm use 20.19.0 && pnpm --dir forge-admin-ui exec eslint src/components/lowcode-builder/page/ListPageGridDesigner.vue
nvm use 20.19.0 时仍提示 N/A 未安装,但命令在 Node 20 环境下完成。git diff --check -- forge-admin-ui/src/components/lowcode-builder/page/ListPageGridDesigner.vue code-copilot/changes/lowcode-designer-workbench-visual-unification/execution-log.md
NODE_OPTIONS=--max-old-space-size=8192 pnpm --dir forge-admin-ui build
// 注释、UserSelectModal 命名冲突、src/store/index.js 动静态混合 import;本轮未处理这些既有问题。