Skip to content

链接参数

查看态的链接就是接口。除了下面这几个保留字段,链接上其余的 key 一律当成报表的筛选条件

https://report.example.com/?id=<报表id>&view=1[&其它参数]

保留字段

参数必填说明
id报表 id,形如 r260922123456
view1 表示查看态;不写就是设计器
version看哪一版,默认当前发布版。见下方版本
lock哪些筛选条件只显示不让改,逗号分隔;写 all 锁住全部
chrome0 去掉报表自带的页头(标题、版本、刷新、导出)
theme覆盖设计令牌,见外观与主题

筛选条件

条件的 id 在报表里定义(做报表的人能在属性面板看到),宿主按 id 传值。

条件类型链接写法例子
文本id=值&keyword=%E6%89%8B%E6%9C%AF
数字id=值&min_qty=100
日期id=YYYY-MM-DD&day=2026-08-31
月份id=YYYY-MM&month=2026-08
日期区间id=起,止id_from=起&id_to=止&range=2026-01-01,2026-03-31
数字区间id=小,大id_min=小&id_max=大&amount=100,500
单选、树形下拉id=值&store=S001
多选下拉id=a,b 或重复写 id=a&id=b&store=S001,S002

几条规则:

  • 值要做 URL 编码。中文、空格、&# 不编码会被浏览器截断,encodeURIComponent() 一下就行。
  • 写空串表示「不限」&month= 会把报表里这个条件的默认值清掉,查全部。
  • 链接上不写的条件用报表自己的默认值,不会被清空。
  • 区间只写一头也行&range_from=2026-01-01 就是「这天以后」。
  • 数字位置写了非数字&min_qty=abc)按「不限」处理,不会报错也不会查出错数。

写错了会怎样

链接里写了、报表里没有这个条件 id,页面顶上会列出来:

链接里的 storeid 不是这张报表的筛选条件,已忽略。处理:核对链接里的参数名与报表筛选栏一致。

报表照常显示,只是那个条件没生效。看到这句就去核对 id 的拼写。

锁住条件

宿主指定的口径不该让看的人改——比如按登录用户所在门店限定数据:

&store=S001&lock=store

store 显示出来但是灰的,改不了。多个用逗号:&lock=store,dept。全部锁死:&lock=all

lock 是界面口径,不是数据权限

lock 只是把控件设成只读。它挡不住会改链接的人——把 lock 去掉、把 store 换个值,照样能看到别的门店。

真正的数据边界在服务端:只读账号、SQL 守卫,以及按登录身份下发的行级范围参数。要做到「这个人只能看到自己门店」,得走行级范围那条路,不是靠 lock

版本

写法看到的内容
不写当前发布版。报表重新发布,这条链接自动跟到新版本
version=v2钉死在第 2 版,之后再发布也不变
version=draft当前草稿。发布前自查用,不要发给客户

数据快照版(发布时选了「数据快照」)打开时不查数据库,数字和筛选条件都是发布那一刻固化下来的:条件一律只读,页头没有「刷新数据」,页面上会写明「这一版是数据快照」。

一条完整的链接

https://report.example.com/?id=r260922123456&view=1
  &month=2026-08
  &store=S001,S002
  &lock=store
  &chrome=0
  &theme=primary:%232c6ecb

(实际使用写成一行,不要换行。)

意思是:打开这张报表的当前发布版,看 2026 年 8 月、S001 与 S002 两家店,门店条件不让改,不要报表自带的页头,主色换成 #2c6ecb

拼链接的代码

js
function reportUrl(base, id, params = {}, opts = {}) {
  const q = new URLSearchParams({ id, view: '1' })
  for (const [key, value] of Object.entries(params)) {
    if (value === null || value === undefined) continue
    q.set(key, Array.isArray(value) ? value.join(',') : String(value))
  }
  if (opts.lock) q.set('lock', Array.isArray(opts.lock) ? opts.lock.join(',') : opts.lock)
  if (opts.chrome === false) q.set('chrome', '0')
  if (opts.version) q.set('version', opts.version)
  if (opts.theme) q.set('theme', Object.entries(opts.theme).map(([k, v]) => `${k}:${v}`).join(','))
  return `${base}/?${q}`
}

// reportUrl('https://report.example.com', 'r260922123456',
//   { month: '2026-08', store: ['S001', 'S002'] }, { lock: 'store', chrome: false })

URLSearchParams 自己会做编码,不用再手工转义。

给 AI 用的纯文本索引在 /llms.txt,每篇原文在 /md/ 下。