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.

370 lines
8.8 KiB

7 months ago
# 技术栈文档
## 项目概述
**项目名称**内控管理系统cz-hjjc-ht
**项目版本**4.4.0
**基础模板**vue-admin-template
**开发端口**9530
## 核心技术栈
### 前端框架
- **Vue.js**: `2.6.10`
- 渐进式 JavaScript 框架
- 使用 Options API
- 支持 Composition API通过 @vue/composition-api
### UI 组件库
- **Element UI**: `2.13.2`
- 基于 Vue 2.0 的桌面端组件库
- 主要 UI 组件来源
- 提供完整的组件生态
- **View Design (iView)**: `4.7.0`
- 企业级 UI 组件库
- 作为 Element UI 的补充组件
### 状态管理
- **Vuex**: `3.1.0`
- 集中式状态管理
- 支持模块化 store 结构
- 主要模块app、permission、settings、user
- **vuex-persistedstate**: `^4.1.0`
- Vuex 状态持久化插件
- 将状态保存到 localStorage
### 路由管理
- **Vue Router**: `3.0.6`
- 官方路由管理器
- 支持动态路由、权限控制
- 路由懒加载优化
### HTTP 客户端
- **Axios**: `0.18.1`
- 基于 Promise 的 HTTP 库
- 支持请求/响应拦截器
- 统一错误处理和加载状态管理
- Bearer Token 认证
### 构建工具
- **Vue CLI**: `4.4.4`
- 官方脚手架工具
- 基于 Webpack 的构建配置
- 开发服务器、热更新支持
### CSS 预处理器
- **Less**: `^3.13.1`
- CSS 预处理器
- less-loader `^5.0.0`
- **Sass/SCSS**: `1.26.8`
- CSS 预处理器
- sass-loader `8.0.2`
### 图表与可视化
- **ECharts**: `^5.0.0`
- 数据可视化图表库
- 用于仪表盘和报表展示
- 支持多种图表类型
### 文档处理
- **@vue-office/docx**: `^1.6.2`
- Word 文档预览组件
- **@vue-office/excel**: `^1.7.11`
- Excel 文档预览组件
- **@vue-office/pdf**: `^2.0.2`
- PDF 文档预览组件
- **docx-preview**: `^0.3.2`
- Word 文档预览库
### 富文本编辑器
- **wangeditor**: `^4.7.12`
- 轻量级富文本编辑器
- 支持 Markdown
### 工具库
- **moment**: `^2.29.4`
- 日期时间处理库
- 通过 `Vue.prototype.$moment` 全局使用
- **js-cookie**: `2.2.0`
- Cookie 操作工具
- 用于 Token 存储
- **path-to-regexp**: `2.4.0`
- 路径匹配工具
- 路由匹配支持
- **nprogress**: `0.2.0`
- 页面加载进度条
- 提升用户体验
- **normalize.css**: `7.0.0`
- CSS 重置样式
- 统一浏览器默认样式
### 其他功能库
- **vue-grid-layout**: `^2.4.0`
- 网格布局组件
- 支持拖拽和调整大小
- 用于仪表盘布局
- **html2canvas**: `^1.4.1`
- HTML 转 Canvas 工具
- 用于截图功能
- **print-js**: `^1.6.0`
- 打印功能库
- 支持 HTML、PDF、图片打印
- **element-resize-detector**: `^1.2.4`
- 元素尺寸监听工具
- 用于响应式布局
- **@vue/composition-api**: `^1.7.2`
- Composition API 支持Vue 2
- 为 Vue 3 迁移做准备
- **vue-demi**: `^0.14.6`
- 兼容 Vue 2/3 的工具库
### 微前端支持
- **Wujie无界**
- 支持微前端架构
- 可在 iframe 中运行
- 支持生命周期管理MOUNT/UNMOUNT
- 支持独立运行模式和嵌入模式
### 核心依赖
- **core-js**: `3.6.5`
- JavaScript 标准库 polyfill
- 提供 ES6+ 特性支持
## 开发工具
### 代码规范
- **ESLint**: `6.7.2`
- 代码质量检查工具
- 支持 Vue 文件检查eslint-plugin-vue 6.2.2
- 使用 babel-eslint `^8.2.2` 作为解析器
### 测试框架
- **Jest**: 通过 `@vue/cli-plugin-unit-jest`
- 单元测试框架
- 使用 @vue/test-utils `1.0.0-beta.29`
- babel-jest `23.6.0` 用于转译
### 编译工具
- **Babel**
- @vue/cli-plugin-babel `4.4.4`
- babel-plugin-dynamic-import-node `2.3.3`
- 开发环境动态导入优化
### 构建优化
- **SVG 处理**
- svg-sprite-loader `4.1.3` - SVG 图标精灵图
- svgo `1.2.2` - SVG 优化工具
- **代码分割**
- chunk-libs: 第三方库分离
- chunk-elementUI: Element UI 单独打包
- chunk-commons: 公共组件分离(最小引用 3 次)
- runtime chunk: 运行时代码分离
- **构建优化插件**
- script-ext-html-webpack-plugin `2.1.3` - 内联运行时脚本
### Mock 数据
- **mockjs**: `1.0.1-beta3`
- 生成随机数据
- 拦截 Ajax 请求
- 用于开发环境数据模拟
### 其他开发工具
- **chalk**: `2.4.2` - 终端颜色输出
- **runjs**: `4.3.2` - 脚本运行工具
- **connect**: `3.6.6` - HTTP 服务器
- **serve-static**: `1.13.2` - 静态文件服务
## 项目配置
### 开发服务器
- **端口**9530默认
- **自动打开浏览器**:是
- **热更新**:支持
- **代理配置**:支持多个 API 代理
- `/old` -> 旧版系统
- `/oa` -> OA 系统
- 主 API -> `VUE_APP_BASE_API`
### 环境变量
- `VUE_APP_MODULE_NAME`: 模块名称(用于路由和构建路径)
- `VUE_APP_BASE_API`: API 基础路径
- `VUE_APP_OUT_URL`: 外部系统 URL
- `VUE_APP_OUT_OLD`: 旧版外部系统 URL
### 路径别名
- `@`: 指向 `src` 目录
### 浏览器兼容性
- 支持所有市场份额 > 1% 的浏览器
- 最后两个版本
- 现代浏览器和 IE 10+
## 项目结构特点
### 权限控制
- **基于角色的权限管理RBAC**
- **路由级别权限控制**
- **动态路由生成**
- **按钮级别权限控制**
### 多模式支持
- **独立运行模式**:直接访问应用
- **iframe 嵌入模式**:嵌入到其他系统中
- **微前端Wujie模式**:作为微前端子应用
### 错误处理
- **全局错误捕获**Vue.config.errorHandler
- **iframe 环境错误上报**:向父窗口上报错误
- **Axios 请求错误统一处理**:统一错误提示和处理
### 自定义组件
- **LxHeader**: 自定义头部组件
- **XyTable**: 自定义表格组件
- **XyDialog**: 自定义对话框组件
- **XySelectors**: 自定义选择器组件
- **PlanPicker**: 计划选择器组件
- **Breadcrumb**: 面包屑导航
- **Pagination**: 分页组件
## 主要功能模块
根据项目结构,主要包含以下业务模块:
1. **预算管理** (budget)
- 预算编制、审核、执行
- 预算汇总、上报
- 预算目标管理
2. **合同管理** (contract)
- 合同列表、详情
- 合同签订
- 合同集成
3. **绩效管理** (achievements)
- 评价管理
- 积分管理
- 类型管理
4. **部门进度** (departmentProgress)
- 部门工作进度跟踪
5. **财务管理** (finance)
- 收支管理
- 资金登记
6. **系统管理** (system/sysManage)
- 用户管理
- 角色管理
- 权限管理
- 菜单管理
- 字典管理
- 日志管理
7. **仪表盘** (dashboard)
- 数据可视化
- 通知公告
8. **其他功能**
- 请假管理 (away)
- 借阅管理 (borrow)
- 安装部署 (install)
- 预览功能 (preview)
- 统计报表 (statisticalReport)
## 运行环境要求
- **Node.js**: >= 8.9
- **npm**: >= 3.0.0
## 常用命令
```bash
# 开发环境
npm run dev
# 生产环境构建
npm run build:prod
# 预发布环境构建
npm run build:stage
# 预览构建结果
npm run preview
# 代码检查
npm run lint
# 单元测试
npm run test:unit
# 代码检查和测试
npm run test:ci
# SVG 优化
npm run svgo
```
## 技术栈版本总结
| 分类 | 技术 | 版本 |
|------|------|------|
| 前端框架 | Vue | 2.6.10 |
| UI 库 | Element UI | 2.13.2 |
| UI 库 | View Design | 4.7.0 |
| 状态管理 | Vuex | 3.1.0 |
| 路由 | Vue Router | 3.0.6 |
| HTTP | Axios | 0.18.1 |
| 构建工具 | Vue CLI | 4.4.4 |
| CSS 预处理器 | Less | ^3.13.1 |
| CSS 预处理器 | Sass | 1.26.8 |
| 图表库 | ECharts | ^5.0.0 |
| 日期处理 | moment | ^2.29.4 |
| 富文本编辑器 | wangeditor | ^4.7.12 |
| 测试框架 | Jest | - |
| 代码规范 | ESLint | 6.7.2 |
| 微前端 | Wujie | - |
## 技术栈特点
### 优势
1. **成熟稳定**:基于 Vue 2 + Element UI 的成熟方案
2. **功能完整**:包含完整的后台管理系统功能
3. **多模式支持**支持独立运行、iframe、微前端多种部署方式
4. **权限完善**:完整的权限控制系统
5. **文档支持**:支持 Office 文档预览
### 注意事项
1. **Axios 版本较旧**:当前使用 0.18.1,建议升级到最新版本以获得更好的安全性和功能支持
2. **Vue 2 项目**:项目基于 Vue 2.6,如需升级到 Vue 3需要大量重构工作
3. **微前端兼容**:项目支持多种运行模式,在修改入口文件时需要确保兼容性
4. **生产环境构建**:构建产物输出到 `../cz_hjjc/public/${VUE_APP_MODULE_NAME}`,需要配置相应的环境变量
5. **依赖更新**:部分依赖版本较旧,建议定期更新以获取安全补丁
## 项目构建输出
- **输出目录**`../cz_hjjc/public/${VUE_APP_MODULE_NAME}`
- **静态资源目录**`static`
- **源码映射**生产环境关闭productionSourceMap: false
---
*文档生成时间:基于 package.json 和项目结构分析*
*项目路径:/Users/weizongsong/www/cz-hjjc-ht*