外观
13. 报表管理
13.0 快速上手:从模板到导出——5 分钟生成第一份报表
你有一张刚完成的工单 WO-0042,需要导出为 PDF 报表发给客户。以下步骤带你完成模板配置到报表导出。
Step 1:进入模板管理
点击左侧菜单「📊 报表管理」→ 「模板管理」→ 查看已有模板列表。 → 详见 §13.3.1
Step 2:发布一个模板(如果还没发布)
在模板卡片中找到「工单报告」或你需要的模板 → 如果状态为「草稿」,点击「发布」按钮。 → 详见 §13.3.5
Step 3:在工单详情中导出
进入「设备与工单」→「工单管理」→ 找到 WO-0042 → 点击「查看」→ 在工单详情弹窗中找到「导出报表」按钮 → 选择「导出 PDF」。 → 详见 §13.3.7
Step 4:查看导出日志(可选)
回到「模板管理」页面 → 点击「导出日志」按钮 → 确认刚才的导出记录出现,状态为「✅ 成功」。 → 详见 §13.3.8
💡 完成以上步骤后,你已经掌握了报表模块的核心用法:模板管理 → 报表导出。如果想自定义报表样式,继续阅读 §13.3.4 在线设计模板。
13.1 功能概述
本章介绍「报表管理」菜单组下的模板管理功能。报表管理是设备运维系统的输出模块,提供从模板设计到多格式报表生成的全链路:
| 模块 | 定位 | 核心功能 |
|---|---|---|
| 模板管理 | 报表模板的创建与维护 | 模板 CRUD、在线可视化设计器、模板下载/上传、多格式导出、导出日志 |
模板支持 6 种业务类型:
| 模板类型 | 适用场景 |
|---|---|
| 点检报告 | 点检工单执行后导出(注:系统预置的点检默认模板已移除,点检数据现统一通过工单报告模板展示) |
| 工单报告 | 维修工单完成后导出 |
| 设备报告 | 设备台账/详情导出 |
| 维护报告 | 维护计划执行结果导出 |
| 标签模板 | 设备二维码/条码标签打印 |
| 自定义 | 通用场景、自由定义 |
支持 3 种导出格式:PDF、Excel、Word。
不同导出入口实际可用的格式可能受限(例如设备台账不支持 Word、组合工单仅支持 PDF),详见 §13.3.7。
系统依赖 .NET 报表引擎微服务(默认
localhost:5080)提供渲染和设计能力。引擎状态可在模板管理页面顶部查看。
13.2 页面入口
- PC端:左侧菜单「📊 报表管理」→「模板管理」
- 移动端:不直接暴露报表管理入口,但工单执行时可在移动端查看/导出报表
菜单可见性由权限控制:
| 子模块 | 菜单可见条件 |
|---|---|
| 模板管理 | report:template:view(查看报表模板) |
13.3 PC端操作
13.3.1 页面布局
进入「模板管理」页面后,从上到下依次为:
顶部标题区:
- 左侧标题和副标题:「📄 报表模板管理」+「管理系统报表模板,支持可视化设计和多格式导出」
- 右侧引擎状态标签:🟢 引擎正常 / 🔴 引擎异常

统计卡片行(四个统计汇总卡片):
- 模板总数
- 已发布
- 今日导出
- 本月导出

操作工具栏:
- 左侧:「新建模板」按钮(需要
report:template:create权限)+「导出日志」按钮 - 右侧:模板类型下拉筛选、状态下拉筛选、关键字搜索框、刷新按钮

模板卡片列表: 每个模板以卡片形式展示,包含以下信息:
- 模板名称
- 模板编码(唯一标识)
- 系统/默认标签(蓝色「系统」/金色「默认」)
- 状态标签(草稿/已发布/已禁用)
- 类型(如:工单报告)
- 描述(截断显示为 2 行,仅存在描述时显示)
- 创建人与创建时间

