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