docs: complete project code annotations
This commit is contained in:
Vendored
+21
-35
@@ -1,98 +1,84 @@
|
||||
import type { AxiosRequestConfig } from 'axios';
|
||||
|
||||
/**
|
||||
* Axios请求配置
|
||||
*/
|
||||
/** 单次请求可覆盖的项目级 Axios 行为选项。 */
|
||||
export interface RequestOptions {
|
||||
/**
|
||||
* 接口地址
|
||||
*
|
||||
* 例: http://www.baidu.com/api
|
||||
* 完整 API 主机地址,用于拼接请求 URL。
|
||||
*/
|
||||
apiUrl?: string;
|
||||
/**
|
||||
* 是否自动添加接口前缀
|
||||
*
|
||||
* 例: http://www.baidu.com/api
|
||||
* urlPrefix: 'api'
|
||||
* 是否在请求路径前追加 `urlPrefix`。
|
||||
*/
|
||||
isJoinPrefix?: boolean;
|
||||
/**
|
||||
* 接口前缀
|
||||
* 追加到接口路径前的统一前缀。
|
||||
*/
|
||||
urlPrefix?: string;
|
||||
/**
|
||||
* POST请求的时候添加参数到Url中
|
||||
* 是否将非 GET 请求的参数同时拼入 URL 查询字符串。
|
||||
*/
|
||||
joinParamsToUrl?: boolean;
|
||||
/**
|
||||
* 格式化提交参数时间
|
||||
* 是否递归格式化请求参数中的日期对象和字符串。
|
||||
*/
|
||||
formatDate?: boolean;
|
||||
/**
|
||||
* 是否需要对响应数据进行处理
|
||||
* 是否解包并校验后端统一响应结构。
|
||||
*/
|
||||
isTransformResponse?: boolean;
|
||||
/**
|
||||
* 是否返回原生响应头
|
||||
*
|
||||
* 例: 需要获取响应头时使用该属性
|
||||
* 是否返回完整 Axios 响应对象,以便访问响应头等元数据。
|
||||
*/
|
||||
isReturnNativeResponse?: boolean;
|
||||
/**
|
||||
* 是否忽略请求取消令牌
|
||||
*
|
||||
* 如果启用,则重复请求时不进行处理
|
||||
*
|
||||
* 如果禁用,则重复请求时会取消当前请求
|
||||
* 是否忽略重复请求取消机制;关闭时新请求会取消相同方法和 URL 的旧请求。
|
||||
*/
|
||||
ignoreCancelToken?: boolean;
|
||||
/**
|
||||
* 自动对请求添加时间戳参数
|
||||
* 是否为请求追加时间戳查询参数以规避缓存。
|
||||
*/
|
||||
joinTime?: boolean;
|
||||
/**
|
||||
* 是否携带Token
|
||||
* 是否允许请求拦截器添加用户令牌。
|
||||
*/
|
||||
withToken?: boolean;
|
||||
/**
|
||||
* 重试配置
|
||||
* 请求失败后的自动重试策略。
|
||||
*/
|
||||
retry?: {
|
||||
/**
|
||||
* 重试次数
|
||||
* 初始请求失败后最多追加的重试次数。
|
||||
*/
|
||||
count: number;
|
||||
/**
|
||||
* 隔多久重试
|
||||
*
|
||||
* 单位: 毫秒
|
||||
* 每次重试前等待的时长,单位为毫秒。
|
||||
*/
|
||||
delay: number;
|
||||
};
|
||||
/**
|
||||
* 接口级节流
|
||||
*
|
||||
* 单位: 毫秒
|
||||
* 对该请求启用节流时的配置;延迟单位为毫秒。
|
||||
*/
|
||||
throttle?: {
|
||||
delay: number;
|
||||
};
|
||||
/**
|
||||
* 接口级防抖
|
||||
*
|
||||
* 单位: 毫秒
|
||||
* 对该请求启用防抖时的配置;延迟单位为毫秒。
|
||||
*/
|
||||
debounce?: {
|
||||
delay: number;
|
||||
};
|
||||
}
|
||||
|
||||
/** 后端统一响应体的业务状态码与数据载荷。 */
|
||||
export interface Result<T = any> {
|
||||
/** 后端定义的业务处理结果码。 */
|
||||
code: number;
|
||||
/** 当前接口返回的数据载荷。 */
|
||||
data: T;
|
||||
}
|
||||
|
||||
/** 支持记录自动重试次数的 Axios 请求配置。 */
|
||||
export interface AxiosRequestConfigRetry extends AxiosRequestConfig {
|
||||
/** 已执行的重试次数,由请求错误拦截器递增。 */
|
||||
retryCount?: number;
|
||||
}
|
||||
|
||||
Vendored
+6
@@ -1,9 +1,15 @@
|
||||
/** Vite 注入的项目自定义环境变量类型。 */
|
||||
interface ImportMetaEnv {
|
||||
/** 是否使用本地开发代理转发 API 请求。 */
|
||||
readonly VITE_IS_REQUEST_PROXY: string;
|
||||
/** 直连 API 服务时使用的主机地址。 */
|
||||
readonly VITE_API_URL: string;
|
||||
/** 追加到 API 主机与接口路径之间的公共前缀。 */
|
||||
readonly VITE_API_URL_PREFIX: string;
|
||||
}
|
||||
|
||||
/** 扩展 `import.meta`,使代码可安全访问 Vite 环境变量。 */
|
||||
interface ImportMeta {
|
||||
/** 当前运行模式和自定义项目环境变量。 */
|
||||
readonly env: ImportMetaEnv;
|
||||
}
|
||||
|
||||
Vendored
+7
-2
@@ -1,18 +1,23 @@
|
||||
// 通用声明
|
||||
// 为项目中无法由标准 TypeScript 模块自动推导的静态资源补充声明。
|
||||
|
||||
// Vue
|
||||
/** 让 TypeScript 将导入的 Vue 单文件组件识别为 Vue 组件。 */
|
||||
declare module '*.vue' {
|
||||
import type { DefineComponent } from 'vue';
|
||||
|
||||
/** 单文件组件编译后的默认导出。 */
|
||||
const component: DefineComponent<object, object, any>;
|
||||
export default component;
|
||||
}
|
||||
|
||||
/** 可由单个类名、多个类名或由上述类型嵌套组成的 class 绑定值。 */
|
||||
declare type ClassName = { [className: string]: any } | ClassName[] | string;
|
||||
|
||||
/** 允许将 SVG 静态资源作为内容字符串导入。 */
|
||||
declare module '*.svg' {
|
||||
/** SVG 文件的资源内容。 */
|
||||
const CONTENT: string;
|
||||
export default CONTENT;
|
||||
}
|
||||
|
||||
/** 通用字符串键值记录类型,默认允许任意值。 */
|
||||
declare type Recordable<T = any> = Record<string, T>;
|
||||
|
||||
Vendored
+33
@@ -6,52 +6,85 @@ import type { LocalizedTitle } from '@/locales';
|
||||
|
||||
export interface MenuRoute {
|
||||
// TODO: menuitem 组件实际支持 string 类型但是类型错误,暂时使用 any 类型避免打包错误待组件类型修复
|
||||
/** 菜单对应的路由路径,用于导航跳转和当前项匹配。 */
|
||||
path: any;
|
||||
/** 多语言标题对象,如 { zh_CN: '仪表盘', en_US: 'Dashboard' } */
|
||||
title?: LocalizedTitle;
|
||||
/** 路由名称,用于唯一识别菜单和命名路由跳转。 */
|
||||
name?: string;
|
||||
/** 菜单图标名称或图标组件实例。 */
|
||||
icon?: string | Component | FunctionalComponent | DefineComponent;
|
||||
/** 点击菜单后需要跳转到的重定向地址。 */
|
||||
redirect?: string;
|
||||
/** 当前菜单下的子菜单及子路由。 */
|
||||
children: MenuRoute[];
|
||||
/** 路由扩展元数据,例如图标、标题和权限标记。 */
|
||||
meta: RouteMeta;
|
||||
}
|
||||
|
||||
/** 应用支持的界面明暗模式。 */
|
||||
export type ModeType = 'dark' | 'light';
|
||||
|
||||
/** 当前登录用户的展示资料和角色集合。 */
|
||||
export interface UserInfo {
|
||||
/** 用于头像菜单等位置展示的用户名称。 */
|
||||
name: string;
|
||||
/** 用于前端菜单授权判断的角色或权限标识。 */
|
||||
roles: string[];
|
||||
}
|
||||
|
||||
/** 通知中心单条消息的展示和状态字段。 */
|
||||
export interface NotificationItem {
|
||||
/** 消息唯一标识,用于列表更新和删除。 */
|
||||
id: string;
|
||||
/** 消息正文或摘要。 */
|
||||
content: string;
|
||||
/** 消息所属类别。 */
|
||||
type: string;
|
||||
/** 消息是否仍未读。 */
|
||||
status: boolean;
|
||||
/** 消息是否已收藏。 */
|
||||
collected: boolean;
|
||||
/** 消息展示时间。 */
|
||||
date: string;
|
||||
/** 消息优先级,用于选择视觉标签主题。 */
|
||||
quality: string;
|
||||
}
|
||||
|
||||
/** 标签路由栏中使用的路由信息及操作上下文。 */
|
||||
export interface TRouterInfo {
|
||||
/** 标签对应的路由路径。 */
|
||||
path: string;
|
||||
/** 跳转时保留的查询参数。 */
|
||||
query?: LocationQueryRaw;
|
||||
/** 标签在当前标签列表中的索引,供关闭和刷新操作使用。 */
|
||||
routeIdx?: number;
|
||||
/** 多语言标题对象,如 { zh_CN: '仪表盘', en_US: 'Dashboard' } */
|
||||
title?: LocalizedTitle;
|
||||
/** 路由名称,用于匹配当前页或执行命名路由操作。 */
|
||||
name?: RouteRecordName;
|
||||
/** 是否将此页面实例保留在 keep-alive 缓存中。 */
|
||||
isAlive?: boolean;
|
||||
/** 是否为不可关闭的首页标签。 */
|
||||
isHome?: boolean;
|
||||
/** 路由附加元数据,例如 keepAlive 配置。 */
|
||||
meta?: any;
|
||||
}
|
||||
|
||||
/** 标签路由 store 的状态结构。 */
|
||||
export interface TTabRouterType {
|
||||
/** 是否正在刷新当前标签页面。 */
|
||||
isRefreshing: boolean;
|
||||
/** 当前打开的标签路由列表。 */
|
||||
tabRouterList: Array<TRouterInfo>;
|
||||
}
|
||||
|
||||
/** 标签菜单移除事件提供的目标值、索引和原始鼠标事件。 */
|
||||
export interface TTabRemoveOptions {
|
||||
/** 触发移除操作的菜单项标识。 */
|
||||
value: TabValue;
|
||||
/** 目标菜单项在列表中的位置。 */
|
||||
index: number;
|
||||
/** 触发当前操作的浏览器鼠标事件。 */
|
||||
e: MouseEvent;
|
||||
}
|
||||
|
||||
Vendored
+13
-1
@@ -5,18 +5,30 @@ import type { Component, DefineComponent, FunctionalComponent } from 'vue';
|
||||
import type { LocalizedTitle } from '@/locales';
|
||||
|
||||
export {};
|
||||
/** 为 Vue Router 的元数据增加项目导航、布局和缓存字段。 */
|
||||
declare module 'vue-router' {
|
||||
interface RouteMeta {
|
||||
/** 当前路由在不同语言下展示的菜单标题。 */
|
||||
title?: LocalizedTitle;
|
||||
/** 菜单图标名称或自定义图标组件。 */
|
||||
icon?: string | Component | FunctionalComponent | DefineComponent;
|
||||
/** 是否默认展开当前菜单分组。 */
|
||||
expanded?: boolean;
|
||||
/** 同级菜单中的排序权重,数值越小通常越靠前。 */
|
||||
orderNo?: number;
|
||||
/** 是否从导航菜单中隐藏当前路由。 */
|
||||
hidden?: boolean;
|
||||
/** 是否在面包屑导航中隐藏当前路由。 */
|
||||
hiddenBreadcrumb?: boolean;
|
||||
/** 是否将当前路由作为单独菜单项展示。 */
|
||||
single?: boolean;
|
||||
/** 是否缓存当前页面组件实例。 */
|
||||
keepAlive?: boolean;
|
||||
/** iframe 页面需要加载的外部地址。 */
|
||||
frameSrc?: string;
|
||||
/** 是否将 iframe 页面作为空白布局处理。 */
|
||||
frameBlank?: boolean;
|
||||
// roleCode?: string; // 前端 roles 控制菜单权限
|
||||
/** 前端角色权限模式下匹配用户角色的权限编码。 */
|
||||
// roleCode?: string;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user