You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

261 lines
7.2 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 前端技术栈说明文档
本文档详细说明了 `czemc-budget-execution-frontend` 项目使用的技术栈。
## 📦 核心依赖
### 1. 核心框架
#### Vue 3.4.21
- **类型**: 核心框架
- **版本**: ^3.4.21
- **用途**: 渐进式 JavaScript 框架,项目的基础框架
- **特性**:
- 使用 Composition API组合式 API
- 支持 TypeScript项目中使用 JavaScript
- 响应式数据绑定
- 组件化开发
#### Vue Router 4.3.0
- **类型**: 路由管理
- **版本**: ^4.3.0
- **用途**: Vue.js 官方路由管理器
- **功能**:
- 单页面应用路由配置
- 路由守卫(登录验证)
- 动态路由加载
### 2. 状态管理
#### Pinia 2.1.7
- **类型**: 状态管理库
- **版本**: ^2.1.7
- **用途**: Vue 3 官方推荐的状态管理库(替代 Vuex
- **使用场景**:
- 用户信息管理(`src/store/user.js`
- 登录状态管理
- Token 管理
- **特性**:
- TypeScript 支持
- DevTools 支持
- 模块化设计
### 3. UI 组件库
#### Element Plus 2.6.3
- **类型**: UI 组件库
- **版本**: ^2.6.3
- **用途**: 基于 Vue 3 的企业级 UI 组件库
- **配置**:
- 使用中文语言包(`zh-cn`
- 全局注册所有图标组件
- **主要组件**:
- 表格、表单、对话框
- 菜单、导航、布局
- 按钮、输入框等基础组件
#### Element Plus Icons Vue 2.3.1
- **类型**: 图标库
- **版本**: ^2.3.1
- **用途**: Element Plus 官方图标库
- **使用**: 全局注册所有图标,可在组件中直接使用
### 4. 构建工具
#### Vite 5.1.6
- **类型**: 构建工具
- **版本**: ^5.1.6
- **用途**: 下一代前端构建工具
- **特性**:
- 快速的开发服务器启动
- 热模块替换HMR
- 优化的生产构建
- 原生 ES 模块支持
#### @vitejs/plugin-vue 5.0.4
- **类型**: Vite 插件
- **版本**: ^5.0.4
- **用途**: Vue 3 单文件组件SFC支持插件
### 5. 工具库
#### js-cookie 3.0.5
- **类型**: Cookie 操作库
- **版本**: ^3.0.5
- **用途**: 用于管理浏览器 Cookie
- **使用场景**: Token 存储和管理(`src/utils/auth.js`
#### mermaid 11.12.2
- **类型**: 流程图/图表库
- **版本**: ^11.12.2
- **用途**: 用于渲染流程图和思维导图
- **使用场景**:
- 支付类别可视化(`src/views/payment/CreatePayment.vue`
- 间接支付流程展示(`src/views/payment/IndirectPayment.vue`
- **功能**:
- 将树形数据转换为 Mermaid 语法
- 渲染为 SVG 图表
- 支持节点交互和选择
#### vuedraggable 4.1.0
- **类型**: 拖拽组件库
- **版本**: ^4.1.0
- **用途**: 基于 Sortable.js 的 Vue 3 拖拽组件
- **使用场景**: 支付类别排序(`src/views/settings/PaymentCategory.vue`
## 🛠️ 开发工具和配置
### 环境变量管理
- 支持多环境配置development、staging、production
- 使用 `.env` 文件进行环境变量配置
- 所有环境变量必须以 `VITE_` 开头
### 代理配置
- 开发环境使用 Vite 代理转发 API 请求
- 支持配置代理目标和 Host 头
- 自动处理跨域问题
### 构建配置
- 支持多环境构建(`build:dev`、`build:staging`、`build:prod`
- 不同环境输出到不同目录
- 支持 Source Map 配置
## 📁 项目架构
### 目录结构
```
src/
├── config/ # 配置管理
│ ├── index.js # 统一配置管理模块
│ └── settings.js # 配置设置
├── layout/ # 布局组件
│ └── MainLayout.vue # 主布局组件
├── router/ # 路由配置
│ └── index.js # 路由定义
├── store/ # 状态管理
│ └── user.js # 用户状态管理
├── utils/ # 工具类
│ ├── api.js # API 接口定义
│ ├── auth.js # 认证工具Token 管理)
│ └── request.js # HTTP 请求封装
├── views/ # 页面组件
│ ├── Login.vue # 登录页面
│ ├── Dashboard.vue # 工作台
│ ├── BudgetList.vue # 预算列表
│ ├── ExecutionList.vue # 执行列表
│ ├── Report.vue # 报表统计
│ ├── funds/ # 资金管理模块
│ ├── payment/ # 支付管理模块
│ ├── pre-approval/ # 预审批模块
│ └── settings/ # 设置模块
├── mock/ # Mock 数据
│ └── index.js
├── App.vue # 根组件
└── main.js # 入口文件
```
## 🔧 技术特点
### 1. API 请求封装
- 使用原生 `fetch` API 封装请求工具
- 统一的错误处理机制
- 自动添加 Token 认证
- 支持请求/响应拦截
- 业务状态码检查code !== 0 时抛出错误)
### 2. 认证机制
- 使用 Bearer Token 认证
- Token 存储在 Cookie 中
- 路由守卫进行登录验证
- Pinia Store 管理用户状态
### 3. 国际化
- Element Plus 使用中文语言包
- Day.js 使用中文语言环境
### 4. 响应式设计
- 使用 Element Plus 的响应式组件
- 支持桌面端和移动端
## 📊 技术栈总结
| 类别 | 技术 | 版本 | 用途 |
|------|------|------|------|
| **核心框架** | Vue | 3.4.21 | 基础框架 |
| **路由** | Vue Router | 4.3.0 | 路由管理 |
| **状态管理** | Pinia | 2.1.7 | 状态管理 |
| **UI 组件** | Element Plus | 2.6.3 | UI 组件库 |
| **图标** | Element Plus Icons | 2.3.1 | 图标库 |
| **构建工具** | Vite | 5.1.6 | 构建工具 |
| **图表** | Mermaid | 11.12.2 | 流程图/图表 |
| **拖拽** | vuedraggable | 4.1.0 | 拖拽功能 |
| **工具** | js-cookie | 3.0.5 | Cookie 操作 |
## 🎯 技术选型说明
### 为什么选择 Vue 3
- 更好的性能Composition API
- 更小的包体积
- 更好的 TypeScript 支持
- 活跃的社区和生态
### 为什么选择 Pinia 而不是 Vuex
- Vue 3 官方推荐
- 更简洁的 API
- 更好的 TypeScript 支持
- 支持 Vue DevTools
### 为什么选择 Element Plus
- 与 Vue 3 完美集成
- 丰富的组件库
- 良好的文档和社区支持
- 适合企业级应用
### 为什么选择 Vite
- 极快的开发服务器启动速度
- 快速的热更新
- 优化的生产构建
- 原生 ES 模块支持
## 📝 开发规范
### 代码风格
- 使用 Composition API组合式 API
- 单文件组件SFC格式
- 使用 `<script setup>` 语法糖
### 命名规范
- 组件使用 PascalCase
- 文件使用 PascalCase组件或 camelCase工具类
- 变量和函数使用 camelCase
### 导入规范
- 使用 `@/` 别名代替相对路径
- 按类别组织导入Vue、组件、工具、样式
## 🔄 更新和维护
### 依赖更新
定期检查并更新依赖版本:
```bash
npm outdated
npm update
```
### 版本锁定
项目使用 `package-lock.json` 锁定依赖版本,确保团队环境一致性。
## 📚 相关文档
- [Vue 3 官方文档](https://cn.vuejs.org/)
- [Element Plus 官方文档](https://element-plus.org/zh-CN/)
- [Vite 官方文档](https://cn.vitejs.dev/)
- [Pinia 官方文档](https://pinia.vuejs.org/zh/)
- [Vue Router 官方文档](https://router.vuejs.org/zh/)
---
**最后更新时间**: 2024年
**维护者**: 开发团队