59 lines
2.0 KiB
TypeScript
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}`
|
|
}
|