表单运行时 ★
一句话:发布后的表单真正干活的地方——查询区、列表、新增/编辑/详情弹窗、导入导出、行内编辑、打印全都由 表单设计器 里的配置生成,不需要写一行代码;本页讲清每个区域怎么用、哪些提示在说什么。
功能在哪
- 菜单是发布时自动创建的:表单首次发布后,会在你选的上级菜单下生成一个运行时菜单(图标、名称都来自表单配置),例如「在线示例 → 销售订单示例」;
- 地址栏路由:
/infra/form-demo/form-design-run/{表单编码}(菜单挂在哪由发布时选的上级菜单决定,路由尾段永远是表单编码); - 也可以直接用 URL 预览任意已发布表单:
/infra/online/render?code={表单编码}; - 需要的权限:
infra:form-design-run:{表单编码}:query / create / update / delete / export / import(首次发布时自动创建的 7 个按钮权限,见 表单设计)。
打开后提示「表单不存在或尚未发布」
说明编码写错了,或这张表单还是草稿/已下线。运行时只认已发布的配置。
界面认识
以「销售订单示例」为例,整页从上到下是:查询区 → 工具栏 → 列表 → 分页。

| 区域 | 内容 |
|---|---|
| 查询区 | 由「查询条件」页签生成。占位符按控件类型自动给:文本「请输入{标签}」、下拉「请选择{标签}」、日期区间「开始日期 / 结束日期」、数字区间「最小值 / 最大值」、开关「筛选为空的记录」;查询项多时右侧出现「展开(N) / 收起」 |
| 标签页 | 由「标签页筛选」生成,最前面自动加一个「全部」;切标签等价于追加一个查询条件 |
| 左侧树 | 由「左侧树查询区」生成,点节点按对应字段筛选(节点可来自字典或该列的去重值,最多 500 个) |
| 工具栏 | 由「按钮设置」生成:新增 / 导入 / 导出 / 批量删除 / 批量打印 / 打印列表;右侧可能有列设置齿轮 |
| 列表 | 列序、宽度、冻结、格式化都来自「列配置」。空格子显示「-」,布尔显示「是 / 否」;开了合计行时表尾多一行「合计」;开了行分组时每组前插一行「▸ 组名(N 条)」并可折叠 |
| 行内按钮 | 编辑 / 详情 / 变更记录 / 打印 / 删除,超过折叠阈值(默认 3)的部分收进「更多」下拉 |


常用操作
新增 / 编辑
点「新增」或行内「编辑」,按「表单呈现方式」的配置以居中弹窗(宽 900)、右侧抽屉(宽 720)或页内显示三种形态之一打开,标题为「新增{表单名} / 编辑{表单名}」。

- 按钮:表单+列表类型为「确 定 / 取 消」(详情态为「关 闭」,配了打印模板时多一个「打印」);纯表单为「提 交 / 重 置」;
- 成功提示:新增「新增成功」、编辑「修改成功」、纯表单「提交成功」、行内编辑「保存成功」;
- 子表(明细):行尾可「复制本行」;明细里必填没填会点名提示「明细第 {行} 的「{字段}」是必填的」;行数受配置区间限制,系统上限 1000 行;
- 单据编号控件是只读的:打开时显示「正在获取单号…」,取到号直接展示,没取到显示「保存后自动生成」。号在打开时预占(30 分钟有效),放弃填写不会提示浪费了一个号——这是设计如此。
详情与变更记录
行内「详情」打开只读态,配了「详情页页签」时顶部会出现页签头:表单永远是第一个页签,其后是配置好的「变更记录」「关联数据」。

- 变更记录:需要这张表单在数据绑定里开了「记录变更日志」,否则页签是空的;
- 关联数据:按「关联字段 = 本记录主键」去查目标表单的数据,权限也按目标表单算——没有目标表单的查询权限时页签是空的,这是对的。
行内编辑
列表开了「行内编辑」时,点「编辑」不再弹窗,而是把这一行就地变成可编辑控件,行尾出现「保存 / 取消」,每行单独保存——适合「一屏改一批价格」这类场景。图片、附件、超链接列不支持行内编辑。
删除
- 行内「删除」走全站统一确认框;
- 勾选多行后「批量删除」的确认原文:「确认删除选中的 {N} 条数据吗?」;
- 一次最多删除的条数有上限,超出提示「一次最多删除 {N} 条数据,请分批操作」。
导入(三步向导)
工具栏「导入」打开「导入数据 — {表单名}」向导,三步:上传文件 → 检查数据 → 导入结果。

