---
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