模板操作按钮(卡片右侧):
| 按钮 | 权限 | 说明 |
|---|---|---|
| 设计 | report:template:design | 打开在线设计器(内嵌/新窗口),仅非系统模板可用 |
| 下载 | report:template:view | 下载模板 .frx 文件,所有状态可用 |
| 上传 | report:template:update | 上传修改后的 .frx 文件(仅非系统模板,所有状态可用) |
| 属性 | report:template:update | 编辑模板基本信息,所有状态可用 |
| 发布 | report:template:update | 将草稿状态模板发布上线,仅草稿状态可用 |
| 禁用 | report:template:update | 将已发布模板设为禁用(仅非系统模板) |
| 启用 | report:template:update | 将已禁用模板重新启用 |
| 删除 | report:template:delete | 删除模板(仅非系统模板,所有状态可删除,需二次确认) |

底部分页器:支持切换每页条数和快速跳转页码。
13.3.2 新建模板
需要 report:template:create 权限。
操作步骤:
- 点击「新建模板」按钮,弹出新建弹窗。
- 选择创建方式:
- 空白模板:从零开始创建
- 复制系统模板:基于已有系统模板创建副本
- 填写模板信息:
| 字段 | 说明 | 必填 |
|---|---|---|
| 创建方式 | 空白模板 / 复制系统模板 | 是 |
| 源模板 | (仅复制模式)下拉选择要复制的系统模板 | 是(仅复制模式) |
| 模板编码 | 唯一标识,如 workorder_default(创建后不可修改) | 是 |
| 模板名称 | 显示名称,如 点检详细报告 | 是 |
| 模板类型 | 点检报告/工单报告/设备报告/维护报告/标签模板/自定义(仅空白模板模式;复制模式自动继承源模板类型) | 是(仅空白模板) |
「描述」和「设为默认」不在新建弹窗中出现,创建成功后可通过卡片上的「属性」按钮补充填写(详见 §13.3.3)。
复制系统模板时,系统会自动把新模板的描述填充为
复制自: {源模板名称},可在属性弹窗中修改。

- 点击「确定」保存。
复制系统模板后,可通过「下载」获取 .frx 文件,用 FastReport Designer 桌面端编辑后「上传」回系统。详见 §13.3.6。
13.3.3 编辑模板属性
需要 report:template:update 权限。
操作步骤:
在模板卡片上点击「属性」按钮。
弹出编辑弹窗,可修改:
- 模板名称(必填)
- 描述:模板用途说明
- 设为默认:同类型仅允许一个默认模板
模板编码在编辑弹窗中以只读形式展示(置灰不可输入);模板类型在编辑弹窗中不渲染——如需更改编码或类型,请重新「新建模板」。
系统模板也可打开「属性」弹窗,但只有「设为默认」开关会生效;其余字段(如名称、描述)的改动会被后端忽略。
点击「确定」保存。

13.3.4 在线设计模板
需要 report:template:design 权限。
系统集成了 FastReport Online Designer,可在浏览器中直接编辑报表模板布局、数据字段、样式等。
系统模板不可在线设计。如需修改系统模板,请通过「新建模板 → 复制系统模板」创建副本后再编辑。
打开设计器:
- 在模板卡片上点击「设计」按钮(或下拉选择打开方式):
- 内嵌打开:在当前页面内以全屏 iframe 覆盖内容区显示设计器,不遮挡左侧菜单
- 新窗口打开:在新浏览器标签页中打开设计器

设计器界面:
- 左侧:组件工具箱(文本框、表格、图表、条形码等)
- 中间:报表设计画布(拖拽布局)
- 右侧:属性面板(设置组件属性、数据绑定)
- 顶部:工具栏(保存、预览、撤销/重做等)

