--- name: frontend-crud description: 为 mfish-nocode-pro 项目前端(Vue3 + TypeScript)生成标准增删改查页面代码,包括 Model、API、data、index.vue、Modal、ViewModal 六个文件。当用户说"帮我生成前端增删改查"、"新增前端页面"、"生成前端CRUD"时使用此 skill。 --- # 前端 CRUD 代码生成器 ## 项目前端架构 ``` mfish-nocode-view/src/ ├── api/ │ └── {apiPrefix}/ # 如:sys、demo、nocode │ ├── model/ │ │ └── {类名}Model.ts # 接口类型定义 │ └── {类名}.ts # API 请求函数 └── views/ └── {apiPrefix}/ └── {entity-kebab-case}/ # 如:demo-order、sys-dict ├── {变量名}.data.ts # 表格列、搜索表单、表单Schema、详情Schema ├── index.vue # 列表页主页面 ├── {类名}Modal.vue # 新增/编辑弹窗 └── {类名}ViewModal.vue # 详情查看弹窗 ``` ## 技术栈约定 - 框架:**Vue 3** + **TypeScript** + ` ``` --- #### 5. 新增/编辑弹窗(`views/{apiPrefix}/{entity-kebab-case}/{类名}Modal.vue`) ```vue ``` --- #### 6. 详情查看弹窗(`views/{apiPrefix}/{entity-kebab-case}/{类名}ViewModal.vue`) ```vue ``` --- ## 命名约定 | 占位符 | 说明 | 示例 | |--------|------|------| | `{类名}` | PascalCase 类名 | `DemoOrder` | | `{变量名}` | camelCase 变量名 | `demoOrder` | | `{apiPrefix}` | 模块路径(小写) | `demo` | | `{entity-kebab-case}` | kebab-case 目录名 | `demo-order` | --- ## 注意事项 1. **字典字段**:`columns` 和 `viewSchema` 中使用 `buildDictTag`,`searchFormSchema` 和 `FormSchema` 中使用 `getDictProps`;只要有字典字段就需要在文件顶部引入 `buildDictTag` 和 `getDictProps` 2. **无搜索表单字段**:`searchFormSchema` 可以为空数组 `[]`,`useSearchForm` 设为 `false` 3. **数值型主键**:`delete{类名}` 参数类型改为 `number`,`Model` 中 `BaseEntity` 4. **导出功能可选**:若不需要导出,删除 `handleExport`、`export{类名}` 的引入和 toolbar 中的导出按钮 5. **批量删除可选**:若不需要批量删除,删除 `handleBatchDelete`、`deleteBatch{类名}` 的引入、`rowSelection` 配置和 toolbar 中的批量删除按钮 6. **配合后端 CRUD**:前端文件路径中的 `{apiPrefix}/{变量名}` 对应后端 Controller 的 `@RequestMapping` 路径 --- ## 参考实现 - 含字典的完整示例:[demoOrder.data.ts](mfish-nocode-view/src/views/demo/demo-order/demoOrder.data.ts) - API 文件示例:[DemoOrder.ts](mfish-nocode-view/src/api/demo/DemoOrder.ts) - Model 示例:[DemoOrderModel.ts](mfish-nocode-view/src/api/demo/model/DemoOrderModel.ts) - 无字典简单示例:[demoDataScope.data.ts](mfish-nocode-view/src/views/demo/demo-data-scope/demoDataScope.data.ts) - 后端 CRUD 配套请使用 **crud-generator** skill