/** * 服务器作用域工具(纯函数,可在拦截器/组件外使用) * * 对齐原生 CompanyCommon.getServer / hasAdminVerifyArg / setPageTitle / apiUrl 的参数注入逻辑: * - server 参数:URL query 含 server 且非 gvsds-master 时注入 * - admin_verify 参数:URL query 含 admin_verify=1 时注入 * * 在 axios 请求拦截器统一注入,替代原生每次拼接 buildApiUrl */ /** 默认服务器标识(主实例) */ export const DEFAULT_SERVER = 'gvsds-master' /** 从 URL query 读取 server,默认 gvsds-master */ export function getServer(): string { if (typeof window === 'undefined') return DEFAULT_SERVER return new URLSearchParams(window.location.search).get('server') || DEFAULT_SERVER } /** 是否为默认服务器(主实例) */ export function isDefaultServer(): boolean { return getServer() === DEFAULT_SERVER } /** URL query 是否含 admin_verify=1(管理员特权模式标记) */ export function hasAdminVerifyArg(): boolean { if (typeof window === 'undefined') return false return new URLSearchParams(window.location.search).get('admin_verify') === '1' } /** 需要注入到请求的 server 作用域参数 */ export interface ServerScopeParams { /** 非主实例时的服务器标识 */ server?: string /** 管理员特权模式标记 */ admin_verify?: string } /** * 收集当前请求需要注入的 server 作用域参数 * - 主实例不注入 server * - 无 admin_verify 标记不注入 */ export function getServerScopeParams(): ServerScopeParams { const params: ServerScopeParams = {} if (!isDefaultServer()) params.server = getServer() if (hasAdminVerifyArg()) params.admin_verify = '1' return params } /** * 设置页面标题:主实例直接用 title,非主实例加 "server - " 前缀 * 对齐原生 CompanyUtils.setPageTitle */ export function setPageTitle(title: string): void { if (typeof document === 'undefined') return document.title = isDefaultServer() ? title : `${getServer()} - ${title}` }