refactor: 重构项目结构 - enums/config/types/plugins

- 重构 enums: 按业务域合并为 5 个文件
- 创建 config: storage.ts, vxe-table.ts
- 删除 plugins,功能迁移到 main.ts
- 创建完整 types 结构
- 新增 utils: validators, websocket, register-components
- 创建 router/guards/permission.ts
- 更新配置文件
This commit is contained in:
Ray.Hao
2025-12-12 13:59:40 +08:00
parent add4237b1f
commit 9fb1942619
45 changed files with 836 additions and 834 deletions

5
src/config/index.ts Normal file
View File

@@ -0,0 +1,5 @@
/**
* 配置统一导出
*/
export * from "./storage";

60
src/config/storage.ts Normal file
View File

@@ -0,0 +1,60 @@
/**
* 本地存储键名配置
*
* @description
* 统一管理 localStorage/sessionStorage 的键名
* 命名规范:{prefix}:{namespace}:{key}
*/
export const APP_PREFIX = "vea";
/**
* 存储键名常量
*/
export const STORAGE_KEYS = {
// ===== 认证相关 =====
ACCESS_TOKEN: `${APP_PREFIX}:auth:access_token`,
REFRESH_TOKEN: `${APP_PREFIX}:auth:refresh_token`,
REMEMBER_ME: `${APP_PREFIX}:auth:remember_me`,
// ===== 租户相关 =====
TENANT_ID: `${APP_PREFIX}:tenant:id`,
TENANT_INFO: `${APP_PREFIX}:tenant:info`,
// ===== 系统相关 =====
DICT_CACHE: `${APP_PREFIX}:system:dict_cache`,
// ===== UI 设置 =====
SHOW_TAGS_VIEW: `${APP_PREFIX}:ui:show_tags_view`,
SHOW_APP_LOGO: `${APP_PREFIX}:ui:show_app_logo`,
SHOW_WATERMARK: `${APP_PREFIX}:ui:show_watermark`,
ENABLE_AI_ASSISTANT: `${APP_PREFIX}:ui:enable_ai_assistant`,
LAYOUT: `${APP_PREFIX}:ui:layout`,
SIDEBAR_COLOR_SCHEME: `${APP_PREFIX}:ui:sidebar_color_scheme`,
THEME: `${APP_PREFIX}:ui:theme`,
THEME_COLOR: `${APP_PREFIX}:ui:theme_color`,
// ===== 应用状态 =====
DEVICE: `${APP_PREFIX}:app:device`,
SIZE: `${APP_PREFIX}:app:size`,
LANGUAGE: `${APP_PREFIX}:app:language`,
SIDEBAR_STATUS: `${APP_PREFIX}:app:sidebar_status`,
ACTIVE_TOP_MENU_PATH: `${APP_PREFIX}:app:active_top_menu_path`,
} as const;
/**
* 认证相关键名(便于批量操作)
*/
export const AUTH_KEYS = {
ACCESS_TOKEN: STORAGE_KEYS.ACCESS_TOKEN,
REFRESH_TOKEN: STORAGE_KEYS.REFRESH_TOKEN,
REMEMBER_ME: STORAGE_KEYS.REMEMBER_ME,
} as const;
/**
* 租户相关键名(便于批量操作)
*/
export const TENANT_KEYS = {
TENANT_ID: STORAGE_KEYS.TENANT_ID,
TENANT_INFO: STORAGE_KEYS.TENANT_INFO,
} as const;

65
src/config/vxe-table.ts Normal file
View File

@@ -0,0 +1,65 @@
/**
* VxeTable 全局配置
*
* @description
* VxeTable 是一个基于 Vue 的 PC 端表格组件
* @see https://vxetable.cn/v4.6/#/table/start/install
*/
import VXETable from "vxe-table";
/**
* 配置 VxeTable 全局参数
*/
export function configureVxeTable() {
VXETable.setConfig({
size: "medium",
zIndex: 9999,
version: 0,
loadingText: null,
table: {
showHeader: true,
showOverflow: "tooltip",
showHeaderOverflow: "tooltip",
autoResize: true,
border: "inner",
emptyText: "暂无数据",
rowConfig: {
isHover: true,
isCurrent: true,
keyField: "_VXE_ID",
},
columnConfig: {
resizable: false,
},
align: "center",
headerAlign: "center",
},
pager: {
perfect: false,
pageSize: 10,
pagerCount: 7,
pageSizes: [10, 20, 50],
layouts: [
"Total",
"PrevJump",
"PrevPage",
"Number",
"NextPage",
"NextJump",
"Sizes",
"FullJump",
],
},
modal: {
minWidth: 500,
minHeight: 400,
lockView: true,
mask: true,
dblclickZoom: false,
showTitleOverflow: true,
transfer: true,
draggable: false,
},
});
}