2025-05-17 23:12:41 +08:00
|
|
|
|
// 从环境变量中获取 API Host
|
|
|
|
|
const EIAC_DESKTOP_API_HOST = process.env.EIAC_DESKTOP_API_HOST || 'http://1.12.73.211:8848';
|
|
|
|
|
|
2025-05-15 00:39:58 +08:00
|
|
|
|
/**
|
|
|
|
|
* EIAC 桌面 API
|
|
|
|
|
*/
|
|
|
|
|
export class EIAC_Desktop_Api {
|
|
|
|
|
private host: string;
|
|
|
|
|
/**
|
|
|
|
|
* 构造函数,传入API Host
|
|
|
|
|
*/
|
2025-05-17 23:12:41 +08:00
|
|
|
|
constructor(host = EIAC_DESKTOP_API_HOST) {
|
2025-05-15 00:39:58 +08:00
|
|
|
|
this.host = host;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 认证接口
|
|
|
|
|
*/
|
|
|
|
|
public Auth = {
|
|
|
|
|
/**
|
|
|
|
|
* 登录 /api/Auth/Login
|
|
|
|
|
* @param request 登录请求
|
|
|
|
|
* @param init 请求初始化,可选。
|
|
|
|
|
* @returns 登录结果
|
|
|
|
|
*/
|
|
|
|
|
LoginAsync: async (request: LoginRequest, init?: RequestInit) => {
|
2025-05-17 23:12:41 +08:00
|
|
|
|
const response = await fetch(`${this.host}/EIAC_Desktop_Api/api/Auth/Login`, {
|
2025-05-15 00:39:58 +08:00
|
|
|
|
method: 'POST',
|
|
|
|
|
headers: {
|
|
|
|
|
'Content-Type': 'application/json; charset=utf-8'
|
|
|
|
|
},
|
|
|
|
|
body: JSON.stringify(request),
|
|
|
|
|
...init
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
return await response.json() as ApiResponse<LoginResponse>;
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 菜单接口
|
|
|
|
|
*/
|
|
|
|
|
public Menu = {
|
|
|
|
|
/**
|
|
|
|
|
* 获取菜单 /api/Menu/GetMenu
|
|
|
|
|
* @param init 请求初始化,可选。
|
|
|
|
|
* @returns 菜单列表
|
|
|
|
|
*/
|
|
|
|
|
GetMenuAsync: async (init?: RequestInit) => {
|
2025-05-17 23:12:41 +08:00
|
|
|
|
const response = await fetch(`${this.host}/EIAC_Desktop_Api/api/Menu/GetMenu`, {
|
2025-05-15 00:39:58 +08:00
|
|
|
|
method: 'POST',
|
|
|
|
|
headers: {
|
|
|
|
|
'Content-Type': 'application/json; charset=utf-8'
|
|
|
|
|
},
|
|
|
|
|
...init
|
|
|
|
|
});
|
|
|
|
|
return await response.json() as ApiResponse<MenuItem[]>;
|
|
|
|
|
},
|
|
|
|
|
/**
|
|
|
|
|
* 获取配置 /api/Menu/GetConfig
|
|
|
|
|
* @param configName 配置名称,可选。
|
|
|
|
|
* @param init 请求初始化,可选。
|
|
|
|
|
* @returns 配置列表
|
|
|
|
|
*/
|
|
|
|
|
GetConfigAsync: async (configName = 'TagResolution', init?: RequestInit) => {
|
2025-05-17 23:12:41 +08:00
|
|
|
|
const response = await fetch(`${this.host}/EIAC_Desktop_Api/api/Menu/GetConfig?configName=${configName}`, {
|
2025-05-15 00:39:58 +08:00
|
|
|
|
method: 'GET',
|
|
|
|
|
headers: {
|
|
|
|
|
'Content-Type': 'application/json; charset=utf-8'
|
|
|
|
|
},
|
|
|
|
|
...init
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
return await response.json() as ApiResponse<TagResolutionConfig[]>;
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 帮助接口
|
|
|
|
|
*/
|
|
|
|
|
public Help = {
|
|
|
|
|
/**
|
|
|
|
|
* 故障报告 /api/Help/FaultReporting
|
|
|
|
|
* @param request 故障报告请求
|
|
|
|
|
* @param init 请求初始化,可选。
|
|
|
|
|
* @returns 故障报告结果
|
|
|
|
|
*/
|
|
|
|
|
FaultReportingAsync: async (request: FaultReportingRequest, init?: RequestInit) => {
|
2025-05-17 23:12:41 +08:00
|
|
|
|
const response = await fetch(`${this.host}/EIAC_Desktop_Api/api/Help/FaultReporting`, {
|
2025-05-15 00:39:58 +08:00
|
|
|
|
method: 'POST',
|
|
|
|
|
headers: {
|
|
|
|
|
'Content-Type': 'application/json; charset=utf-8'
|
|
|
|
|
},
|
|
|
|
|
body: JSON.stringify(request),
|
|
|
|
|
...init
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
return await response.json() as ApiResponse<FaultReportingResponse>;
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* API 响应
|
|
|
|
|
*/
|
|
|
|
|
export interface ApiResponse<T = any> {
|
|
|
|
|
/**
|
|
|
|
|
* 状态。0:成功,非0:失败
|
|
|
|
|
*/
|
|
|
|
|
status: number;
|
|
|
|
|
/**
|
|
|
|
|
* HTTP状态码
|
|
|
|
|
*/
|
|
|
|
|
code: number;
|
|
|
|
|
/**
|
|
|
|
|
* 状态消息
|
|
|
|
|
*/
|
|
|
|
|
msg: string;
|
|
|
|
|
/**
|
|
|
|
|
* 数据
|
|
|
|
|
*/
|
|
|
|
|
data: T;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 登录请求
|
|
|
|
|
*/
|
|
|
|
|
export interface LoginRequest {
|
|
|
|
|
/**
|
|
|
|
|
* 账号
|
|
|
|
|
*/
|
|
|
|
|
Account: string;
|
|
|
|
|
/**
|
|
|
|
|
* 密码
|
|
|
|
|
*/
|
|
|
|
|
Password: string;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 登录响应
|
|
|
|
|
*/
|
|
|
|
|
export interface LoginResponse {
|
|
|
|
|
/**
|
|
|
|
|
* 是否需要发送短信
|
|
|
|
|
*/
|
|
|
|
|
IsNeedSendSMS: boolean;
|
|
|
|
|
/**
|
|
|
|
|
* 令牌
|
|
|
|
|
*/
|
|
|
|
|
Token: string;
|
|
|
|
|
/**
|
|
|
|
|
* Cookies
|
|
|
|
|
*/
|
|
|
|
|
Cookies: Array<{ Key: string, Value: string }>;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 菜单项
|
|
|
|
|
*/
|
|
|
|
|
export interface MenuItem {
|
|
|
|
|
/**
|
|
|
|
|
* 显示名称
|
|
|
|
|
*/
|
|
|
|
|
ShowName: string;
|
|
|
|
|
/**
|
|
|
|
|
* 菜单链接
|
|
|
|
|
*/
|
|
|
|
|
Url: string;
|
|
|
|
|
/**
|
|
|
|
|
* 图标配置
|
|
|
|
|
*/
|
|
|
|
|
IconConfig: IconConfig;
|
|
|
|
|
/**
|
|
|
|
|
* 子菜单
|
|
|
|
|
*/
|
|
|
|
|
Children: MenuItem[] | null;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 图标配置
|
|
|
|
|
*/
|
|
|
|
|
export interface IconConfig {
|
|
|
|
|
/**
|
|
|
|
|
* 1x 图标
|
|
|
|
|
*/
|
|
|
|
|
_1x: {
|
|
|
|
|
/**
|
|
|
|
|
* 默认图标
|
|
|
|
|
*/
|
|
|
|
|
Default: string;
|
|
|
|
|
/**
|
|
|
|
|
* 选中图标
|
|
|
|
|
*/
|
|
|
|
|
Selected: string;
|
|
|
|
|
};
|
|
|
|
|
/**
|
|
|
|
|
* 2x 图标
|
|
|
|
|
*/
|
|
|
|
|
_2x: {
|
|
|
|
|
/**
|
|
|
|
|
* 默认图标
|
|
|
|
|
*/
|
|
|
|
|
Default: string;
|
|
|
|
|
/**
|
|
|
|
|
* 选中图标
|
|
|
|
|
*/
|
|
|
|
|
Selected: string;
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* TagResolution 配置项
|
|
|
|
|
*/
|
|
|
|
|
export interface TagResolutionConfig {
|
|
|
|
|
/**
|
|
|
|
|
* 分辨率列表,以','分隔
|
|
|
|
|
*/
|
|
|
|
|
Resolutions: string;
|
|
|
|
|
/**
|
|
|
|
|
* 缩放比例
|
|
|
|
|
*/
|
2025-05-17 20:42:46 +08:00
|
|
|
|
Percentage: string | number;
|
2025-05-15 00:39:58 +08:00
|
|
|
|
/**
|
|
|
|
|
* 特殊页面
|
|
|
|
|
*/
|
|
|
|
|
SpecialPUrl: SpecialPUrlItem[];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 特殊页面的缩放比例配置项
|
|
|
|
|
*/
|
|
|
|
|
export interface SpecialPUrlItem {
|
|
|
|
|
/**
|
|
|
|
|
* 特殊页面URL
|
|
|
|
|
*/
|
|
|
|
|
SPUrl: string;
|
|
|
|
|
/**
|
|
|
|
|
* 特殊页面缩放比例
|
|
|
|
|
*/
|
2025-05-17 20:42:46 +08:00
|
|
|
|
SPPer: string | number;
|
2025-05-15 00:39:58 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 故障报告请求
|
|
|
|
|
*/
|
|
|
|
|
export interface FaultReportingRequest {
|
|
|
|
|
/**
|
|
|
|
|
* IP
|
|
|
|
|
*/
|
|
|
|
|
IP: string;
|
|
|
|
|
/**
|
|
|
|
|
* 页面URL
|
|
|
|
|
*/
|
|
|
|
|
Url: string;
|
|
|
|
|
/**
|
|
|
|
|
* 账号
|
|
|
|
|
*/
|
|
|
|
|
Account: string;
|
|
|
|
|
/**
|
|
|
|
|
* 图片Base64
|
|
|
|
|
*/
|
|
|
|
|
ImgBase64: string;
|
|
|
|
|
/**
|
|
|
|
|
* 说明
|
|
|
|
|
*/
|
|
|
|
|
Explain: string;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 故障报告响应
|
|
|
|
|
*/
|
|
|
|
|
export interface FaultReportingResponse {
|
|
|
|
|
/**
|
|
|
|
|
* 故障报告ID
|
|
|
|
|
*/
|
|
|
|
|
FaultReportingId: string;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export const EIACDesktopApi = new EIAC_Desktop_Api();
|