保存设计内容: 设计器中点击保存 → 模板文件自动更新到服务器,模板状态会自动转为「草稿」。如需导出时使用最新内容,请重新「发布」。上传 .frx 文件后模板状态同样会自动变为「草稿」。
退出设计器: 内嵌模式下的设计器顶栏:
- 左侧显示「正在设计: {模板名称}」 + 模板编码标签;
- 右侧提供「新窗口」按钮(一键将当前内嵌设计器切换为新窗口打开)和「关闭」按钮(退出内嵌设计器)。
注意:切换到其他菜单不会自动关闭内嵌设计器(内嵌层是
position:fixed的遮罩),请显式点击顶栏「关闭」。
13.3.5 发布/禁用/启用模板
需要 report:template:update 权限。
模板有三种状态:
| 状态 | 说明 | 可用操作 |
|---|---|---|
| 草稿 | 新建或刚刚编辑的模板,不可用于导出 | 发布、设计(非系统)、属性、下载、上传(非系统)、删除(非系统) |
| 已发布 | 上线状态,可在导出时选择 | 禁用(非系统)、设计(非系统)、属性、下载、上传(非系统)、删除(非系统) |
| 已禁用 | 被下线的模板,不可用于导出 | 启用、设计(非系统)、属性、下载、上传(非系统)、删除(非系统) |
发布模板:点击卡片上的「发布」按钮 → 立即生效,导出时可选择该模板。
禁用模板:点击卡片上的「禁用」按钮 → 弹出确认提示「禁用后将无法在导出时选择此模板,确定禁用?」→ 确认后模板变为禁用状态。
启用模板:点击卡片上的「启用」按钮 → 立即恢复为已发布状态。
13.3.6 下载与上传模板
适用于需要用 FastReport Desktop Designer(桌面版)进行离线高级编辑的场景。
下载模板
需要 report:template:view 权限。
点击模板卡片上的「下载」按钮 → 浏览器自动下载 .frx 模板文件。
上传模板
需要 report:template:update 权限(仅非系统模板可上传)。
操作步骤:
- 点击模板卡片上的「上传」按钮,弹出上传弹窗。
- 点击或拖拽
.frx文件到上传区域。 - 系统自动上传并更新模板文件。
使用说明(弹窗内指引):
- 先点击「下载」获取当前模板 .frx 文件
- 用 FastReport Designer 打开编辑
- 保存后在此上传修改后的文件
- 上传后模板状态变为草稿,需重新「发布」

支持文件大小不超过 10MB。系统模板不允许直接上传,请先「复制系统模板」创建副本再上传。
13.3.7 导出报表
导出报表有以下入口,不同入口所需权限和支持的格式不同:
入口一:工单详情页导出
需要 report:export 权限。支持 PDF / Excel / Word 三种格式。
这是最常用的导出场景。操作步骤:
- 进入「设备与工单」→「工单管理」
- 找到目标工单,点击「查看」打开工单详情弹窗
- 在弹窗底部操作栏找到「📄 导出报表」下拉按钮
- 在弹窗中选择模板和导出格式:
- 📄 导出 PDF:生成 PDF 文件
- 📊 导出 Excel:生成 Excel 文件
- 📝 导出 Word:生成 Word 文件

- 浏览器自动下载生成的报表文件。
系统默认使用「默认模板」渲染报表。如需指定模板,可在导出弹窗中选择模板,或在模板管理页将目标模板设为「默认」。
入口二:设备台账批量导出
需要 equipment:export 权限。仅支持 PDF / Excel 两种格式(不支持 Word)。
在设备台账页面可按筛选条件(状态/位置/部门/设备类型)批量导出设备列表为 PDF 或 Excel 报表。
入口三:组合工单批量导出
需要 workorder:export 权限。仅支持 PDF 格式。
在组合工单场景中,可将同一组合下的多个子工单合并为一份 PDF 报告(含封面页)。
13.3.8 查看导出日志
需要 report:template:view 权限。
点击操作工具栏「导出日志」按钮,弹出日志列表弹窗。
日志列表列(当前界面渲染 8 列):
| 列名 | 说明 |
|---|---|
| 模板 | 使用的模板名称 |
| 业务类型 | 如 workorder / inspection / equipment / equipment_ledger / hierarchy_group 等(后端会将 work_order 标准化为 workorder 等并记录传入值) |
| 业务ID | 目标业务对象的 ID |
| 格式 | pdf / excel / word |
| 导出人 | 执行导出的用户名 |
| 导出时间 | 导出操作时间 |
| 耗时 | 渲染耗时(毫秒) |
| 状态 | ✅ 成功 / ❌ 失败 |
说明:后端日志 API 还返回了
file_name(文件名)和file_size(文件大小)字段,但当前列表界面未渲染这两列;且file_name目前在写入日志时仍为空值。
注意:当前前端「导出日志」按钮本身未做版面级权限守卫,所有能进入模板管理页的用户都能看到按钮;但实际的日志 API(
/api/v1/report/export-logs)在后端仍由report:template:view权限守卫,无权限用户点击后会收到 403。

