first commit

This commit is contained in:
2026-10-25 23:14:53 +08:00
commit 4e9f3dcb13
25 changed files with 932 additions and 0 deletions
+68
View File
@@ -0,0 +1,68 @@
---
description: 项目 overview —— portal-mini-front 后台管理系统的技术栈、目录结构与运行方式
globs: ["**/*"]
alwaysApply: true
---
# 项目概述
## 产品定位
`portal-mini-front` 是一个**后台管理系统前端**(Portal 管理后台),面向内部运营/管理员,核心场景是:登录鉴权 → 菜单/路由权限 → 数据列表(查询/分页/筛选)→ 增删改查表单 → 数据看板。
## 技术栈(固定选型,不得随意替换)
| 领域 | 选型 | 说明 |
| --- | --- | --- |
| 框架 | Vue 3.4+ | 仅使用 Composition API |
| 语言 | TypeScript 5.x | 严格模式,禁止 `any` |
| 构建 | Vite 5+ | |
| UI 库 | Element Plus | 主题色、组件尺寸统一在应用入口配置 |
| 脚手架基线 | `vue3-element-admin` | 目录结构、请求封装、权限方案以该模板为基准 |
| 状态管理 | Pinia | 使用 setup store 语法 |
| 路由 | Vue Router 4 | 动态路由 + 权限守卫 |
| HTTP | Axios | 统一封装于 `src/utils/request.ts` |
| 图标 | `@element-plus/icons-vue` + 本地 svg sprite | |
| 工具库 | VueUse(`@vueuse/core`) | 优先复用,不重复造轮子 |
| 代码规范 | ESLint + Prettier + husky/lint-staged | 提交前自动校验 |
> 引入任何新依赖前必须说明理由;能用 Element Plus / VueUse / 现有 utils 解决的,不允许加新库。
## 目录结构约定
```
src/
├── api/ # 接口层,按业务模块划分,不得在组件内直接写请求
│ └── {module}/
│ └── index.ts # 导出 {Module}API 对象
├── components/ # 跨模块复用的全局组件(自动注册)
├── composables/ # 跨模块复用的组合式函数 useXxx
├── directives/ # 自定义指令,如 v-hasPerm
├── enums/ # 枚举与常量字典
├── layouts/ # 布局骨架(侧边栏/顶栏/标签栏/内容区)
├── router/ # 静态路由 + 动态路由 + 守卫
├── store/modules/ # Pinia 模块
├── styles/ # 全局样式、变量、Element Plus 覆盖
├── types/ # 全局与模块类型声明(*.d.ts 或 *.ts)
├── utils/ # request / storage / 通用工具
└── views/ # 页面,按业务模块划分
└── {module}/
├── index.vue # 列表主页(必须)
└── components/ # 仅该模块使用的子组件(表单弹窗等)
```
命名规则:
- 目录、文件名统一 **kebab-case**;Vue 组件文件用 **PascalCase.vue** 或目录 + `index.vue`。
- 页面路由 path 与 `views/{module}` 目录保持一致。
## 常用命令
```bash
pnpm dev # 本地开发
pnpm build:prod # 生产构建
pnpm preview # 预览构建产物
pnpm lint # ESLint 检查并修复
pnpm type-check # vue-tsc 类型检查
```
## 环境
- 环境变量文件:`.env.development` / `.env.production`,变量必须以 `VITE_` 开头。
- 接口地址统一走 `VITE_APP_BASE_API`,本地通过 Vite `server.proxy` 解决跨域,**不允许在代码里硬编码域名或端口**。