恋爱键盘后台初始化

This commit is contained in:
2026-02-10 15:20:30 +08:00
commit b3335b4b6e
1766 changed files with 263928 additions and 0 deletions

125
CLAUDE.md Normal file
View File

@@ -0,0 +1,125 @@
# CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
## 项目概述
基于 [yudao-ui-admin-vue3](https://gitee.com/yudaocode/yudao-ui-admin-vue3) 的中后台管理前端项目(名为 keyLove采用 Vue 3 + Vite + Element Plus + TypeScript 技术栈。前端对接芋道后端 Java 服务Spring Boot / Spring Cloud通过 RESTful API (`/admin-api`) 通信。
## 常用命令
```bash
# 安装依赖(强制使用 pnpm
pnpm install
# 本地开发(使用 .env.local 配置)
pnpm dev
# 连接远程开发环境后端
pnpm dev-server
# TypeScript 类型检查
pnpm ts:check
# 构建
pnpm build:local # 本地构建
pnpm build:dev # 开发环境
pnpm build:prod # 生产环境
# 代码规范
pnpm lint:eslint # ESLint 检查并修复
pnpm lint:format # Prettier 格式化
pnpm lint:style # Stylelint 样式检查
```
要求Node.js >= 16.18.0pnpm >= 8.6.0。
## 架构概览
### 入口与初始化
`src/main.ts` 按序初始化i18n → Pinia Store → 全局组件 → Element Plus → FormCreate → Router → 指令(权限、焦点)→ WangEditor 插件 → 挂载。
### 路由与权限系统
- **静态路由**`src/router/modules/remaining.ts` 定义登录、重定向、404 等固定页面
- **动态路由**:后端返回菜单数据,`src/store/modules/permission.ts` 中的 `generateRoutes()` 将其转换为路由并通过 `router.addRoute()` 动态注册
- **路由守卫**`src/permission.ts` 实现 beforeEach 守卫,处理 token 校验、用户信息加载、动态路由注入
- **组件动态加载**`src/utils/routerHelper.ts` 使用 `import.meta.glob('../views/**/*.{vue,tsx}')` 按路径自动匹配视图组件
- **权限指令**`v-hasPermi``v-hasRole``src/directives/permission/`)用于按钮级权限控制
### HTTP 请求层
- **封装位置**`src/config/axios/` 目录
- `config.ts`基础配置baseURL = `VITE_BASE_URL + VITE_API_URL`
- `service.ts`Axios 实例包含请求拦截token 注入、租户 ID 头、API 加密和响应拦截401 无感刷新 token、错误码统一处理
- `index.ts`:导出 `request` 对象,提供 `get/post/put/delete/download/upload` 方法
- **调用方式**`import request from '@/config/axios'`,然后 `request.get({ url, params })` / `request.post({ url, data })`
### API 模块约定
API 文件按业务域组织在 `src/api/{模块}/{子模块}/index.ts`,每个文件:
1. 定义 TypeScript VO 接口(如 `TenantVO`)和请求参数接口
2. 导出具名函数(如 `getTenantPage``createTenant``updateTenant``deleteTenant`
3. 使用 `request.get/post/put/delete` 调用后端接口
主要业务域:`system`(系统管理)、`infra`(基础设施)、`bpm`(工作流)、`crm``erp``mall`(商城)、`ai``iot``pay`(支付)、`mp`(微信公众号)
### 状态管理
Pinia Store 位于 `src/store/modules/`,使用 `pinia-plugin-persistedstate` 持久化:
- `user.ts`:用户信息、登录状态
- `permission.ts`:动态路由、菜单
- `dict.ts`:数据字典缓存
- `app.ts`:应用全局状态(布局、主题等)
- `tagsView.ts`:标签页导航
- `locale.ts`:语言设置
每个 Store 导出 `useXxxStoreWithOut()` 函数,用于在 setup 外部获取 Store 实例。
### 视图页面约定
视图文件在 `src/views/{模块}/` 下,典型的 CRUD 页面结构:
- `index.vue`:列表页,包含搜索表单 + 数据表格 + 分页,使用 `ContentWrap` 组件包裹
- `{Entity}Form.vue`:新增/编辑表单弹窗
- 使用 `<Icon icon="ep:xxx" />` 全局图标组件Iconify
- 使用 `v-hasPermi="['module:entity:action']"` 控制按钮权限
- 使用 `getIntDictOptions(DICT_TYPE.XXX)` 获取字典数据渲染下拉框
### 环境变量
- `.env`:通用配置(应用标题、端口、租户开关、验证码开关等)
- `.env.local`:本地开发(连接本地后端,`VITE_BASE_URL` 指向本地服务)
- `.env.dev`:远程开发环境
- `.env.prod`:生产环境
关键变量:
- `VITE_BASE_URL`:后端 API 根地址
- `VITE_API_URL`API 路径前缀(默认 `/admin-api`
- `VITE_APP_TENANT_ENABLE`:多租户开关
- `VITE_APP_CAPTCHA_ENABLE`:验证码开关
### 核心工具
- `src/utils/auth.ts`Token 存取AccessToken / RefreshToken / TenantId
- `src/utils/dict.ts`:字典工具函数(`getDictOptions``getIntDictOptions`
- `src/utils/routerHelper.ts`:路由生成与组件动态加载
- `src/utils/formatter.ts`:数据格式化
- `src/utils/download.ts`:文件下载
- `src/utils/tree.ts`:树形数据处理
- `src/hooks/web/useTable.ts`:表格数据加载 Hook
- `src/hooks/web/useCrudSchemas.ts`CRUD Schema 配置 Hook
### 样式系统
- UnoCSS 原子化 CSS可在模板中直接使用如 `class="!w-240px mb-15px"`
- SCSS 变量:`src/styles/variables.scss`(通过 Vite 全局注入)
- 全局样式入口:`src/styles/index.scss`
### 国际化
`src/locales/``zh-CN.ts``en.ts`,通过 `vue-i18n` 实现。组件中使用 `useI18n()``t()` 函数。
### 路径别名
`@/` 映射到 `src/`(在 `vite.config.ts``tsconfig.json` 中均配置)。