- 第一步:后缀
.xls/.xlsx,最多 5000 行 / 10MB;表头请用字段名——顺序可以打乱,按列名匹配、不按位置;「下载导入模板」的模板按当前表单字段生成,字典列带下拉; - 第二步「检查数据」:逐行预检,全对才导——有任何一行有问题就不能进下一步;文件里已存在的记录按「已存在策略」处理:跳过(默认)/ 覆盖 / 都新增;
- 第三步「导入结果」:原文格式「新增 X 条,更新 X 条,跳过 X 条,失败 X 条」。
导入报错都写得能照着改
例如「一次最多导入 {N} 行,当前文件有 {M} 行。请拆分后分次导入」「「{列}」在表绑定里不是子表控件,无法承载明细数据」。照着提示改文件即可,不需要找管理员。
导出
工具栏「导出」打开「导出数据」对话框:范围选「当前页 / 全部」,可勾「导出合计行」。

- 导出上限来自「列配置」(默认 2 万行):超出部分不会被静默丢掉,文件名上会标出「前 N 条」;
- 导出内容可选「按文本」或「按格式化后的值」;超链接/图片/附件三类刻意不跟随列表显示格式。
打印与列设置
- 配了打印模板的表单,行内有「打印」、工具栏有「批量打印」(需先勾选行)与「打印列表」;
- 开了「列设置」时,工具栏右侧有齿轮:使用者可自行隐藏列、拖列序、改列宽,并可「恢复默认」。界面上已写明:「设置只存在这台机器的这个浏览器里,换浏览器需要重新调整。」
视角对照:权限是怎么生效的
| 视角 | 表现 |
|---|---|
| 有全部按钮权限 | 工具栏与行内按钮全显示 |
| 缺某个按钮权限 | 对应按钮不画出来;直接调接口则返回 403,提示原文:「表单数据操作失败:没有权限:infra:form-design-run:{编码}:{动作}」 |
| 被行级权限限制 | 列表只看得见授权范围内的行;写后落域校验会拦住「保存后这条数据会落到你权限范围之外」的提交,提示:「保存失败:这条数据提交后会落到你的数据权限范围之外。⚠️ 常见原因是把归属部门/负责人改成了你看不到的值 —— 那样这条记录会立刻从你的列表里消失,且你再也改不回来,所以这里直接拦住」 |
| 被字段裁剪限制 | 无查看权限的字段在下发前就被裁掉,界面上看不到值;脱敏字段显示遮掩后的值(如 138****8000) |
进阶
- 并发保护:表单开了乐观锁时,两人同时编辑同一条记录,后提交的人会看到「这条数据在你编辑期间已被他人修改……请刷新后在最新数据上重新修改」;没开乐观锁的表单则是后保存的静默覆盖先保存的;
- 合计与分组的口径:合计行、分组行的「(N 条)」、组内小计都只算当前页,不是全表;
- 查询操作符由配置限定:文本框给「包含/等于/区间/为空…」,日期区间只给「区间」,开关只给「等于/不等于」——界面上看不到不允许的选项;
- 明细与主表同事务:主子表一次提交在一个事务里落库,任何一行失败整体回滚,不会出现「主表存了、明细没存」。
常见问题
Q:列表上某个按钮别人有我没有? A:按钮按权限画。找管理员在「角色授权」里勾上这张表单对应的按钮权限(查询/新增/修改/删除/导出/导入/被引用)。
Q:查询区某个下拉是空的? A:该查询项配了「下拉选择」但没配字典类型时会退化成文本框;配了字典但字典被停用/懒加载时选项为空。回 表单设计器 的「查询条件」页签修正。
Q:导入时提示某行有问题,但我觉得没问题? A:第二步「检查数据」会把每一行的问题列出来(必填缺失、字典值不存在、日期格式不对、唯一性冲突等)。导入是「全对才导」,改完文件重新上传即可。
Q:为什么我改的列宽/隐藏列别人看不到? A:列设置只存在你自己的浏览器里,不影响别人,也不影响设计器里配的默认样子。
Q:详情页为什么没有「变更记录」页签? A:要么这张表单没开「记录变更日志」,要么没在「详情页页签」里配变更记录页签。两者都在设计器里配。
