Просмотр исходного кода

网页端:修复教育学习中学时精度问题

余思翰 3 недель назад
Родитель
Сommit
53eba32220

+ 336
- 0
oa-ui/CMC_OA_架构文档.md Просмотреть файл

@@ -0,0 +1,336 @@
1
+# CMC智联云枢办公系统(oa-ui) 技术架构文档
2
+
3
+## 1. 项目概述
4
+
5
+CMC智联云枢办公系统前端(oa-ui)是基于Vue.js 2.x构建的企业级办公管理系统,主要服务于CMC企业的日常办公管理需求,包括项目管理、车辆管理、设备管理、合同管理、流程审批等多个业务模块。
6
+
7
+### 1.1 基本信息
8
+- **项目名称**: CMC智联云枢办公系统
9
+- **版本**: 3.8.7
10
+- **描述**: CMC智联云枢办公系统
11
+- **开发框架**: Vue.js 2.6.12 + Element UI 2.15.14
12
+- **构建工具**: Vue CLI 4.4.6
13
+
14
+## 2. 技术栈
15
+
16
+### 2.1 核心技术
17
+- **前端框架**: Vue.js 2.6.12
18
+- **UI组件库**: Element UI 2.15.14
19
+- **状态管理**: Vuex 3.6.0
20
+- **路由管理**: Vue Router 3.4.9
21
+- **HTTP客户端**: Axios 0.24.0
22
+- **构建工具**: Vue CLI 4.4.6
23
+- **样式预处理器**: Sass 1.32.13
24
+
25
+### 2.2 特色功能库
26
+- **流程图设计**: bpmn-js 11.1.0 (支持BPMN流程设计)
27
+- **地图组件**: OpenLayers 7.1.0 (GIS地图功能)
28
+- **图表可视化**: ECharts 5.4.0 + ECharts GL 2.0.9
29
+- **富文本编辑**: Quill 1.3.7 + TinyMCE
30
+- **文档预览**: @vue-office系列 (支持PDF、Excel、Word预览)
31
+- **视频播放**: Video.js 8.21.0
32
+
33
+### 2.3 工具库
34
+- **文件操作**: file-saver 2.0.5
35
+- **加密解密**: jsencrypt 3.0.0-rc.1
36
+- **剪贴板**: clipboard 2.0.8
37
+- **日期处理**: 内置日期工具
38
+- **拖拽功能**: vuedraggable 2.24.3 + sortablejs 1.10.2
39
+
40
+## 3. 项目架构
41
+
42
+### 3.1 目录结构
43
+```
44
+oa-ui/
45
+├── public/                 # 静态资源
46
+├── src/
47
+│   ├── api/               # API接口层
48
+│   │   ├── flowable/      # 工作流相关接口
49
+│   │   ├── oa/            # 办公系统业务接口
50
+│   │   ├── system/        # 系统管理接口
51
+│   │   └── monitor/       # 系统监控接口
52
+│   ├── assets/            # 静态资源
53
+│   │   ├── icons/         # SVG图标
54
+│   │   ├── images/        # 图片资源
55
+│   │   ├── styles/        # 全局样式
56
+│   │   └── datas/         # 静态数据
57
+│   ├── components/        # 公共组件
58
+│   │   ├── Process/       # 流程设计组件
59
+│   │   ├── FileUpload/    # 文件上传组件
60
+│   │   ├── ImageUpload/   # 图片上传组件
61
+│   │   └── ...           # 其他通用组件
62
+│   ├── directive/         # 自定义指令
63
+│   ├── layout/           # 布局组件
64
+│   ├── plugins/          # 插件配置
65
+│   ├── router/           # 路由配置
66
+│   ├── store/            # Vuex状态管理
67
+│   ├── utils/            # 工具类
68
+│   ├── views/            # 页面组件
69
+│   │   ├── oa/           # 办公系统业务页面
70
+│   │   ├── flowable/     # 工作流页面
71
+│   │   ├── system/       # 系统管理页面
72
+│   │   └── monitor/      # 系统监控页面
73
+│   ├── App.vue           # 根组件
74
+│   ├── main.js           # 入口文件
75
+│   └── permission.js     # 权限控制
76
+├── package.json          # 项目配置
77
+└── babel.config.js       # Babel配置
78
+```
79
+
80
+### 3.2 分层架构
81
+
82
+#### 3.2.1 表现层 (Presentation Layer)
83
+- **Views层**: 业务页面组件,负责用户界面展示和交互
84
+- **Components层**: 可复用的UI组件
85
+- **Layout层**: 页面布局组件(侧边栏、导航栏、内容区域)
86
+
87
+#### 3.2.2 业务逻辑层 (Business Logic Layer)
88
+- **Store/Vuex**: 全局状态管理,包含用户信息、权限、应用配置等
89
+- **Router**: 路由管理,支持动态路由和权限控制
90
+- **Directive**: 自定义指令,如权限指令、拖拽指令等
91
+
92
+#### 3.2.3 数据访问层 (Data Access Layer)
93
+- **API层**: 封装HTTP请求,统一管理后端接口调用
94
+- **Utils层**: 工具函数,包含请求拦截器、数据处理、权限验证等
95
+
96
+## 4. 核心模块详解
97
+
98
+### 4.1 认证与权限模块
99
+
100
+#### 4.1.1 认证机制
101
+- 基于JWT Token的认证方式
102
+- 支持Token自动刷新
103
+- 登录状态持久化存储
104
+
105
+#### 4.1.2 权限控制
106
+```javascript
107
+// 权限指令示例
108
+v-hasPermi="['system:user:add']"  // 菜单权限
109
+v-hasRole="['admin']"             // 角色权限
110
+```
111
+
112
+#### 4.1.3 路由守卫
113
+- 全局前置守卫验证登录状态
114
+- 动态路由生成基于用户权限
115
+- 白名单路由支持
116
+
117
+### 4.2 状态管理 (Vuex)
118
+
119
+#### 4.2.1 模块结构
120
+```javascript
121
+store/
122
+├── modules/
123
+│   ├── app.js           # 应用配置状态
124
+│   ├── user.js          # 用户信息状态
125
+│   ├── permission.js    # 权限路由状态
126
+│   ├── tagsView.js      # 标签页状态
127
+│   ├── settings.js      # 系统设置状态
128
+│   ├── dict.js          # 字典数据状态
129
+│   ├── projectProcess.js # 项目流程状态
130
+│   └── ol.js            # 地图组件状态
131
+├── getters.js           # 全局getter
132
+└── index.js             # store入口
133
+```
134
+
135
+#### 4.2.2 核心状态
136
+- **用户信息**: 包含用户基本信息、角色、权限等
137
+- **应用配置**: 侧边栏状态、设备类型、主题设置等
138
+- **路由权限**: 动态路由、菜单权限等
139
+- **字典数据**: 系统字典缓存
140
+
141
+### 4.3 网络请求模块
142
+
143
+#### 4.3.1 请求拦截器
144
+- 自动添加Authorization header
145
+- 请求重复提交控制
146
+- 请求参数处理
147
+
148
+#### 4.3.2 响应拦截器
149
+- 统一错误处理
150
+- 登录状态过期处理
151
+- 文件下载处理
152
+
153
+#### 4.3.3 API组织结构
154
+```javascript
155
+api/
156
+├── flowable/          # 工作流相关
157
+├── oa/               # 业务模块
158
+│   ├── project/      # 项目管理
159
+│   ├── car/          # 车辆管理
160
+│   ├── device/       # 设备管理
161
+│   ├── contract/     # 合同管理
162
+│   └── ...           # 其他业务模块
163
+├── system/           # 系统管理
164
+└── monitor/          # 系统监控
165
+```
166
+
167
+### 4.4 组件体系
168
+
169
+#### 4.4.1 全局组件
170
+- **Pagination**: 分页组件
171
+- **RightToolbar**: 表格工具栏
172
+- **DictTag**: 字典标签
173
+- **FileUpload**: 文件上传
174
+- **ImageUpload**: 图片上传
175
+- **Editor**: 富文本编辑器
176
+
177
+#### 4.4.2 业务组件
178
+- **Process**: BPMN流程设计器
179
+- **Calendar**: 日历组件
180
+- **IconSelect**: 图标选择器
181
+- **HeaderSearch**: 头部搜索
182
+
183
+#### 4.4.3 布局组件
184
+- **Sidebar**: 侧边栏导航
185
+- **Navbar**: 顶部导航栏
186
+- **TagsView**: 标签页导航
187
+- **AppMain**: 主内容区域
188
+
189
+## 5. 业务模块架构
190
+
191
+### 5.1 工作流模块 (Flowable)
192
+- **流程定义**: 支持BPMN 2.0标准的流程设计
193
+- **任务管理**: 待办、已办、我的流程
194
+- **表单管理**: 动态表单配置和渲染
195
+- **流程监控**: 流程实例跟踪和管理
196
+
197
+### 5.2 项目管理模块
198
+- **项目台账**: 项目基础信息管理
199
+- **项目预算**: 预算编制和管控
200
+- **项目进度**: 进度跟踪和报告
201
+- **项目变更**: 变更申请和审批
202
+
203
+### 5.3 资源管理模块
204
+- **车辆管理**: 车辆信息、使用申请、费用管理
205
+- **设备管理**: 设备台账、领用归还、维修保养
206
+- **人员管理**: 员工信息、薪资管理、绩效考核
207
+
208
+### 5.4 合同管理模块
209
+- **承接合同**: 合同基础信息、支付管理
210
+- **分包合同**: 分包管理、结算管理
211
+- **合同档案**: 合同文档管理
212
+
213
+### 5.5 财务管理模块
214
+- **借款管理**: 借款申请、审批、还款
215
+- **费用管理**: 各类费用申请和报销
216
+- **预算管控**: 预算编制、执行、分析
217
+
218
+## 6. 技术特色
219
+
220
+### 6.1 工作流集成
221
+- 深度集成Flowable工作流引擎
222
+- 支持复杂业务流程的可视化设计
223
+- 提供完整的流程生命周期管理
224
+
225
+### 6.2 GIS地图功能
226
+- 基于OpenLayers的地图组件
227
+- 支持多种地图底图和图层
228
+- 提供空间数据的可视化展示
229
+
230
+### 6.3 多媒体支持
231
+- 支持多种文档格式在线预览
232
+- 集成视频播放功能
233
+- 提供图片预览和编辑功能
234
+
235
+### 6.4 移动端适配
236
+- 响应式布局设计
237
+- 支持移动端设备访问
238
+- 提供良好的移动端用户体验
239
+
240
+## 7. 性能优化
241
+
242
+### 7.1 代码分割
243
+- 路由级别的代码分割
244
+- 组件异步加载
245
+- 第三方库按需引入
246
+
247
+### 7.2 缓存策略
248
+- 字典数据缓存
249
+- 用户权限信息缓存
250
+- 静态资源缓存
251
+
252
+### 7.3 请求优化
253
+- 请求防抖处理
254
+- 重复请求取消
255
+- 批量请求合并
256
+
257
+## 8. 安全机制
258
+
259
+### 8.1 前端安全
260
+- XSS攻击防护
261
+- CSRF攻击防护
262
+- 敏感信息加密传输
263
+
264
+### 8.2 权限控制
265
+- 基于RBAC的权限模型
266
+- 前端路由权限控制
267
+- 接口级别的权限验证
268
+
269
+### 8.3 数据安全
270
+- 前端数据脱敏
271
+- 安全的文件上传处理
272
+- 用户操作日志记录
273
+
274
+## 9. 开发规范
275
+
276
+### 9.1 代码规范
277
+- ESLint代码质量检查
278
+- 统一的代码格式化
279
+- Git提交规范
280
+
281
+### 9.2 组件规范
282
+- 组件命名规范
283
+- Props和Events定义规范
284
+- 组件文档化要求
285
+
286
+### 9.3 API规范
287
+- 统一的接口命名规范
288
+- 标准的请求响应格式
289
+- 完整的错误码定义
290
+
291
+## 10. 部署架构
292
+
293
+### 10.1 开发环境
294
+- 本地开发服务器
295
+- 热重载支持
296
+- 开发调试工具集成
297
+
298
+### 10.2 生产环境
299
+- 静态资源CDN部署
300
+- Gzip压缩优化
301
+- 缓存策略配置
302
+
303
+### 10.3 持续集成
304
+- 自动化构建流程
305
+- 代码质量检查
306
+- 自动化部署
307
+
308
+## 11. 扩展性设计
309
+
310
+### 11.1 插件化架构
311
+- 组件插件化
312
+- 功能模块插件化
313
+- 第三方集成插件化
314
+
315
+### 11.2 国际化支持
316
+- 多语言切换
317
+- 本地化资源管理
318
+- 区域化配置
319
+
320
+### 11.3 主题定制
321
+- 多主题切换
322
+- 自定义主题配置
323
+- 品牌化定制支持
324
+
325
+## 12. 总结
326
+
327
+CMC综合办公系统前端架构采用了现代化的Vue.js技术栈,通过模块化、组件化的设计理念,构建了一个功能完善、扩展性强、维护性好的企业级办公管理系统。系统具有以下特点:
328
+
329
+1. **技术先进**: 采用Vue.js 2.x + Element UI构建,技术栈成熟稳定
330
+2. **功能丰富**: 涵盖项目管理、资源管理、流程审批等多个业务领域
331
+3. **架构清晰**: 分层架构设计,职责分离,便于开发和维护
332
+4. **扩展性强**: 插件化设计,支持功能模块的灵活扩展
333
+5. **用户体验**: 响应式设计,支持PC和移动端访问
334
+6. **安全可靠**: 完善的权限控制和安全防护机制
335
+
336
+该架构为企业数字化办公提供了强有力的技术支撑,能够满足企业不断增长的业务需求和技术演进要求。

