974 lines
21 KiB
TypeScript
974 lines
21 KiB
TypeScript
/**
|
|
* Namespace Api
|
|
*
|
|
* All backend api type
|
|
*/
|
|
declare namespace Api {
|
|
namespace Common {
|
|
/** common params of paginating */
|
|
interface PaginatingCommonParams {
|
|
/** total count */
|
|
total: number;
|
|
}
|
|
|
|
/** common params of paginating query list data */
|
|
interface PaginatingQueryRecord<T = any> extends PaginatingCommonParams {
|
|
rows: T[];
|
|
}
|
|
|
|
/**
|
|
* enable status
|
|
*
|
|
* - "0": enabled
|
|
* - "1": disabled
|
|
*/
|
|
type EnableStatus = '1' | '0';
|
|
|
|
/** common record */
|
|
type CommonRecord<T = any> = {
|
|
/** record creator */
|
|
createBy: string;
|
|
/** record create time */
|
|
createTime: string;
|
|
/** record updater */
|
|
updateBy: string;
|
|
/** record update time */
|
|
updateTime: string;
|
|
/** record status */
|
|
status: EnableStatus;
|
|
} & T;
|
|
|
|
type CommonTree = {
|
|
id: number;
|
|
label: string;
|
|
children?: CommonTree[];
|
|
}[];
|
|
}
|
|
|
|
namespace Department {
|
|
interface Dept {
|
|
createBy: any;
|
|
createTime: any;
|
|
updateBy: any;
|
|
updateTime: any;
|
|
remark: any;
|
|
deptId: number;
|
|
parentId: number;
|
|
ancestors: string;
|
|
deptName: string;
|
|
orderNum: number;
|
|
leader: string;
|
|
phone: any;
|
|
email: any;
|
|
status: string;
|
|
delFlag: any;
|
|
parentName: any;
|
|
children: any[];
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Namespace Auth
|
|
*
|
|
* Backend api module: "auth"
|
|
*/
|
|
namespace Auth {
|
|
interface LoginToken {
|
|
access_token: string;
|
|
refreshToken: string;
|
|
}
|
|
/** User info */
|
|
interface UserInfo {
|
|
user: User | null;
|
|
roles: string[];
|
|
/** permissions */
|
|
permissions: string[];
|
|
}
|
|
|
|
interface User {
|
|
createBy: string;
|
|
createTime: string;
|
|
updateBy: any;
|
|
updateTime: any;
|
|
remark: string;
|
|
userId: number;
|
|
deptId: number;
|
|
userName: string;
|
|
nickName: string;
|
|
email: string;
|
|
phonenumber: string;
|
|
sex: string;
|
|
avatar: string;
|
|
password: string;
|
|
status: '0' | '1';
|
|
delFlag: string;
|
|
loginIp: string;
|
|
loginDate: string;
|
|
dept: Department.Dept;
|
|
roles: Role[];
|
|
roleId: string;
|
|
postIds: number[];
|
|
roleIds: number[];
|
|
admin: boolean;
|
|
}
|
|
|
|
interface Role {
|
|
remark: any;
|
|
roleId: number;
|
|
roleName: string;
|
|
roleKey: string;
|
|
roleSort: number;
|
|
dataScope: string;
|
|
menuCheckStrictly: boolean;
|
|
deptCheckStrictly: boolean;
|
|
status: string;
|
|
delFlag: '0' | '1';
|
|
flag: boolean;
|
|
menuIds: number[] | null;
|
|
deptIds: number[] | null;
|
|
permissions: any;
|
|
admin: boolean;
|
|
}
|
|
|
|
interface LoginBody {
|
|
username: string;
|
|
password: string;
|
|
code: string;
|
|
uuid: string;
|
|
authType: string;
|
|
}
|
|
interface RegisterBody{
|
|
username: string;
|
|
password: string;
|
|
authType:string;
|
|
email: string;
|
|
fullName: string;
|
|
age: number;
|
|
address: string;
|
|
sex: string;
|
|
phonenumber: string;
|
|
}
|
|
interface EmailCaptcha{
|
|
email:string;
|
|
}
|
|
interface CheckBody{
|
|
username?: string;
|
|
email?: string;
|
|
phonenumber?:string;
|
|
authType: string;
|
|
}
|
|
interface RateLimit {
|
|
id: number;
|
|
rateLimitName: string;
|
|
upLimit: number;
|
|
downLimit: number;
|
|
upLimitEnable: boolean;
|
|
downLimitEnable: boolean;
|
|
createBy: number;
|
|
createTime: string;
|
|
updateBy: number;
|
|
updateTime: string;
|
|
delFlag: boolean;
|
|
}
|
|
interface RateLimitAdd {
|
|
rateLimitName: string;
|
|
upLimitEnable: boolean;
|
|
downLimitEnable: boolean;
|
|
upLimit: number;
|
|
downLimit: number;
|
|
}
|
|
interface Package {
|
|
id: string;
|
|
packageName: string;
|
|
periodNum: number;
|
|
periodType: number;
|
|
price: string;
|
|
trafficEnable: boolean;
|
|
traffic: number;
|
|
rateLimitEnable: boolean;
|
|
rateLimitId?: number;
|
|
durationEnable: boolean;
|
|
duration: number;
|
|
clientNumEnable: boolean;
|
|
clientNum: number;
|
|
packageEnable: boolean;
|
|
createBy: number;
|
|
createTime: string;
|
|
updateBy: number;
|
|
updateTime: string;
|
|
delFlag: boolean;
|
|
}
|
|
interface PackageAdd {
|
|
packageName: string;
|
|
periodNum: number;
|
|
periodType: number;
|
|
price: string;
|
|
trafficEnable: boolean;
|
|
traffic: number;
|
|
rateLimitEnable: boolean;
|
|
rateLimitId?: number;
|
|
durationEnable: boolean;
|
|
duration: number;
|
|
clientNumEnable: boolean;
|
|
clientNum: number;
|
|
packageEnable: boolean;
|
|
}
|
|
// CDR 话单查询参数
|
|
interface CdrHistoryParams {
|
|
pageNum: number;
|
|
pageSize: number;
|
|
userName?: string;
|
|
clientName?: string;
|
|
clientMac?: string;
|
|
startTime?: string;
|
|
endTime?: string;
|
|
}
|
|
|
|
// CDR 话单信息
|
|
interface CdrHistory {
|
|
id: string;
|
|
userId: number;
|
|
userName: string;
|
|
clientName: string;
|
|
clientMac: string;
|
|
trafficUp: number;
|
|
trafficDown: number;
|
|
startTime: string;
|
|
endTime: string;
|
|
duration: number;
|
|
}
|
|
|
|
// CDR 话单响应
|
|
interface CdrHistoryResponse {
|
|
rows: CdrHistory[];
|
|
total: number;
|
|
}
|
|
|
|
// 账单查询参数
|
|
interface BillParams {
|
|
pageNum: number;
|
|
pageSize: number;
|
|
userName?: string;
|
|
type?: number;
|
|
status?: number;
|
|
}
|
|
|
|
// 账单信息
|
|
interface BillInfo {
|
|
id: string;
|
|
userId: number;
|
|
userName: string;
|
|
type: number;
|
|
packageName: string;
|
|
orderAmount: number;
|
|
status: number;
|
|
createTime: string;
|
|
updateTime: string;
|
|
}
|
|
|
|
// 账单响应
|
|
interface BillResponse {
|
|
rows: BillInfo[];
|
|
total: number;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Namespace Route
|
|
*
|
|
* Backend api module: "route"
|
|
*/
|
|
namespace Route {
|
|
type ElegantConstRoute = import('@elegant-router/types').ElegantConstRoute;
|
|
|
|
interface MenuRoute extends ElegantConstRoute {
|
|
id: string;
|
|
}
|
|
|
|
interface UserRoute {
|
|
routes: MenuRoute[];
|
|
home: import('@elegant-router/types').LastLevelRouteKey;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* namespace SystemManage
|
|
*
|
|
* backend api module: "systemManage"
|
|
*/
|
|
namespace SystemManage {
|
|
type CommonSearchParams = {
|
|
/** page number */
|
|
pageNum: number;
|
|
/** page size */
|
|
pageSize: number;
|
|
};
|
|
|
|
/** role */
|
|
type Role = Common.CommonRecord<{
|
|
remark: string;
|
|
roleId: number;
|
|
roleName: string;
|
|
roleKey: string;
|
|
roleSort: number;
|
|
dataScope: string;
|
|
menuCheckStrictly: boolean;
|
|
deptCheckStrictly: boolean;
|
|
status: string;
|
|
delFlag: '0' | '1';
|
|
flag: boolean;
|
|
menuIds: number[] | null;
|
|
deptIds: number[] | null;
|
|
permissions: string;
|
|
admin: boolean;
|
|
}>;
|
|
|
|
/** role search params */
|
|
type RoleSearchParams = Partial<
|
|
Pick<Api.SystemManage.Role, 'roleName' | 'roleKey' | 'status'> & CommonSearchParams
|
|
>;
|
|
|
|
/** role list */
|
|
type RoleList = Common.PaginatingQueryRecord<Role>;
|
|
|
|
/** all role */
|
|
type AllRole = Pick<Role, 'roleId' | 'roleName' | 'remark' | 'roleKey'>;
|
|
|
|
/**
|
|
* user gender
|
|
*
|
|
* - "1": "male"
|
|
* - "2": "female"
|
|
*/
|
|
type UserGender = '1' | '2';
|
|
|
|
/** user */
|
|
type UserInfo = Common.CommonRecord<{
|
|
/** user name */
|
|
username: string;
|
|
/** user gender */
|
|
userGender: UserGender | null;
|
|
/** user nick name */
|
|
nickName: string;
|
|
/** user phone */
|
|
userPhone: string;
|
|
/** user email */
|
|
userEmail: string;
|
|
/** user role code collection */
|
|
userRoles: string[];
|
|
}>;
|
|
|
|
/** user search params */
|
|
type UserSearchParams = Partial<
|
|
Pick<Auth.User, 'userName' | 'nickName' | 'phonenumber' | 'status' | 'sex' | 'email' | 'deptId'> &
|
|
CommonSearchParams
|
|
>;
|
|
|
|
/** user list */
|
|
type UserList = Common.PaginatingQueryRecord<Auth.User>;
|
|
|
|
type UserPostsAndRoles = {
|
|
posts: Post[];
|
|
roles: Role[];
|
|
postIds: number[];
|
|
roleIds: number[];
|
|
};
|
|
|
|
/**
|
|
* menu type
|
|
*
|
|
* - "1": directory
|
|
* - "2": menu
|
|
*/
|
|
type MenuType = 'M' | 'C' | 'F';
|
|
|
|
type MenuButton = {
|
|
/**
|
|
* button code
|
|
*
|
|
* it can be used to control the button permission
|
|
*/
|
|
code: string;
|
|
/** button description */
|
|
desc: string;
|
|
};
|
|
|
|
/**
|
|
* icon type
|
|
*
|
|
* - "1": iconify icon
|
|
* - "2": local icon
|
|
*/
|
|
type IconType = '1' | '2';
|
|
|
|
type Menu = Common.CommonRecord<{
|
|
/** parent menu id */
|
|
parentId: number;
|
|
/** menu type */
|
|
menuType: MenuType;
|
|
/** menu name */
|
|
menuName: string;
|
|
/** route name */
|
|
routeName: string;
|
|
/** route path */
|
|
routePath: string;
|
|
/** component */
|
|
component?: string;
|
|
menuId: number;
|
|
path: string;
|
|
/**
|
|
* i18n key
|
|
*
|
|
* it is for internationalization
|
|
*/
|
|
i18nKey?: App.I18n.I18nKey;
|
|
/** iconify icon name or local icon name */
|
|
icon: string;
|
|
/** icon type */
|
|
iconType: IconType;
|
|
/** menu order */
|
|
orderNum: number;
|
|
/** whether to cache the route */
|
|
keepAlive?: '0' | '1';
|
|
/** outer link */
|
|
href?: string;
|
|
/** whether to retain the route */
|
|
status: '0' | '1';
|
|
/** whether to hide the route in the menu */
|
|
hideInMenu?: '0' | '1';
|
|
/**
|
|
* The menu key will be activated when entering the route
|
|
*
|
|
* The route is not in the menu
|
|
*
|
|
* @example
|
|
* the route is "user_detail", if it is set to "user_list", the menu "user_list" will be activated
|
|
*/
|
|
activeMenu?: import('@elegant-router/types').LastLevelRouteKey;
|
|
/** By default, the same route path will use one tab, if set to true, it will use multiple tabs */
|
|
multiTab?: boolean;
|
|
/** If set, the route will be fixed in tabs, and the value is the order of fixed tabs */
|
|
fixedIndexInTab?: number;
|
|
/** menu buttons */
|
|
buttons?: MenuButton[];
|
|
/** children menu */
|
|
children?: Menu[];
|
|
/** is external link */
|
|
isFrame: '0' | '1';
|
|
/** perms to request api */
|
|
perms: string;
|
|
/** menu name(path combine) */
|
|
name: string;
|
|
isCache: '0' | '1';
|
|
visible: '0' | '1';
|
|
}>;
|
|
|
|
/** menu list */
|
|
type MenuList = Common.PaginatingQueryRecord<Menu>;
|
|
|
|
type MenuTree = {
|
|
id: number;
|
|
label: string;
|
|
pId: number;
|
|
children?: MenuTree[];
|
|
};
|
|
|
|
// dept api
|
|
/** dept */
|
|
type Dept = {
|
|
createBy: string;
|
|
createTime: string;
|
|
updateBy: string;
|
|
updateTime: string;
|
|
remark: string;
|
|
deptId: number;
|
|
parentId: number;
|
|
ancestors: string;
|
|
deptName: string;
|
|
orderNum: number;
|
|
leader: string;
|
|
phone: string;
|
|
email: string;
|
|
status: '0' | '1';
|
|
delFlag: string;
|
|
parentName: string;
|
|
children: Dept[];
|
|
};
|
|
|
|
type DeptList = Common.PaginatingQueryRecord<Dept>;
|
|
|
|
/** dept search params */
|
|
type DeptSearchParams = Partial<Pick<Dept, 'deptName' | 'status'> & CommonSearchParams>;
|
|
|
|
// post api
|
|
type Post = {
|
|
createBy: string;
|
|
createTime: string;
|
|
updateBy: any;
|
|
updateTime: any;
|
|
remark: string;
|
|
postId: number;
|
|
postCode: string;
|
|
postName: string;
|
|
postSort: number;
|
|
status: '0' | '1';
|
|
flag: boolean;
|
|
};
|
|
|
|
type PostSearchParams = Partial<Pick<Post, 'postName' | 'status' | 'postCode'> & CommonSearchParams>;
|
|
|
|
type PostList = Common.PaginatingQueryRecord<Post>;
|
|
|
|
// dict api
|
|
type Dict = {
|
|
createBy: string;
|
|
createTime: string;
|
|
updateBy: string;
|
|
updateTime: string;
|
|
remark: string;
|
|
dictId: number;
|
|
dictName: string;
|
|
dictType: string;
|
|
status: '0' | '1';
|
|
delFlag: string;
|
|
};
|
|
|
|
type DictSearchParams = Partial<Pick<Dict, 'dictName' | 'dictType' | 'status'> & CommonSearchParams>;
|
|
|
|
type DictList = Common.PaginatingQueryRecord<Dict>;
|
|
}
|
|
|
|
namespace Device {
|
|
interface ApDevice {
|
|
mac: string;
|
|
name: string;
|
|
type: string;
|
|
subtype: string | null;
|
|
deviceSeriesType: number;
|
|
model: string;
|
|
ip: string;
|
|
ipv6: string | null;
|
|
uptime: string;
|
|
status: number;
|
|
lastSeen: number;
|
|
cpuUtil: number;
|
|
memUtil: number;
|
|
sn: string;
|
|
licenseStatus: number;
|
|
tagName: string | null;
|
|
uplinkDeviceMac: string | null;
|
|
uplinkDeviceName: string | null;
|
|
uplinkDevicePort: string | null;
|
|
linkSpeed: string | null;
|
|
duplex: string | null;
|
|
switchConsistent: boolean;
|
|
publicIp: string;
|
|
firmwareVersion: string;
|
|
}
|
|
interface ApDeviceListData {
|
|
total: number;
|
|
rows: ApDevice[];
|
|
}
|
|
|
|
interface ApDeviceResponse {
|
|
code: number;
|
|
msg: string;
|
|
data: ApDeviceListData;
|
|
}
|
|
|
|
interface ApDeviceParams {
|
|
pageNum: number;
|
|
pageSize: number;
|
|
name?: string;
|
|
mac?: string;
|
|
}
|
|
|
|
|
|
interface TerminalDevice {
|
|
id: number;
|
|
name: string;
|
|
ip: string;
|
|
authStatus: number;
|
|
ssid: string;
|
|
apName: string;
|
|
activity: number;
|
|
trafficDown: number;
|
|
trafficUp: number;
|
|
uptime: number;
|
|
mac:string;
|
|
createBy: string | null;
|
|
createTime: string;
|
|
updateBy: string | null;
|
|
updateTime: string | null;
|
|
}
|
|
|
|
type TerminalDeviceResponse = App.Service.Response<TerminalDevice[]>;
|
|
|
|
interface TerminalDeviceParams {
|
|
pageNum: number;
|
|
pageSize: number;
|
|
clientName?: string;
|
|
clientDeviceType?: string;
|
|
clientMac?: string;
|
|
}
|
|
/** AP设备添加参数 */
|
|
interface AddApDeviceItem {
|
|
sn?: string;
|
|
name?: string;
|
|
username?: string;
|
|
password?: string;
|
|
}
|
|
interface AddApDeviceParams {
|
|
devices: AddApDeviceItem[];
|
|
}
|
|
interface ApDeviceLocation {
|
|
longitude: number;
|
|
latitude: number;
|
|
address: string;
|
|
}
|
|
|
|
interface ApDeviceConfigData {
|
|
name: string;
|
|
ledSetting: number;
|
|
tagIds: string[];
|
|
location: ApDeviceLocation;
|
|
}
|
|
|
|
interface ApDeviceConfigResponse {
|
|
code: number;
|
|
msg: string;
|
|
data: {
|
|
name: string;
|
|
ledSetting: number;
|
|
tagIds: string[];
|
|
location: {
|
|
longitude: number;
|
|
latitude: number;
|
|
address: string;
|
|
}
|
|
}|null;
|
|
}
|
|
|
|
interface ApDeviceConfigUpdate {
|
|
name?: string;
|
|
ledSetting?: number;
|
|
tagIds?: string[];
|
|
location?: {
|
|
longitude?: number;
|
|
latitude?: number;
|
|
address?: string;
|
|
}
|
|
}
|
|
interface ApDeviceConfigForm {
|
|
name: string;
|
|
ledSetting: number;
|
|
tagIds?: string[];
|
|
longitude?: number;
|
|
latitude?: number;
|
|
address?: string;
|
|
}
|
|
}
|
|
|
|
namespace Billing {
|
|
interface BillRule {
|
|
id: number;
|
|
traffic: number;
|
|
price: number;
|
|
unit: number;
|
|
enable: boolean;
|
|
createBy: string | null;
|
|
createTime: string;
|
|
updateBy: string | null;
|
|
updateTime: string | null;
|
|
}
|
|
|
|
type BillRuleResponse = App.Service.Response<BillRule[]>;
|
|
|
|
interface BillRuleUpdate {
|
|
traffic: number;
|
|
price: number;
|
|
unit: number;
|
|
enable: boolean;
|
|
}
|
|
}
|
|
|
|
|
|
interface DashboardOverview {
|
|
cloud: {
|
|
connected: boolean;
|
|
};
|
|
siteNum: number;
|
|
totalGatewayNum: number;
|
|
connectedGatewayNum: number;
|
|
disconnectedGatewayNum: number;
|
|
totalSwitchNum: number;
|
|
connectedSwitchNum: number;
|
|
disconnectedSwitchNum: number;
|
|
totalApNum: number;
|
|
connectedApNum: number;
|
|
disconnectedApNum: number;
|
|
isolatedApNum: number;
|
|
totalClientNum: number;
|
|
wiredClientNum: number;
|
|
wirelessClientNum: number;
|
|
guestNum: number;
|
|
registerUserNum: number;
|
|
onlineUserNum: number;
|
|
}
|
|
interface DashboardSite {
|
|
siteId: string;
|
|
name: string;
|
|
region: string;
|
|
tagIds: string[];
|
|
timeZone: string;
|
|
scenario: string;
|
|
totalGatewayNum: number;
|
|
connectedGatewayNum: number;
|
|
disconnectedGatewayNum: number;
|
|
totalSwitchNum: number;
|
|
connectedSwitchNum: number;
|
|
disconnectedSwitchNum: number;
|
|
totalApNum: number;
|
|
connectedApNum: number;
|
|
disconnectedApNum: number;
|
|
isolatedApNum: number;
|
|
totalClientNum: number;
|
|
wiredClientNum: number;
|
|
wirelessClientNum: number;
|
|
guestNum: number;
|
|
}
|
|
|
|
|
|
interface DashboardSiteResponse {
|
|
rows: DashboardSite[];
|
|
total: number;
|
|
}
|
|
namespace Kyc {
|
|
interface KycInfo {
|
|
id: string;
|
|
userId: number;
|
|
userName: string;
|
|
realName: string;
|
|
idType: string;
|
|
idFile: string;
|
|
identifyPicture: string;
|
|
status: string;
|
|
reason?: string;
|
|
createTime: string;
|
|
updateTime: string;
|
|
}
|
|
|
|
interface KycParams {
|
|
pageNum: number;
|
|
pageSize: number;
|
|
userName?: string;
|
|
status?: string;
|
|
createTimeStart?: string;
|
|
createTimeEnd?: string;
|
|
}
|
|
|
|
interface KycResponse {
|
|
rows: KycInfo[];
|
|
total: number;
|
|
}
|
|
}
|
|
namespace Site {
|
|
interface SiteInfo {
|
|
siteId: string;
|
|
name: string;
|
|
tagIds: string[];
|
|
region: string;
|
|
timeZone: string;
|
|
scenario: string;
|
|
longitude: number | null;
|
|
latitude: number | null;
|
|
address: string | null;
|
|
type: number;
|
|
supportES: boolean;
|
|
supportL2: boolean;
|
|
}
|
|
|
|
interface SiteParams {
|
|
pageNum: number;
|
|
pageSize: number;
|
|
}
|
|
|
|
interface SiteListData {
|
|
total: number;
|
|
rows: SiteInfo[];
|
|
}
|
|
|
|
type SiteResponse = App.Service.ApiResponse<{
|
|
rows: SiteInfo[];
|
|
total: number;
|
|
}>;
|
|
}
|
|
|
|
namespace Wlan {
|
|
interface WlanGroup {
|
|
wlanId: string;
|
|
wlanName: string;
|
|
ssidList: SsidInfo[];
|
|
}
|
|
|
|
type WlanGroupResponse = App.Service.ApiResponse<WlanGroup[]>;
|
|
|
|
interface WlanSsid {
|
|
ssidId: string;
|
|
name: string;
|
|
deviceType: number;
|
|
band: number;
|
|
guestNetEnable: boolean;
|
|
security: number;
|
|
broadcast: boolean;
|
|
vlanEnable: boolean;
|
|
vlanId: number | null;
|
|
mloEnable?: boolean;
|
|
pmfMode?: number;
|
|
enable11r?: boolean;
|
|
hidePwd?: boolean;
|
|
}
|
|
|
|
interface WlanSsidConfigResponse extends App.Service.ApiResponse<WlanSsid> {}
|
|
|
|
interface WlanSsidResponse extends App.Service.ApiResponse<{
|
|
rows: WlanSsid[];
|
|
total: number;
|
|
}>{}
|
|
|
|
interface WlanSsidParams {
|
|
pageNum: number;
|
|
pageSize: number;
|
|
}
|
|
interface AddWlanSsidParams {
|
|
name: string;
|
|
deviceType: number;
|
|
band: number;
|
|
guestNetEnable: boolean;
|
|
security: number;
|
|
broadcast: boolean;
|
|
vlanEnable: boolean;
|
|
vlanId?: number;
|
|
// 固定值字段
|
|
mloEnable: false;
|
|
pmfMode: 1;
|
|
enable11r: false;
|
|
hidePwd: false;
|
|
greEnable: false;
|
|
}
|
|
|
|
// 表单数据类型
|
|
interface WlanSsidForm {
|
|
name: string;
|
|
deviceType: {
|
|
eap: boolean;
|
|
gateway: boolean;
|
|
};
|
|
band: {
|
|
band24G: boolean;
|
|
band5G: boolean;
|
|
band6G: boolean;
|
|
};
|
|
guestNetEnable: boolean;
|
|
security: number;
|
|
broadcast: boolean;
|
|
vlanEnable: boolean;
|
|
vlanId?: number;
|
|
}
|
|
}
|
|
namespace Portal {
|
|
interface Portal {
|
|
id: string;
|
|
name: string;
|
|
enable: boolean;
|
|
ssidNames: string[];
|
|
ssidList: string[];
|
|
networkList: string[];
|
|
authType: number;
|
|
hotspotTypes: any;
|
|
}
|
|
|
|
|
|
interface PortalResponse extends App.Service.ApiResponse<{
|
|
rows: Portal[];
|
|
total: number;
|
|
}> {}
|
|
}
|
|
namespace Portal {
|
|
// 先定义基础类型
|
|
interface SsidInfo {
|
|
ssidId: string;
|
|
ssidName: string;
|
|
}
|
|
|
|
interface WlanGroup {
|
|
wlanId: string;
|
|
wlanName: string;
|
|
ssidList: SsidInfo[];
|
|
}
|
|
interface Portal {
|
|
id: string;
|
|
name: string;
|
|
enable: boolean;
|
|
ssidNames: string[];
|
|
ssidList: string[];
|
|
networkList: string[];
|
|
authType: number;
|
|
hotspotTypes: any;
|
|
}
|
|
|
|
|
|
interface PortalResponse extends App.Service.ApiResponse<{
|
|
rows: Portal[];
|
|
total: number;
|
|
}> {}
|
|
|
|
|
|
interface SsidListResponse extends App.Service.ApiResponse<WlanGroup[]> {}
|
|
|
|
interface AuthTimeout {
|
|
customTimeout: number;
|
|
customTimeoutUnit: 1 | 2 | 3; // 1:分钟 2:小时 3:天
|
|
}
|
|
|
|
interface NoAuth {
|
|
dailyLimitEnable: boolean;
|
|
}
|
|
interface ExternalPortal {
|
|
hostType: 1 | 2; // 1: IP地址 2: URL
|
|
serverUrl: string; // IP地址或URL值
|
|
serverUrlScheme?: string; // URL时的协议类型
|
|
}
|
|
|
|
interface ImportedPortalPage {
|
|
id: string;
|
|
}
|
|
|
|
interface AddPortalParams {
|
|
name: string;
|
|
enable: boolean;
|
|
ssidList: string[];
|
|
authType: number;
|
|
authTimeout: AuthTimeout;
|
|
noAuth: NoAuth;
|
|
httpsRedirectEnable: boolean;
|
|
landingPage: 1 | 2 | 3;
|
|
landingUrlScheme?: string;
|
|
landingUrl?: string;
|
|
externalPortal?: ExternalPortal; // 添加外部Portal配置
|
|
pageType: number;
|
|
importedPortalPage: ImportedPortalPage;
|
|
|
|
}
|
|
}
|
|
}
|
|
|
|
declare namespace App {
|
|
namespace Service {
|
|
interface ApiResponse<T = any> {
|
|
data: T;
|
|
error: any;
|
|
}
|
|
}
|
|
}
|