/** * Namespace Api * * All backend api type */ declare namespace Api { namespace Common { /** common params of paginating */ interface PaginatingCommonParams { /** current page number */ current: number; /** page size */ size: number; /** total count */ total: number; } /** common params of paginating query list data */ interface PaginatingQueryRecord extends PaginatingCommonParams { records: T[]; } /** * enable status * * - "1": enabled * - "2": disabled */ type EnableStatus = '1' | '2'; /** common record */ type CommonRecord = { /** record id */ id: number; /** record creator */ createBy: string; /** record create time */ createTime: string; /** record updater */ updateBy: string; /** record update time */ updateTime: string; /** record status */ status: EnableStatus | null; } & T; } /** * namespace Auth * * backend api module: "auth" */ namespace Auth { interface LoginToken { token: string; refreshToken: string; } interface UserInfo { userId: string; userName: string; roles: string[]; buttons: string[]; } } /** * 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 = Pick; /** role */ type Role = Common.CommonRecord<{ /** role name */ roleName: string; /** role code */ roleCode: string; /** role description */ roleDesc: string; }>; /** role search params */ type RoleSearchParams = CommonType.RecordNullable< 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 User = 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 = CommonType.RecordNullable< Pick & CommonSearchParams >; /** user list */ type UserList = Common.PaginatingQueryRecord; /** * menu type * * - "1": directory * - "2": menu */ type MenuType = '1' | '2'; 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 MenuPropsOfRoute = Pick< import('vue-router').RouteMeta, | 'i18nKey' | 'keepAlive' | 'constant' | 'order' | 'href' | 'hideInMenu' | 'activeMenu' | 'multiTab' | 'fixedIndexInTab' | 'query' >; 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; /** iconify icon name or local icon name */ icon: string; /** icon type */ iconType: IconType; /** buttons */ buttons?: MenuButton[] | null; /** children menu */ children?: Menu[] | null; }> & MenuPropsOfRoute; /** menu list */ type MenuList = Common.PaginatingQueryRecord; type MenuTree = { id: number; label: string; pId: number; children?: MenuTree[]; }; } }