Skip to content

页面设计器

页面设计器是一个可视化的低代码开发工具,通过拖拽组件、配置属性、AI 智能辅助,快速生成 Vue 页面代码。

功能特性

可视化拖拽设计

  • 三栏式设计界面:左侧组件面板、中间设计画布、右侧属性面板
  • 拖拽交互:支持从组件面板拖入画布、画布内部拖拽排序
  • 嵌套容器:支持 Row/Col 布局组件嵌套,实现复杂页面结构
  • 实时预览:设计器内实时预览效果,所见即所得
  • 快捷键支持
    • Ctrl+Z - 撤销
    • Ctrl+Y / Ctrl+Shift+Z - 重做
    • Delete - 删除选中组件
    • Escape - 取消选中

30+ 组件库

表单组件

组件说明特性
单行输入文本输入框前缀/后缀图标、清空按钮
多行输入文本域自动高度、字数限制
数字输入数字输入框步进器、范围限制
选择器下拉选择单选/多选、远程搜索
日期选择日期时间选择器日期/时间/日期时间/范围
开关开关切换自定义文字
单选框单选按钮组按钮样式
多选框复选框组全选/反选
上传文件上传图片/文件、拖拽上传
富文本富文本编辑器基于 WangEditor

卡片组件

组件说明特性
统计卡片数据统计展示图标、趋势、动画
数据卡片数据列表卡片多行数据、百分比
折线统计卡片带迷你图表趋势展示
环形统计卡片进度环形图百分比进度
信息卡片提示信息多种类型、可关闭
空状态卡片空数据提示自定义图标文案
表格卡片表格数据展示列配置、边框
数据列表卡片列表数据展示头像、状态标签
天气卡片天气信息展示温度、湿度、风速
通知卡片通知消息列表已读/未读、类型

图表组件

组件说明特性
折线图趋势展示多系列、平滑曲线
柱状图对比展示堆叠、分组
饼图占比展示标签、图例
环形图占比展示中心文字
雷达图多维对比多系列
漏斗图转化展示排序、标签

布局组件

组件说明特性
行容器水平布局栅格间距、对齐方式
列容器栅格列响应式宽度
分割线内容分隔文字位置

AI 智能辅助

AI 生成组件

通过自然语言描述需求,AI 自动生成组件配置:

示例输入:帮我生成一个用户注册表单,包含用户名、密码、确认密码、手机号、邮箱、性别选择

AI 将自动生成对应的表单组件配置。

AI 优化组件

选中已有组件后,可以让 AI 优化:

  • 字段命名规范化
  • 占位文本优化
  • 校验规则完善
  • 标签文案优化

快捷示例

内置 6 个常用场景示例,点击即可快速生成:

  1. 用户注册表单 - 用户名、密码、手机号、邮箱等
  2. 商品发布表单 - 商品名称、价格、库存、描述、图片等
  3. 订单查询表单 - 订单号、时间范围、状态、金额等
  4. 员工信息录入 - 姓名、工号、部门、职位、入职日期等
  5. 活动报名表单 - 姓名、联系方式、人数、备注等
  6. 问卷调查表单 - 单选、多选、评分、文本等

代码生成

生成模式

支持三种代码生成模式:

页面模式

生成独立的页面组件,适用于:

  • 新建管理页面
  • 数据录入页面
  • 查询筛选页面

弹窗模式

生成 AModal 弹窗组件,支持配置:

  • 弹窗尺寸:小/中/大/超大
  • 弹窗标题

适用于:

  • 新增/编辑弹窗
  • 详情查看弹窗
  • 确认操作弹窗

抽屉模式

生成抽屉组件,支持配置:

  • 抽屉尺寸:小/中/大/超大
  • 弹出方向:左/右/上/下

适用于:

  • 侧边详情面板
  • 筛选条件面板
  • 配置设置面板

代码输出

完整代码

生成完整的 Vue 单文件组件(.vue),包含:

  • <template> - 模板代码
  • <script setup lang="ts"> - 脚本代码
  • <style scoped lang="scss"> - 样式代码

分离查看

支持分别查看和复制:

  • 模板代码 - 纯 HTML 模板
  • 脚本代码 - TypeScript 逻辑
  • 类型定义 - 接口类型声明

JSON 配置

