Skip to content

分享 / 订阅 / 嵌入 / 协作

仪表盘建好后,可以对外公开分享、定时推送摘要、嵌入到项目其它模块,并支持团队评论协作。

公开分享链接

为仪表盘生成无需登录即可访问的链接,适合对外展示或大屏投屏。

使用步骤

  1. 在仪表盘列表/详情打开「分享」管理。
  2. 「创建分享链接」,可选:
    • 访问密码:设置后访客需输入密码(至少 8 位,bcrypt 加盐存储)。
    • 有效期:7 / 30 / 90 天或永久,默认 30 天(不默认永久,降低长期暴露面)。
    • 启用 / 停用:随时开关。
  3. 复制链接(形如 /public/report/{token})或 iframe 嵌入代码对外发布。

公开页只读渲染,复用与预览一致的渲染器;筛选器可交互且筛选状态实时同步到 URL(复制链接即可分享当前筛选视图),取数走专用公开通道,不暴露后台接口与敏感字段。

安全防护

  • 接口限流:公开通道 /api/report/public/* 内置按 IP 限流(默认 120 次/分钟,可在「限流规则」中调整 report_public_share 规则),防滥用与密码爆破。
  • 访问日志:每次公开访问(含密码错误 / 链接过期被拒的尝试)记录 IP 与时间,分享管理里可查看每条链接的累计访问次数与最近访问时间。
  • 数据最小化:公开取数按组件配置裁剪列,仅返回图表/表格实际引用的字段,数据集中未被引用的列不出公网(表格未显式配置列时不裁剪)。

定时订阅推送

按 Cron 周期把仪表盘关键指标摘要推送给指定人。在「报表中心 → 订阅推送」(/report/subscriptions)管理。

字段说明
仪表盘要推送的仪表盘
Cron推送周期表达式
通道邮件 / 站内信 / Webhook(企微、钉钉机器人,可多选)
收件人邮箱(逗号分隔);站内信推给创建者;Webhook 需填机器人地址

定时任务每分钟巡检到期订阅,自动取数生成「指标卡摘要 + 查看链接」并下发;摘要自动附带较上期推送的环比趋势(↑ / ↓ / 持平),邮件通道以 HTML 格式发送。也可在列表手动「立即推送」一次。

跨模块嵌入 <ReportEmbed>

任意仪表盘可用一行组件嵌入项目内的其它页面(如在订单模块内嵌销售看板),把宿主上下文作为筛选值注入:

tsx
import { ReportEmbed } from '@/components/ReportEmbed';

// 把当前部门作为筛选器值注入报表
<ReportEmbed
  dashboardId={5}
  filterValues={{ f_dept: deptId }}
  height={420}
/>
属性说明
dashboardId要嵌入的仪表盘 ID
filterValues外部注入的筛选器值(按 filterId),覆盖内部默认值
showFilters是否显示内置筛选栏(默认隐藏,由宿主控制)
height容器高度(默认自适应内容)

嵌入为只读渲染,复用同一套组件与取数逻辑;大屏画布仪表盘按比例自适应容器。

评论协作

仪表盘预览页提供「评论」侧栏,支持团队对报表整体或具体组件留言批注:

  • 查看评论列表(含头像、昵称、时间)。
  • 发表评论、删除自己的评论(超管可删任意评论)。

需要 report:dashboard:list 权限即可参与评论。

导出汇总

导出入口格式
仪表盘整屏仪表盘预览页PNG 图片
数据集数据数据集列表行Excel / CSV(接入导出中心)
打印报表打印报表Excel(保留网格样式) / 浏览器打印

权限速查

操作权限码
创建/管理公开分享report:dashboard:update
评论report:dashboard:list
订阅查看report:subscription:list
订阅新增 / 编辑 / 删除report:subscription:create / :update / :delete

Built with VitePress for local documentation preview.