index.ts 2.14 KB
/**
 * 与后端 parking-cloud 的接口契约类型
 *
 * 契约要点(务必与后端 parking-framework 保持一致):
 *  - 地址前缀:管理后台 /admin-api,移动端 /app-api
 *  - 认证头:Authorization: Bearer <token>
 *  - 返回:CommonResult{code,msg,data},code === 0 表示成功
 *  - 业务错误码:0~999 全局(401 未登录、403 无权限、404 不存在、500 服务器异常),≥1000000000 业务错误
 */

/** 统一返回结构 */
export interface CommonResult<T = any> {
  code: number
  msg: string
  data: T
}

/** 分页请求基类 */
export interface PageParam {
  pageNo: number
  pageSize: number
}

/** 分页返回结构 */
export interface PageResult<T> {
  list: T[]
  total: number
}

/** 登录请求 */
export interface LoginReqVO {
  username: string
  password: string
  captchaCode?: string
  captchaUuid?: string
}

/** 登录返回 */
export interface LoginRespVO {
  accessToken: string
  refreshToken: string
  userId: number
  userType: number
  expiresTime: number
}

/** 图形验证码信息 */
export interface CaptchaInfoRespVO {
  captchaEnable: boolean
  captchaImage?: string
  captchaUuid?: string
}

/** 当前用户信息 */
export interface UserInfoVO {
  id: number
  username: string
  nickname: string
  orgId?: number
  deptId?: number
  avatar?: string
}

/** 后端下发的菜单(驱动前端动态路由) */
export interface MenuVO {
  id: number
  parentId?: number | null
  name: string
  path: string
  /** 组件路径(相对 src/views),如 system/user/index;目录为 null */
  component?: string | null
  icon?: string
  visible: boolean
  sort?: number
  children?: MenuVO[]
}

/** get-permission-info 返回 */
export interface PermissionInfoVO {
  user: UserInfoVO
  roles: string[]
  permissions: string[]
  menus: MenuVO[]
}

/** 前端内部使用的路由节点 */
export interface AppRouteRecordRaw extends Record<string, any> {
  path: string
  name?: string
  component?: any
  meta?: {
    title?: string
    icon?: string
    hidden?: boolean
    noCache?: boolean
    affix?: boolean
    alwaysShow?: boolean
    [key: string]: any
  }
  children?: AppRouteRecordRaw[]
}