支持导入导出 JSON 配置:

  • 导出当前设计配置
  • 导入已有配置继续编辑
  • 实现设计复用和分享

预览联动

预览弹窗中的设置会自动同步到代码生成:

  • 预览模式(页面/弹窗/抽屉)→ 代码生成模式
  • 弹窗尺寸 → 代码弹窗尺寸
  • 弹窗标题 → 代码弹窗标题

组件属性配置

属性面板

右侧属性面板根据选中组件动态显示可配置属性:

基础属性

  • 字段名 - 表单字段名称(prop)
  • 标签 - 显示标签文本
  • 占位符 - 输入提示文本
  • 默认值 - 字段默认值

校验规则

  • 必填 - 是否必填
  • 校验规则 - 支持多种规则
    • 必填校验
    • 长度校验
    • 格式校验(邮箱、手机号等)
    • 自定义正则

样式配置

  • 宽度 - 组件宽度
  • 栅格 - 栅格占用(1-24)

特殊配置

不同组件有不同的特殊配置:

选择器

  • 选项数据(label/value)
  • 是否多选
  • 是否可清空

日期选择

  • 日期类型(date/datetime/daterange)
  • 日期格式

上传组件

  • 上传类型(图片/文件)
  • 文件限制
  • 最大数量

图标选择

  • 卡片组件的图标支持可视化选择器

技术架构

页面设计器采用四层架构设计:

┌─────────────────────────────────────────┐
│              UI 层 (Components)          │
│  ComponentPanel / DesignCanvas /         │
│  PropertyPanel / PreviewDialog /         │
│  CodeDialog / AiGenerateDialog           │
├─────────────────────────────────────────┤
│            逻辑层 (Composables)           │
│  useFormSchema / useCodeGenerator /      │
│  useDragDrop / useHistory                │
├─────────────────────────────────────────┤
│            配置层 (Config)               │
│  componentConfig - 组件定义和属性配置     │
├─────────────────────────────────────────┤
│            渲染层 (Renderer)             │
│  FormItemRenderer - 组件渲染器           │
└─────────────────────────────────────────┘

核心文件

pageDesigner/
├── pageDesigner.vue          # 主页面组件
├── components/
│   ├── ComponentPanel.vue    # 左侧组件面板
│   ├── DesignCanvas.vue      # 中间设计画布
│   ├── PropertyPanel.vue     # 右侧属性面板
│   ├── FormItemRenderer.vue  # 组件渲染器
│   ├── PreviewDialog.vue     # 预览弹窗
│   ├── CodeDialog.vue        # 代码弹窗
│   ├── AiGenerateDialog.vue  # AI生成弹窗
│   └── AiOptimizeDialog.vue  # AI优化弹窗
├── composables/
│   ├── useFormSchema.ts      # Schema状态管理
│   └── useCodeGenerator.ts   # 代码生成逻辑
├── config/
│   └── componentConfig.ts    # 组件配置定义
└── types/
    └── index.ts              # 类型定义

使用场景

快速搭建管理后台页面

  1. 拖入表单组件配置查询条件
  2. 拖入表格组件展示数据
  3. 生成页面代码,集成到项目

表单页面快速开发

  1. 使用 AI 生成或手动拖拽组件
  2. 配置字段名、校验规则
  3. 选择弹窗/抽屉模式生成代码

数据展示页面设计

  1. 拖入卡片组件、图表组件
  2. 使用布局组件进行排版
  3. 生成页面代码

原型设计和需求确认

  1. 快速搭建页面原型
  2. 实时预览效果
  3. 与产品/设计确认后生成代码

最佳实践

组件命名规范

  • 字段名使用小驼峰:userNamecreateTime
  • 标签使用中文:用户名创建时间
  • 占位符使用提示语:请输入用户名

布局建议

  • 使用行容器进行水平布局
  • 表单字段建议 2-3 列
  • 查询表单使用紧凑布局
  • 录入表单使用宽松布局

校验规则

  • 必填字段添加必填校验
  • 手机号、邮箱使用格式校验
  • 密码使用长度+复杂度校验
  • 数字使用范围校验

AI 使用技巧

  • 描述需求时包含字段名称
  • 说明业务场景有助于生成更合适的组件
  • 生成后可以手动微调属性