分享 / 订阅 / 嵌入 / 协作
仪表盘建好后,可以对外公开分享、定时推送摘要、嵌入到项目其它模块,并支持团队评论协作。
公开分享链接
为仪表盘生成无需登录即可访问的链接,适合对外展示或大屏投屏。
使用步骤
- 在仪表盘列表/详情打开「分享」管理。
- 「创建分享链接」,可选:
- 访问密码:设置后访客需输入密码(至少 8 位,bcrypt 加盐存储)。
- 有效期:7 / 30 / 90 天或永久,默认 30 天(不默认永久,降低长期暴露面)。
- 启用 / 停用:随时开关。
- 复制链接(形如
/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 |