13.3.9 删除模板
需要 report:template:delete 权限。
点击模板卡片上的「删除」按钮 → 弹出确认提示「确定要删除此模板吗?」→ 确认后删除。
系统模板不可删除,卡片上不会渲染「删除」按钮;即使通过接口强行调用,后端也会以「系统预置模板不能删除」拒绝。
13.4 移动端操作
报表管理功能主要面向 PC 端管理员和报表设计人员,移动端不暴露模板管理入口。
移动端的使用场景是在完成工单执行后查看/下载生成的报表文件(如果业务端集成了报表查看入口)。
13.5 常见问题
Q1:为什么模板管理页面提示"引擎异常"?
A:报表引擎微服务(FastReport .NET)未启动或无法连接。请检查:
- 引擎服务是否已启动(默认端口
5080) - 防火墙是否放行
5080端口 - 浏览器是否可访问
http://localhost:5080/health
Q2:系统模板和我创建的模板有什么区别?
A:系统模板是预置的通用模板,标记为蓝色「系统」标签。系统模板的**名称、编码、类型、描述及模板文件(.frx)**均不可修改,也不可删除、不可在线设计、不可直接上传覆盖;但仍可通过「属性」弹窗切换「设为默认」,以及通过发布/禁用切换其可用状态。如需深度修改模板内容,请通过「新建模板→复制系统模板」创建副本后编辑。
Q3:如何设置某个模板为默认模板?
A:编辑模板属性 → 打开「设为默认」开关 → 保存。同类型仅允许一个默认模板,设置新的默认值会自动取消旧的。
默认模板的选取有回退机制:如果自定义默认模板未发布,导出时会自动回退使用同类型已发布的系统模板。
Q4:在线设计器打开后为空白页?
A:检查报表引擎服务是否正常运行(默认端口 5080)。前端通过后端 /api/v1/report/designer/{template_id} 获取设计器地址,请确认后端 REPORT_ENGINE_URL 配置正确且当前用户拥有 report:template:design 权限。
Q5:为什么禁用的模板在导出下拉中不可见/不可选?
A:已禁用的模板不会被作为默认或可选模板参与导出。如需使用,请先在模板管理中启用该模板。
Q6:上传 .frx 后模板变成草稿了?
A:这是设计行为。上传新文件意味着模板内容已变更,系统自动将状态重置为「草稿」。需手动点击「发布」才能上线使用。
13.6 相关权限
| 权限名称 | 权限 key | 说明 |
|---|---|---|
| 查看报表模板 | report:template:view | 查看报表模板列表、查看模板详情、下载模板、查看导出日志 |
| 创建报表模板 | report:template:create | 新建报表模板(含复制系统模板) |
| 更新报表模板 | report:template:update | 编辑模板属性、发布/禁用/启用、上传模板文件 |
| 删除报表模板 | report:template:delete | 删除非系统模板 |
| 设计报表模板 | report:template:design | 使用在线设计器编辑模板(打开设计器和保存均需此权限) |
| 导出报表(单个工单/点检/设备) | report:export | 通过 /api/v1/report/export 和 /api/v1/report/export/{type}/{id} 导出 |
| 导出设备台账 | equipment:export | 设备台账批量导出(/api/v1/report/export/ledger),返回 PDF / Excel |
| 导出组合工单报告 | workorder:export | 组合工单批量导出合并 PDF 报告(/api/v1/report/export/hierarchy-group/{id}) |
权限枚举中还存在
report:view(查看统计报表)一项,用于仪表盘/统计类报表访问控制;它不用于本章所述的模板管理模块,在模板管理内也没有对应的菜单入口。
