wangzhibo
2026-05-09 53418655c061ac26f66058253f39200aced1ab1d
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
/**
 * 将场景配置里的 boardUrl 转为 iframe 可用的绝对地址。
 * - 已是 http(s):// 开头:原样返回(兼容旧配置)。
 * - 否则视为 DataEase 前端路由片段(如 /de-link/xxx),拼为:
 *   {dataEasePublicBase}/#/de-link/xxx
 */
export function resolveBoardUrl(
  dataEasePublicBase: string | undefined,
  boardUrl: string
): string {
  const raw = (boardUrl ?? "").trim();
  if (!raw) {
    return raw;
  }
  if (/^https?:\/\//i.test(raw)) {
    return raw;
  }
  const base = (dataEasePublicBase ?? "").trim().replace(/\/$/, "");
  if (!base) {
    throw new Error(
      "app.config.json 中 dataEasePublicBase 未配置,无法解析相对 boardUrl"
    );
  }
  const path = raw.startsWith("/") ? raw : `/${raw}`;
  return `${base}/#${path}`;
}