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

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.

# 技术栈文档
## 项目概述
**项目名称**内控管理系统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*