Files
GERP/src/utils/serverScope.ts
T

59 lines
2.0 KiB
TypeScript

/**
* 服务器作用域工具(纯函数,可在拦截器/组件外使用)
*
* 对齐原生 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}`
}