+ 2
- 2
oa-ui/src/views/oa/study/components/studyHead.vue Просмотреть файл

@@ -2,7 +2,7 @@
2 2
  * @Author: ysh
3 3
  * @Date: 2025-03-05 14:19:02
4 4
  * @LastEditors: Please set LastEditors
5
- * @LastEditTime: 2025-03-27 13:57:08
5
+ * @LastEditTime: 2025-08-12 16:40:17
6 6
 -->
7 7
 <template>
8 8
   <div class="head-bg">
@@ -62,7 +62,7 @@ export default {
62 62
         }, 0)
63 63
       }
64 64
       console.log(approvalHours);
65
-      this.hours = studyHours + approvalHours;
65
+      this.hours = (studyHours + approvalHours).toFixed(1);
66 66
     }
67 67
   },
68 68
 }

+ 2
- 2
oa-ui/src/views/oa/study/record.vue Просмотреть файл

@@ -2,7 +2,7 @@
2 2
  * @Author: ysh
3 3
  * @Date: 2025-03-12 10:06:03
4 4
  * @LastEditors: Please set LastEditors
5
- * @LastEditTime: 2025-04-22 13:45:22
5
+ * @LastEditTime: 2025-08-12 16:39:40
6 6
 -->
7 7
 <template>
8 8
   <div class="app-container">
@@ -78,7 +78,7 @@
78 78
                   <span v-if="data.type === 'department'">
79 79
                     <!-- <i class="el-icon-office-building"></i> -->
80 80
                     {{ data.deptName }}
81
-                    <span class="total-hours">(总学时:{{ data.totalHours }}h)</span>
81
+                    <span class="total-hours">(总学时:{{ (data.totalHours).toFixed(1) }}h)</span>
82 82
                   </span>
83 83
                   <!-- 人员节点 -->
84 84
                   <span v-else class="user-node">

Загрузка…
Отмена
Сохранить