# 创建客户模型的维护表单

表单是系统中的重要组件,所有的数据管理都在对应的表单上进行。我们将为客户模型创建如下的维护表单:

  • 列表表单,并为它创建一个访问菜单
  • 新建表单
  • 编辑表单

# 创建列表表单

打开「开发配置 > 表单 > 表单」,点击「创建」,填写:

字段 值
类型 LIST
名称 List of Customers
显示名称 客户列表
描述 客户信息列表
关联对象类型 Customers
创建客户列表表单

点击「保存并关闭」。「名称」在系统内必须唯一,后面的菜单、CSV 都通过名称引用这个表单。

# 创建访问菜单

打开「开发配置 > 界面显示 > 菜单」,点击「创建」,在右侧填写:

字段 值
上级菜单 留空(作为一级菜单)
名称 Customers
类型 Form
显示名称 客户管理
图标 TeamOutlined
关联表单 List of Customers
显示顺序 5
创建客户管理菜单

点击「保存」后,左侧菜单树中出现「客户管理」。它和内置的「业务配置」显示顺序都是 5,当前排在「业务配置」下方;想让它排到最上面,把显示顺序改成小于 5 的值即可。

注意

1.0.0-beta18 中菜单页左侧的菜单树显示的是菜单的原始显示名称(系统菜单多为英文,例如 Configurations、Development),「类型」下拉框的选项也是英文(Menu Group、External Link、Internal Link、Form)。页面左侧导航栏中的菜单名称不受影响,仍按当前语言显示。

# 创建新建和编辑表单

回到「开发配置 > 表单 > 表单」,用同样的方式再创建两个表单:

类型 名称 显示名称 关联对象类型
CREATE Create Customers 新建客户 Customers
UPDATE Update Customers 编辑客户 Customers
创建新建客户表单

列表页的「创建」按钮会打开该模型的 CREATE 表单,行上的「修改」会打开 UPDATE 表单。

# 为表单设置访问权限

表单和菜单的创建、修改界面上没有访问权限字段,而没有设置访问权限的表单是打不开的:点击「客户管理」后,页面会一直停留在加载状态(后端对该表单返回 403 NoPermission)。

表单的访问权限只能通过 CSV 的 accessRequirement.name 列设置。在 codes/data/csv 下新建 DynamicForm_crm.csv:

name(*),accessRequirement.name
;; CRM 教程:为界面上创建的表单补充访问权限(界面上没有该字段)
List of Customers,USER
Create Customers,USER
Update Customers,USER
1
2
3
4
5

name(*) 按名称找到刚才在界面上创建的三个表单,只更新 accessRequirement 这一列,其他属性保持不变。保存后重启后端服务。

提示

菜单不需要单独设置权限:类型为 Form 的菜单,没有设置访问权限时,只要用户能访问它关联的表单就会显示。菜单组(Menu Group)则不同,没有设置访问权限的菜单组对所有人隐藏,所以本教程把菜单建在一级。

如果希望整套表单和菜单都放在插件里维护,可以直接用 DynamicForm.csv、DynamicMenu.csv 定义,列说明见 CSV 导入模板。

注意

「表单」「菜单」界面缺少访问权限字段、表单没有权限时页面一直加载而不提示错误,是 1.0.0-beta18 的已知问题。

# 录入客户数据

点击左侧的「客户管理」,再点「创建」,录入一个客户:

新建客户

录入几个客户后,列表如下:

客户列表

可以看到:

  • 我们没有给表单添加任何字段。表单中没有定义表单字段时,系统默认显示该模型的所有字段,字段标题就是字段名(name、contactInfo 等)。第 5 步会为它们设置中文名称。
  • 列表的每一行只有「详情」和「修改」,没有「删除」,因为第 1 步没有给客户模型设置删除权限。
  • 新建、编辑表单中,客户分组显示为带选项的标签输入框,选项来自字段的 options。

注意

1.0.0-beta18 中,带可选值的字符串字段在默认表单里显示为可以多选的标签输入框。group 是单值字段,请只选择一个选项。

下一步,我们将对销售机会进行建模,并演示如何在建模时建立对象间关联,请点击这里继续我们的 CRM 构建之旅。

# 进一步阅读

我们的平台是牧言低代码平台,专为帮助用户快速构建信息化系统而设计。了解更多关于我们平台的信息,请访问 牧言低代码平台 (opens new window)。

Last Updated: 2026/9/24 14:27:35