CSAPP/src/EIAC_Desktop_Api.ts

279 lines
5.6 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// 从环境变量中获取 API Host
const EIAC_DESKTOP_API_HOST = process.env.EIAC_DESKTOP_API_HOST || 'http://1.12.73.211:8848';
/**
* EIAC 桌面 API
*/
export class EIAC_Desktop_Api {
private host: string;
/**
* 构造函数传入API Host
*/
constructor(host = EIAC_DESKTOP_API_HOST) {
this.host = host;
}
/**
* 认证接口
*/
public Auth = {
/**
* 登录 /api/Auth/Login
* @param request 登录请求
* @param init 请求初始化,可选。
* @returns 登录结果
*/
LoginAsync: async (request: LoginRequest, init?: RequestInit) => {
const response = await fetch(`${this.host}/EIAC_Desktop_Api/api/Auth/Login`, {
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) => {
const response = await fetch(`${this.host}/EIAC_Desktop_Api/api/Menu/GetMenu`, {
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) => {
const response = await fetch(`${this.host}/EIAC_Desktop_Api/api/Menu/GetConfig?configName=${configName}`, {
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) => {
const response = await fetch(`${this.host}/EIAC_Desktop_Api/api/Help/FaultReporting`, {
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;
/**
* 缩放比例
*/
Percentage: string | number;
/**
* 特殊页面
*/
SpecialPUrl: SpecialPUrlItem[];
}
/**
* 特殊页面的缩放比例配置项
*/
export interface SpecialPUrlItem {
/**
* 特殊页面URL
*/
SPUrl: string;
/**
* 特殊页面缩放比例
*/
SPPer: string | number;
}
/**
* 故障报告请求
*/
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();