/** * 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 extends PaginatingCommonParams { rows: T[]; } /** * enable status * * - "0": enabled * - "1": disabled */ type EnableStatus = '1' | '0'; /** common record */ type CommonRecord = { /** 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 & CommonSearchParams >; /** role list */ type RoleList = Common.PaginatingQueryRecord; /** all role */ type AllRole = Pick; /** * 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 & CommonSearchParams >; /** user list */ type UserList = Common.PaginatingQueryRecord; 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; 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 search params */ type DeptSearchParams = Partial & 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 & CommonSearchParams>; type PostList = Common.PaginatingQueryRecord; // 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 & CommonSearchParams>; type DictList = Common.PaginatingQueryRecord; } namespace Device { interface ApDevice { id: number; mac: string; publicIp: string; name: string; status: number; model: string; uptime: string; createBy: string | null; createTime: string; updateBy: string | null; updateTime: string | null; operate?: string; } type ApDeviceResponse = App.Service.Response>; 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; clientMac:string; createBy: string | null; createTime: string; updateBy: string | null; updateTime: string | null; } type TerminalDeviceResponse = App.Service.Response; interface TerminalDeviceParams { pageNum: number; pageSize: number; clientName?: string; clientDeviceType?: string; clientMac?: 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; 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; } } }