Skip to content

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 页面布局 ​

进入「模板管理」页面后,从上到下依次为:

顶部标题区:

  • 左侧标题和副标题:「📄 报表模板管理」+「管理系统报表模板,支持可视化设计和多格式导出」
  • 右侧引擎状态标签:🟢 引擎正常 / 🔴 引擎异常

PC端模板管理-标题区

统计卡片行(四个统计汇总卡片):

  • 模板总数
  • 已发布
  • 今日导出
  • 本月导出

PC端模板管理-统计卡片

操作工具栏:

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

PC端模板管理-操作栏

模板卡片列表: 每个模板以卡片形式展示,包含以下信息:

  • 模板名称
  • 模板编码(唯一标识)
  • 系统/默认标签(蓝色「系统」/金色「默认」)
  • 状态标签(草稿/已发布/已禁用)
  • 类型(如:工单报告)
  • 描述(截断显示为 2 行,仅存在描述时显示)
  • 创建人与创建时间

PC端模板管理-模板列表

模板操作按钮(卡片右侧):

按钮权限说明
设计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删除模板(仅非系统模板,所有状态可删除,需二次确认)

PC端模板管理-卡片操作

底部分页器:支持切换每页条数和快速跳转页码。


13.3.2 新建模板 ​

需要 report:template:create 权限。

操作步骤:

  1. 点击「新建模板」按钮,弹出新建弹窗。
  2. 选择创建方式:
    • 空白模板:从零开始创建
    • 复制系统模板:基于已有系统模板创建副本
  3. 填写模板信息:
字段说明必填
创建方式空白模板 / 复制系统模板是
源模板(仅复制模式)下拉选择要复制的系统模板是(仅复制模式)
模板编码唯一标识,如 workorder_default(创建后不可修改)是
模板名称显示名称,如 点检详细报告是
模板类型点检报告/工单报告/设备报告/维护报告/标签模板/自定义(仅空白模板模式;复制模式自动继承源模板类型)是(仅空白模板)

「描述」和「设为默认」不在新建弹窗中出现,创建成功后可通过卡片上的「属性」按钮补充填写(详见 §13.3.3)。

复制系统模板时,系统会自动把新模板的描述填充为 复制自: {源模板名称},可在属性弹窗中修改。

PC端模板管理-新建模板弹窗

  1. 点击「确定」保存。

复制系统模板后,可通过「下载」获取 .frx 文件,用 FastReport Designer 桌面端编辑后「上传」回系统。详见 §13.3.6。


13.3.3 编辑模板属性 ​

需要 report:template:update 权限。

操作步骤:

  1. 在模板卡片上点击「属性」按钮。

  2. 弹出编辑弹窗,可修改:

    • 模板名称(必填)
    • 描述:模板用途说明
    • 设为默认:同类型仅允许一个默认模板

    模板编码在编辑弹窗中以只读形式展示(置灰不可输入);模板类型在编辑弹窗中不渲染——如需更改编码或类型,请重新「新建模板」。

    系统模板也可打开「属性」弹窗,但只有「设为默认」开关会生效;其余字段(如名称、描述)的改动会被后端忽略。

  3. 点击「确定」保存。

PC端模板管理-编辑属性弹窗


13.3.4 在线设计模板 ​

需要 report:template:design 权限。

系统集成了 FastReport Online Designer,可在浏览器中直接编辑报表模板布局、数据字段、样式等。

系统模板不可在线设计。如需修改系统模板,请通过「新建模板 → 复制系统模板」创建副本后再编辑。

打开设计器:

  1. 在模板卡片上点击「设计」按钮(或下拉选择打开方式):
    • 内嵌打开:在当前页面内以全屏 iframe 覆盖内容区显示设计器,不遮挡左侧菜单
    • 新窗口打开:在新浏览器标签页中打开设计器

PC端模板管理-设计器-内嵌

设计器界面:

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

PC端模板管理-设计器界面

保存设计内容: 设计器中点击保存 → 模板文件自动更新到服务器,模板状态会自动转为「草稿」。如需导出时使用最新内容,请重新「发布」。上传 .frx 文件后模板状态同样会自动变为「草稿」。

退出设计器: 内嵌模式下的设计器顶栏:

  • 左侧显示「正在设计: {模板名称}」 + 模板编码标签;
  • 右侧提供「新窗口」按钮(一键将当前内嵌设计器切换为新窗口打开)和「关闭」按钮(退出内嵌设计器)。

注意:切换到其他菜单不会自动关闭内嵌设计器(内嵌层是 position:fixed 的遮罩),请显式点击顶栏「关闭」。


13.3.5 发布/禁用/启用模板 ​

需要 report:template:update 权限。

模板有三种状态:

状态说明可用操作
草稿新建或刚刚编辑的模板,不可用于导出发布、设计(非系统)、属性、下载、上传(非系统)、删除(非系统)
已发布上线状态,可在导出时选择禁用(非系统)、设计(非系统)、属性、下载、上传(非系统)、删除(非系统)
已禁用被下线的模板,不可用于导出启用、设计(非系统)、属性、下载、上传(非系统)、删除(非系统)

发布模板:点击卡片上的「发布」按钮 → 立即生效,导出时可选择该模板。

禁用模板:点击卡片上的「禁用」按钮 → 弹出确认提示「禁用后将无法在导出时选择此模板,确定禁用?」→ 确认后模板变为禁用状态。

启用模板:点击卡片上的「启用」按钮 → 立即恢复为已发布状态。


13.3.6 下载与上传模板 ​

适用于需要用 FastReport Desktop Designer(桌面版)进行离线高级编辑的场景。

下载模板 ​

需要 report:template:view 权限。

点击模板卡片上的「下载」按钮 → 浏览器自动下载 .frx 模板文件。

上传模板 ​

需要 report:template:update 权限(仅非系统模板可上传)。

操作步骤:

  1. 点击模板卡片上的「上传」按钮,弹出上传弹窗。
  2. 点击或拖拽 .frx 文件到上传区域。
  3. 系统自动上传并更新模板文件。

使用说明(弹窗内指引):

  1. 先点击「下载」获取当前模板 .frx 文件
  2. 用 FastReport Designer 打开编辑
  3. 保存后在此上传修改后的文件
  4. 上传后模板状态变为草稿,需重新「发布」

PC端模板管理-上传弹窗

支持文件大小不超过 10MB。系统模板不允许直接上传,请先「复制系统模板」创建副本再上传。


13.3.7 导出报表 ​

导出报表有以下入口,不同入口所需权限和支持的格式不同:

入口一:工单详情页导出 ​

需要 report:export 权限。支持 PDF / Excel / Word 三种格式。

这是最常用的导出场景。操作步骤:

  1. 进入「设备与工单」→「工单管理」
  2. 找到目标工单,点击「查看」打开工单详情弹窗
  3. 在弹窗底部操作栏找到「📄 导出报表」下拉按钮
  4. 在弹窗中选择模板和导出格式:
    • 📄 导出 PDF:生成 PDF 文件
    • 📊 导出 Excel:生成 Excel 文件
    • 📝 导出 Word:生成 Word 文件

PC端工单详情-导出报表

  1. 浏览器自动下载生成的报表文件。

系统默认使用「默认模板」渲染报表。如需指定模板,可在导出弹窗中选择模板,或在模板管理页将目标模板设为「默认」。

入口二:设备台账批量导出 ​

需要 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。

PC端模板管理-导出日志


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(查看统计报表)一项,用于仪表盘/统计类报表访问控制;它不用于本章所述的模板管理模块,在模板管理内也没有对应的菜单入口。

内容与产品内嵌操作手册同源同步,不做双向编辑