From 417acc6c64f52c3492b06ea12f9c12b11cbe0042 Mon Sep 17 00:00:00 2001 From: Guo Tiantian <1431335589@qq.com> Date: Fri, 12 Sep 2025 00:03:39 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=BC=98=E5=8C=96=E6=9D=83=E9=99=90?= =?UTF-8?q?=E5=88=86=E9=85=8D=E7=88=B6=E5=AD=90=E8=81=94=E5=8A=A8=E9=80=BB?= =?UTF-8?q?=E8=BE=91=EF=BC=8C=E6=A0=B9=E6=8D=AE=E4=BF=9D=E5=AD=98=E7=8A=B6?= =?UTF-8?q?=E6=80=81=E5=8A=A8=E6=80=81=E8=AE=BE=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/src/views/gencode/backcode/README.md | 153 +++ .../gencode/backcode/components/Canvas.vue | 407 +++++++ .../backcode/components/CanvasComponent.vue | 378 +++++++ .../backcode/components/ComponentRenderer.vue | 628 +++++++++++ .../gencode/backcode/components/Inspector.vue | 473 +++++++++ .../gencode/backcode/components/Palette.vue | 355 +++++++ .../backcode/components/PropertyEditor.vue | 466 ++++++++ frontend/src/views/gencode/backcode/index.vue | 997 +++--------------- .../views/gencode/backcode/utils/schema.ts | 606 +++++++++++ .../gencode/backcode/utils/serializer.ts | 412 ++++++++ .../role/components/PermissonDrawer.vue | 66 +- 11 files changed, 4092 insertions(+), 849 deletions(-) create mode 100644 frontend/src/views/gencode/backcode/README.md create mode 100644 frontend/src/views/gencode/backcode/components/Canvas.vue create mode 100644 frontend/src/views/gencode/backcode/components/CanvasComponent.vue create mode 100644 frontend/src/views/gencode/backcode/components/ComponentRenderer.vue create mode 100644 frontend/src/views/gencode/backcode/components/Inspector.vue create mode 100644 frontend/src/views/gencode/backcode/components/Palette.vue create mode 100644 frontend/src/views/gencode/backcode/components/PropertyEditor.vue create mode 100644 frontend/src/views/gencode/backcode/utils/schema.ts create mode 100644 frontend/src/views/gencode/backcode/utils/serializer.ts diff --git a/frontend/src/views/gencode/backcode/README.md b/frontend/src/views/gencode/backcode/README.md new file mode 100644 index 00000000..b7f55a2b --- /dev/null +++ b/frontend/src/views/gencode/backcode/README.md @@ -0,0 +1,153 @@ +# 低代码页面生成器 + +一个基于 Vue3 + TypeScript + Element Plus 的可视化页面生成器,支持拖拽式组件设计和代码生成。 + +## 功能特性 + +- 🎨 **可视化设计**: 拖拽式组件设计,所见即所得 +- 📦 **丰富组件**: 支持所有 Element Plus 组件 +- ⚙️ **属性编辑**: 实时编辑组件属性 +- 💾 **模板管理**: 保存和加载页面模板 +- 🔧 **代码生成**: 生成完整的 Vue3 + TypeScript 代码 +- 📱 **响应式**: 支持移动端适配 + +## 文件结构 + +``` +src/views/gencode/backcode/ +├── index.vue # 主界面 +├── components/ +│ ├── Palette.vue # 左侧组件库 +│ ├── Canvas.vue # 中间画布 +│ ├── CanvasComponent.vue # 画布中的组件 +│ ├── Inspector.vue # 右侧属性面板 +│ └── PropertyEditor.vue # 属性编辑器 +└── utils/ + ├── schema.ts # 组件 Schema 定义 + └── serializer.ts # 代码生成器 +``` + +## 使用方法 + +### 1. 添加组件 +- 从左侧组件库拖拽组件到中间画布 +- 或点击组件快速添加 + +### 2. 编辑组件 +- 点击画布中的组件选中 +- 在右侧属性面板编辑属性 +- 支持样式、事件、插槽等设置 + +### 3. 生成代码 +- 点击顶部"生成代码"按钮 +- 代码会自动复制到剪贴板 +- 可选择下载为 .vue 文件 + +### 4. 保存模板 +- 点击"保存模板"按钮 +- 输入模板名称和描述 +- 模板会保存到本地存储 + +## 支持的组件类型 + +### 基础组件 +- 按钮 (el-button) +- 链接 (el-link) +- 文本 (el-text) +- 图标 (el-icon) + +### 布局组件 +- 行 (el-row) +- 列 (el-col) +- 容器 (el-container) + +### 表单组件 +- 输入框 (el-input) +- 选择器 (el-select) +- 单选框 (el-radio) +- 复选框 (el-checkbox) +- 开关 (el-switch) +- 滑块 (el-slider) +- 日期选择器 (el-date-picker) +- 时间选择器 (el-time-picker) +- 上传 (el-upload) +- 评分 (el-rate) +- 颜色选择器 (el-color-picker) + +### 数据展示组件 +- 卡片 (el-card) +- 表格 (el-table) +- 轮播图 (el-carousel) +- 折叠面板 (el-collapse) +- 描述列表 (el-descriptions) +- 空状态 (el-empty) +- 图片 (el-image) +- 分页 (el-pagination) +- 进度条 (el-progress) +- 结果页 (el-result) +- 骨架屏 (el-skeleton) +- 统计数值 (el-statistic) +- 标签 (el-tag) +- 时间线 (el-timeline) +- 树形控件 (el-tree) + +### 导航组件 +- 固钉 (el-affix) +- 面包屑 (el-breadcrumb) +- 下拉菜单 (el-dropdown) +- 菜单 (el-menu) +- 页面头部 (el-page-header) +- 步骤条 (el-steps) +- 标签页 (el-tabs) + +### 反馈组件 +- 警告提示 (el-alert) +- 抽屉 (el-drawer) +- 加载 (el-loading) +- 消息提示 (el-message) +- 消息确认框 (el-message-box) +- 通知 (el-notification) +- 气泡确认框 (el-popconfirm) +- 弹出框 (el-popover) +- 文字提示 (el-tooltip) + +### 其他组件 +- 回到顶部 (el-backtop) +- 分割线 (el-divider) +- 水印 (el-watermark) + +## 技术栈 + +- **Vue 3**: 使用 Composition API +- **TypeScript**: 完整的类型支持 +- **Element Plus**: UI 组件库 +- **Vite**: 构建工具 +- **SCSS**: 样式预处理器 + +## 开发说明 + +### 添加新组件 +1. 在 `utils/schema.ts` 中添加组件类型 +2. 在 `COMPONENT_CONFIGS` 中配置组件属性 +3. 在 `COMPONENT_CATEGORIES` 中分类组件 + +### 自定义属性编辑器 +1. 在 `PropertyEditor.vue` 中添加新的属性类型 +2. 实现对应的编辑器组件 +3. 更新属性验证逻辑 + +### 扩展代码生成 +1. 在 `serializer.ts` 中添加新的生成逻辑 +2. 支持自定义模板和样式 +3. 添加代码格式化功能 + +## 注意事项 + +- 组件 ID 必须唯一 +- 属性值需要符合 Element Plus 组件规范 +- 生成的代码需要手动验证和测试 +- 复杂布局建议使用栅格系统 + +## 许可证 + +MIT License diff --git a/frontend/src/views/gencode/backcode/components/Canvas.vue b/frontend/src/views/gencode/backcode/components/Canvas.vue new file mode 100644 index 00000000..38f47548 --- /dev/null +++ b/frontend/src/views/gencode/backcode/components/Canvas.vue @@ -0,0 +1,407 @@ + +