|
|
@@ -0,0 +1,501 @@
|
|
|
1
|
+# 重庆机场安检分级质控系统 - 前端
|
|
|
2
|
+
|
|
|
3
|
+## 项目概述
|
|
|
4
|
+
|
|
|
5
|
+重庆机场安检分级质控系统管理端,基于若依(RuoYi)框架二次开发。系统涵盖考勤管理、查获物品、巡检管理、考试培训、大屏展示、绩效管理等核心业务模块。
|
|
|
6
|
+
|
|
|
7
|
+- **项目名**: airport-web
|
|
|
8
|
+- **版本**: 3.9.0
|
|
|
9
|
+- **技术栈**: Vue 3 + Vite 6 + Element Plus + Pinia + Vue Router
|
|
|
10
|
+
|
|
|
11
|
+## 开发环境
|
|
|
12
|
+
|
|
|
13
|
+```bash
|
|
|
14
|
+# 安装依赖
|
|
|
15
|
+npm install
|
|
|
16
|
+
|
|
|
17
|
+# 启动开发服务器(端口 8111)
|
|
|
18
|
+npm run dev
|
|
|
19
|
+
|
|
|
20
|
+# 生产构建
|
|
|
21
|
+npm run build:prod
|
|
|
22
|
+
|
|
|
23
|
+# 预发构建
|
|
|
24
|
+npm run build:stage
|
|
|
25
|
+```
|
|
|
26
|
+
|
|
|
27
|
+## 技术栈
|
|
|
28
|
+
|
|
|
29
|
+| 技术 | 版本 | 用途 |
|
|
|
30
|
+|------|------|------|
|
|
|
31
|
+| Vue 3 | 3.5.16 | 核心框架 |
|
|
|
32
|
+| Vite | 6.3.5 | 构建工具 |
|
|
|
33
|
+| Element Plus | 2.9.9 | UI 组件库 |
|
|
|
34
|
+| Pinia | 3.0.2 | 状态管理 |
|
|
|
35
|
+| Vue Router | 4.5.1 | 路由管理 |
|
|
|
36
|
+| Axios | 1.9.0 | HTTP 请求 |
|
|
|
37
|
+| ECharts | 5.6.0 | 图表可视化 |
|
|
|
38
|
+| js-cookie | 3.0.5 | Cookie 管理 |
|
|
|
39
|
+| jsencrypt | 3.3.2 | RSA 加密(密码登录) |
|
|
|
40
|
+| nprogress | 0.2.0 | 页面加载进度条 |
|
|
|
41
|
+| vuedraggable | 4.1.0 | 拖拽排序 |
|
|
|
42
|
+| vue-cropper | 1.1.1 | 图片裁剪 |
|
|
|
43
|
+| html2canvas / jspdf | - | 导出 PDF |
|
|
|
44
|
+| docx | 9.5.1 | 导出 Word |
|
|
|
45
|
+| codemirror | - | SQL 编辑器 |
|
|
|
46
|
+| moment | - | 日期处理 |
|
|
|
47
|
+
|
|
|
48
|
+## 目录结构
|
|
|
49
|
+
|
|
|
50
|
+```
|
|
|
51
|
+src/
|
|
|
52
|
+├── api/ # 接口请求层(按业务模块分类)
|
|
|
53
|
+│ ├── system/ # 系统管理接口
|
|
|
54
|
+│ ├── attendance/ # 考勤接口
|
|
|
55
|
+│ ├── check/ # 巡检接口
|
|
|
56
|
+│ ├── item/ # 查获物品接口
|
|
|
57
|
+│ ├── examManage/ # 考试管理接口
|
|
|
58
|
+│ ├── largeScreen/ # 大屏接口
|
|
|
59
|
+│ ├── performance/ # 绩效接口
|
|
|
60
|
+│ └── monitor/ # 监控接口
|
|
|
61
|
+├── assets/ # 静态资源(图片、SVG图标、样式)
|
|
|
62
|
+├── components/ # 公共组件
|
|
|
63
|
+│ ├── FileUpload/ # 文件上传
|
|
|
64
|
+│ ├── ImageUpload/ # 图片上传
|
|
|
65
|
+│ ├── Editor/ # 富文本编辑器(Quill)
|
|
|
66
|
+│ ├── Pagination/ # 分页组件
|
|
|
67
|
+│ ├── DictTag/ # 字典标签
|
|
|
68
|
+│ ├── UserSelect/ # 用户选择器
|
|
|
69
|
+│ └── sqlEdit/ # SQL 编辑器
|
|
|
70
|
+├── directive/ # 自定义指令(权限、防重复点击等)
|
|
|
71
|
+├── hooks/ # 组合式函数
|
|
|
72
|
+├── layout/ # 布局组件(侧边栏、顶栏、标签页)
|
|
|
73
|
+├── plugins/ # Vue 插件注册
|
|
|
74
|
+├── router/ # 路由配置(含动态路由)
|
|
|
75
|
+├── store/ # Pinia 状态管理
|
|
|
76
|
+│ └── modules/ # 各模块 store(user、app、permission、settings等)
|
|
|
77
|
+├── utils/ # 工具函数(request、auth、dict 等)
|
|
|
78
|
+└── views/ # 页面视图
|
|
|
79
|
+ ├── system/ # 系统管理(用户、角色、菜单、部门、字典等)
|
|
|
80
|
+ ├── attendance/ # 考勤管理
|
|
|
81
|
+ ├── check/ # 巡检管理
|
|
|
82
|
+ ├── item/ # 查获物品管理
|
|
|
83
|
+ ├── examManage/ # 考试培训管理
|
|
|
84
|
+ ├── dataBigScreen/ # 数据大屏
|
|
|
85
|
+ │ ├── dashboard/ # 综合大屏
|
|
|
86
|
+ │ ├── attendance/ # 考勤大屏
|
|
|
87
|
+ │ ├── abilityPortrait/ # 能力画像大屏
|
|
|
88
|
+ │ └── examQuestionStatistics/ # 考题统计大屏
|
|
|
89
|
+ ├── performanceManage/# 绩效管理
|
|
|
90
|
+ ├── monitor/ # 系统监控
|
|
|
91
|
+ └── tool/ # 开发工具
|
|
|
92
|
+```
|
|
|
93
|
+
|
|
|
94
|
+## 环境配置
|
|
|
95
|
+
|
|
|
96
|
+| 环境 | 配置文件 | API 前缀 |
|
|
|
97
|
+|------|----------|----------|
|
|
|
98
|
+| 开发 | `.env.development` | `/dev-api` |
|
|
|
99
|
+| 预发 | `.env.staging` | - |
|
|
|
100
|
+| 生产 | `.env.production` | - |
|
|
|
101
|
+
|
|
|
102
|
+开发环境代理(`vite.config.js`):
|
|
|
103
|
+- `/dev-api` → `http://airport.samsundot.com:9024/prod-api`(生产后端,可改为本地)
|
|
|
104
|
+- 本地后端地址:`http://192.168.3.221:8088`(注释中有配置)
|
|
|
105
|
+
|
|
|
106
|
+切换本地后端:在 `vite.config.js` 中将 `baseUrl` 改为 `http://127.0.0.1:8088`
|
|
|
107
|
+
|
|
|
108
|
+## 开发约定
|
|
|
109
|
+
|
|
|
110
|
+### API 接口
|
|
|
111
|
+
|
|
|
112
|
+- 所有接口统一通过 `src/utils/request.js` 封装的 axios 实例调用
|
|
|
113
|
+- 请求头携带 `Authorization: Bearer <token>`
|
|
|
114
|
+- 统一返回结构:`{ code, msg, data }`,code=200 为成功
|
|
|
115
|
+
|
|
|
116
|
+### 权限控制
|
|
|
117
|
+
|
|
|
118
|
+- 使用 `v-hasPermi` 指令控制按钮级别权限
|
|
|
119
|
+- 使用 `v-hasRole` 指令控制角色级别权限
|
|
|
120
|
+- 动态路由从后端接口加载,存储在 Pinia `permission` store 中
|
|
|
121
|
+
|
|
|
122
|
+### 字典使用
|
|
|
123
|
+
|
|
|
124
|
+- 字典数据通过 `useDict()` hook 获取
|
|
|
125
|
+- 字典值展示使用 `<dict-tag>` 组件
|
|
|
126
|
+
|
|
|
127
|
+### 组件规范
|
|
|
128
|
+
|
|
|
129
|
+- 页面组件放在 `views/` 对应业务目录下
|
|
|
130
|
+- 公共组件放在 `components/` 目录下
|
|
|
131
|
+- 采用 `<script setup>` 语法 + `unplugin-vue-setup-extend-plus`(支持 `defineOptions`)
|
|
|
132
|
+
|
|
|
133
|
+### 样式
|
|
|
134
|
+
|
|
|
135
|
+- 使用 Less / SCSS
|
|
|
136
|
+- 全局样式在 `src/assets/styles/`
|
|
|
137
|
+- Element Plus 主题在全局样式中覆盖
|
|
|
138
|
+
|
|
|
139
|
+## 构建部署
|
|
|
140
|
+
|
|
|
141
|
+```bash
|
|
|
142
|
+# 构建后产物在 dist/ 目录
|
|
|
143
|
+# 静态资源输出到 dist/static/{js,css,img}/
|
|
|
144
|
+npm run build:prod
|
|
|
145
|
+
|
|
|
146
|
+# 通过 SSH 部署到服务器(需配置 script/deploy.mjs)
|
|
|
147
|
+npm run deploy # 部署到开发环境
|
|
|
148
|
+npm run deploy:prod # 部署到生产环境
|
|
|
149
|
+```
|
|
|
150
|
+
|
|
|
151
|
+## 业务模块说明
|
|
|
152
|
+
|
|
|
153
|
+| 模块 | 路径 | 说明 |
|
|
|
154
|
+|------|------|------|
|
|
|
155
|
+| 系统管理 | `/system` | 用户、角色、菜单、部门、岗位、字典、参数配置 |
|
|
|
156
|
+| 考勤管理 | `/attendance` | 考勤记录、班组记录、岗位记录、考勤区域 |
|
|
|
157
|
+| 巡检管理 | `/check` | 巡检任务、巡检记录、纠错管理 |
|
|
|
158
|
+| 查获物品 | `/item` | 查获记录、物品类别管理 |
|
|
|
159
|
+| 考试培训 | `/examManage` | 题库、试卷、日考、考试记录 |
|
|
|
160
|
+| 大屏展示 | `/dataBigScreen` | 综合大屏、考勤大屏、能力画像、考题统计 |
|
|
|
161
|
+| 绩效管理 | `/performanceManage` | 绩效配置、绩效查询 |
|
|
|
162
|
+| 系统监控 | `/monitor` | 在线用户、操作日志、登录日志、缓存、服务器 |
|
|
|
163
|
+| 审批流程 | - | 检查纠错审批流程 |
|
|
|
164
|
+
|
|
|
165
|
+---
|
|
|
166
|
+
|
|
|
167
|
+## 重庆需求分析(2026-04-23)
|
|
|
168
|
+
|
|
|
169
|
+> 来源文件:`重庆需求资料/` 目录下的需求 Excel 文档。
|
|
|
170
|
+
|
|
|
171
|
+---
|
|
|
172
|
+
|
|
|
173
|
+### 一、新增页面总览(Step1 首期)
|
|
|
174
|
+
|
|
|
175
|
+| 菜单位置 | 页面 | 说明 |
|
|
|
176
|
+|----------|------|------|
|
|
|
177
|
+| 台账管理 | 台账一键导入 | 单页面实现20个台账的Excel上传导入(两列10行布局) |
|
|
|
178
|
+| 台账管理 | 部门监察问题记录 | 导入后查询,含查询筛选+列表+导出 |
|
|
|
179
|
+| 台账管理 | 队室三级质控巡查记录 | 同上(暂未计分) |
|
|
|
180
|
+| 台账管理 | 部门实时质控拦截记录 | 同上(对应现有查获功能,部分字段不同) |
|
|
|
181
|
+| 台账管理 | 服务巡查 | 同上 |
|
|
|
182
|
+| 台账管理 | 投诉情况 | 同上 |
|
|
|
183
|
+| 台账管理 | 安保测试记录(部门) | 同上 |
|
|
|
184
|
+| 台账管理 | 通道过检率 | 同上(暂未计分) |
|
|
|
185
|
+| 台账管理 | 不安全事件 | 同上 |
|
|
|
186
|
+| 台账管理 | 2026查获违规品统计 | 同上(暂未计分) |
|
|
|
187
|
+| 台账管理 | 航站楼加分 | 同上,查询条件:审核日期/姓名/班组 |
|
|
|
188
|
+| 台账管理 | 成绩收集 | 同上,查询条件:用户名称/小组/班组/部门/类别/期数 |
|
|
|
189
|
+| 台账管理 | 小额奖励审批单 | 同上(钉钉OA接入) |
|
|
|
190
|
+| 台账管理 | 部门奖惩记录 | 页面录入(非导入),含增删改查 |
|
|
|
191
|
+| 台账管理 | 请休假记录(特殊) | 页面录入,含增删改查 |
|
|
|
192
|
+| 台账管理 | 锦旗及感谢信 | 页面录入,含增删改查 |
|
|
|
193
|
+| 配分管理 | 配分表体系维护 | 6维度98项指标树形结构,支持权重/分值/启停配置 |
|
|
|
194
|
+| 配分管理 | 配分事项录入 | 针对个人手动录入加/扣分事项,含导入导出 |
|
|
|
195
|
+| 配分管理 | 推送配置 | 各维度推送阈值配置,支持定向推送设置 |
|
|
|
196
|
+| 大屏展示 | 六维度能力画像大屏 | 雷达图(员工→小组→队室→部门→站),含等级预警色标 |
|
|
|
197
|
+
|
|
|
198
|
+---
|
|
|
199
|
+
|
|
|
200
|
+### 二、评分等级与颜色规范
|
|
|
201
|
+
|
|
|
202
|
+全系统统一使用以下颜色标识,不可混用:
|
|
|
203
|
+
|
|
|
204
|
+| 等级 | 分值 | 颜色 | 触发动作 |
|
|
|
205
|
+|------|------|------|----------|
|
|
|
206
|
+| 较差 | < 75 | **红色** `#F56C6C` | 启动预警,推送管理人员 |
|
|
|
207
|
+| 良好 | 75~85 | 正常(默认色) | 无 |
|
|
|
208
|
+| 优秀 | > 85 | **绿色** `#67C23A` | 无 |
|
|
|
209
|
+| 已推送 | — | **黄色** `#E6A23C` | 已推送标识 |
|
|
|
210
|
+
|
|
|
211
|
+---
|
|
|
212
|
+
|
|
|
213
|
+### 三、六大维度权重与雷达图
|
|
|
214
|
+
|
|
|
215
|
+雷达图需在 **员工 / 小组 / 队室 / 部门 / 站** 五个层级分别展示,逐级汇总:
|
|
|
216
|
+
|
|
|
217
|
+| 维度轴 | 权重 | 基础分 |
|
|
|
218
|
+|--------|------|--------|
|
|
|
219
|
+| 安全防控能力 | 40% | 80 |
|
|
|
220
|
+| 服务响应能力 | 20% | 80 |
|
|
|
221
|
+| 业务实操能力 | **10%** | 80 |
|
|
|
222
|
+| 作风践行能力 | 10% | 80 |
|
|
|
223
|
+| 群团协作能力 | **15%** | 80 |
|
|
|
224
|
+| 身心调节能力 | 5% | 80 |
|
|
|
225
|
+
|
|
|
226
|
+> 2026-04-24 更新:业务实操能力 15%→10%,群团协作能力 10%→15%(来源:04.配分表分析.xlsx)
|
|
|
227
|
+
|
|
|
228
|
+**综合得分** = Σ(各维度得分 × 权重)
|
|
|
229
|
+
|
|
|
230
|
+---
|
|
|
231
|
+
|
|
|
232
|
+### 四、台账查询页面通用规范
|
|
|
233
|
+
|
|
|
234
|
+所有台账查询页面遵循以下规范:
|
|
|
235
|
+- **暂不提供增删改功能**(部门奖惩/请假/锦旗三个页面录入除外)
|
|
|
236
|
+- 列表显示绿色关键字段,详情页显示全量字段
|
|
|
237
|
+- 必须提供**导出**功能(全字段导出)
|
|
|
238
|
+- 导入时保留原始台账全量字段,不做删减
|
|
|
239
|
+- 附件字段显示为可点击的预览/下载链接
|
|
|
240
|
+
|
|
|
241
|
+各台账查询条件参考(未特别说明的保持与海口一致):
|
|
|
242
|
+- 投诉情况:时间 / 航班号 / 旅客姓名 / 班组 / 责任人
|
|
|
243
|
+- 航站楼加分:审核日期 / 姓名 / 班组
|
|
|
244
|
+- 成绩收集:用户名称 / 小组 / 班组 / 部门 / 类别 / 期数
|
|
|
245
|
+
|
|
|
246
|
+---
|
|
|
247
|
+
|
|
|
248
|
+### 五、配分表体系维护页面
|
|
|
249
|
+
|
|
|
250
|
+**功能要求:**
|
|
|
251
|
+- 以树形结构展示 6 个维度 → 98 项指标(2~4级)
|
|
|
252
|
+- 支持对每个节点:增删改查、启用/停用、备注编辑
|
|
|
253
|
+- 维度级别:可调整权重百分比
|
|
|
254
|
+- 指标级别:可调整分值(正/负)、类型(加分/扣分)
|
|
|
255
|
+- 修改分值/权重后,跑分引擎重新计算时生效
|
|
|
256
|
+
|
|
|
257
|
+---
|
|
|
258
|
+
|
|
|
259
|
+### 六、配分事项录入页面
|
|
|
260
|
+
|
|
|
261
|
+**核心字段(对应后端 `score_event` 表):**
|
|
|
262
|
+
|
|
|
263
|
+| 字段 | 说明 |
|
|
|
264
|
+|------|------|
|
|
|
265
|
+| 一级指标 | 六大维度之一 |
|
|
|
266
|
+| 二级指标 | 对应维度下的二级分类 |
|
|
|
267
|
+| 三级指标 | 末级指标(群团协作有四级) |
|
|
|
268
|
+| 四级指标 | 仅群团协作维度使用 |
|
|
|
269
|
+| 时间 | 事件发生时间 |
|
|
|
270
|
+| 位置 | 区域/通道 |
|
|
|
271
|
+| 责任人 | 关联员工 |
|
|
|
272
|
+| 分值 | 正数=加分,负数=扣分 |
|
|
|
273
|
+| 叠加分值 | 根据后果叠加的额外分值 |
|
|
|
274
|
+| 事件描述 | 事件详情 |
|
|
|
275
|
+| 备注 | 附加说明 |
|
|
|
276
|
+| 数据来源 | 手动录入 / 台账同步 |
|
|
|
277
|
+
|
|
|
278
|
+**功能要求:**
|
|
|
279
|
+- 支持手动新增、导入(Excel)、导出
|
|
|
280
|
+- 提供按员工/维度/时间范围的查询
|
|
|
281
|
+- 台账同步数据与手动录入数据在同一列表展示,来源字段区分
|
|
|
282
|
+
|
|
|
283
|
+---
|
|
|
284
|
+
|
|
|
285
|
+### 七、组织架构四级层级说明
|
|
|
286
|
+
|
|
|
287
|
+重庆特有四级结构(与其他机场不同),在部门树、权限配置、数据筛选等处均需支持:
|
|
|
288
|
+
|
|
|
289
|
+```
|
|
|
290
|
+安检站
|
|
|
291
|
+ └── 部门(如:旅检三部)
|
|
|
292
|
+ └── 队室/班组(如:安平班组)
|
|
|
293
|
+ └── 小组/通道(如:陈行小组)
|
|
|
294
|
+```
|
|
|
295
|
+
|
|
|
296
|
+行政部门(安全中心/培训中心/服务中心/设备中心)与业务部门并列,不参与评分汇总。
|
|
|
297
|
+
|
|
|
298
|
+---
|
|
|
299
|
+
|
|
|
300
|
+### 八、Step2 规划(暂不开发,预留接口位置)
|
|
|
301
|
+
|
|
|
302
|
+- 钉钉集成:组织架构同步 + 考勤接入 + OA审批流
|
|
|
303
|
+- AI助手(13个场景):员工画像/排班辅助/知识库/风险分析等
|
|
|
304
|
+- 顾客投诉独立系统
|
|
|
305
|
+- 设备中心(准入/运营/报废)
|
|
|
306
|
+- 薪酬系统对接
|
|
|
307
|
+
|
|
|
308
|
+---
|
|
|
309
|
+
|
|
|
310
|
+## Phase 1 实现记录(台账导入,2026-04-24)
|
|
|
311
|
+
|
|
|
312
|
+### 新增文件结构
|
|
|
313
|
+
|
|
|
314
|
+```
|
|
|
315
|
+src/
|
|
|
316
|
+├── api/ledger/
|
|
|
317
|
+│ └── index.js # 全部台账 API(12个导入 + 15个列表/导出 + 3个CRUD)
|
|
|
318
|
+└── views/ledger/
|
|
|
319
|
+ ├── import/index.vue # 台账一键导入主页(2列×6行网格卡片布局)
|
|
|
320
|
+ ├── supervisionProblem/ # 部门监察问题记录(查询+导出)
|
|
|
321
|
+ ├── patrolInspection/ # 队室三级质控巡查记录(查询+导出)
|
|
|
322
|
+ ├── realtimeInterception/ # 实时质控拦截记录(查询+导出)
|
|
|
323
|
+ ├── servicePatrol/ # 服务巡查记录(查询+导出)
|
|
|
324
|
+ ├── complaint/ # 投诉情况(查询+导出,含航班号/旅客/责任人筛选)
|
|
|
325
|
+ ├── securityTest/ # 安保测试记录(查询+导出)
|
|
|
326
|
+ ├── channelPassRate/ # 通道过检率(查询+导出)
|
|
|
327
|
+ ├── unsafeEvent/ # 不安全事件(查询+导出)
|
|
|
328
|
+ ├── seizureStats/ # 查获违规品统计(查询+导出)
|
|
|
329
|
+ ├── terminalBonus/ # 航站楼加分(查询+导出,含姓名筛选)
|
|
|
330
|
+ ├── examScore/ # 成绩收集(查询+导出,含姓名/类别/期数筛选)
|
|
|
331
|
+ ├── rewardApproval/ # 小额奖励审批单(查询+导出)
|
|
|
332
|
+ ├── rewardPenalty/ # 部门奖惩记录(完整增删改查)
|
|
|
333
|
+ ├── leaveSpecial/ # 请休假记录特殊(完整增删改查)
|
|
|
334
|
+ └── bannerLetter/ # 锦旗及感谢信(完整增删改查)
|
|
|
335
|
+```
|
|
|
336
|
+
|
|
|
337
|
+### 接口路由规范
|
|
|
338
|
+
|
|
|
339
|
+| 台账 | 导入 URL | 列表 URL |
|
|
|
340
|
+|------|----------|----------|
|
|
|
341
|
+| 部门监察问题记录 | `POST /ledger/import/supervisionProblem` | `GET /ledger/supervisionProblem/list` |
|
|
|
342
|
+| 队室三级质控巡查 | `POST /ledger/import/patrolInspection` | `GET /ledger/patrolInspection/list` |
|
|
|
343
|
+| 实时质控拦截 | `POST /ledger/import/realtimeInterception` | `GET /ledger/realtimeInterception/list` |
|
|
|
344
|
+| 服务巡查 | `POST /ledger/import/servicePatrol` | `GET /ledger/servicePatrol/list` |
|
|
|
345
|
+| 投诉情况 | `POST /ledger/import/complaint` | `GET /ledger/complaint/list` |
|
|
|
346
|
+| 安保测试 | `POST /ledger/import/securityTest` | `GET /ledger/securityTest/list` |
|
|
|
347
|
+| 通道过检率 | `POST /ledger/import/channelPassRate` | `GET /ledger/channelPassRate/list` |
|
|
|
348
|
+| 不安全事件 | `POST /ledger/import/unsafeEvent` | `GET /ledger/unsafeEvent/list` |
|
|
|
349
|
+| 查获违规品统计 | `POST /ledger/import/seizureStats` | `GET /ledger/seizureStats/list` |
|
|
|
350
|
+| 航站楼加分 | `POST /ledger/import/terminalBonus` | `GET /ledger/terminalBonus/list` |
|
|
|
351
|
+| 成绩收集 | `POST /ledger/import/examScore` | `GET /ledger/examScore/list` |
|
|
|
352
|
+| 小额奖励审批单 | `POST /ledger/import/rewardApproval` | `GET /ledger/rewardApproval/list` |
|
|
|
353
|
+| 部门奖惩记录 | 无(页面录入) | `GET /ledger/rewardPenalty/list` |
|
|
|
354
|
+| 请休假记录特殊 | 无(页面录入) | `GET /ledger/leaveSpecial/list` |
|
|
|
355
|
+| 锦旗及感谢信 | 无(页面录入) | `GET /ledger/bannerLetter/list` |
|
|
|
356
|
+
|
|
|
357
|
+### 权限标识
|
|
|
358
|
+
|
|
|
359
|
+```
|
|
|
360
|
+ledger:import:{台账key} # 导入权限
|
|
|
361
|
+ledger:{台账key}:list # 列表权限
|
|
|
362
|
+ledger:{台账key}:export # 导出权限
|
|
|
363
|
+ledger:{台账key}:add/edit/remove # 仅 rewardPenalty / leaveSpecial / bannerLetter
|
|
|
364
|
+```
|
|
|
365
|
+
|
|
|
366
|
+### 待完成(上线前)
|
|
|
367
|
+
|
|
|
368
|
+1. 在数据库执行 `sql/ledger.sql`(后端)
|
|
|
369
|
+2. 在**菜单管理**中配置"台账管理"父菜单及 15 个子菜单,路由路径对应各 `views/ledger/*/index.vue`
|
|
|
370
|
+3. 在**角色权限**中分配 `ledger:*` 权限给相关角色
|
|
|
371
|
+4. 台账导入 Excel 模板(字段顺序需与 `@Excel` 注解的 `name` 保持一致)
|
|
|
372
|
+
|
|
|
373
|
+---
|
|
|
374
|
+
|
|
|
375
|
+## Phase 2 实现记录(配分体系,2026-04-24)
|
|
|
376
|
+
|
|
|
377
|
+### 新增文件结构
|
|
|
378
|
+
|
|
|
379
|
+```
|
|
|
380
|
+src/
|
|
|
381
|
+├── api/score/
|
|
|
382
|
+│ └── index.js # 全部配分API(维度/指标/事项/推送配置)
|
|
|
383
|
+└── views/score/
|
|
|
384
|
+ ├── dimension/index.vue # 配分表体系维护(左侧维度卡片 + 右侧指标树)
|
|
|
385
|
+ ├── event/index.vue # 配分事项录入(CRUD + 导入导出,指标三级联动选择)
|
|
|
386
|
+ └── pushConfig/index.vue # 推送配置(按维度分组展示,per维度per部门配置)
|
|
|
387
|
+```
|
|
|
388
|
+
|
|
|
389
|
+### 页面功能说明
|
|
|
390
|
+
|
|
|
391
|
+**配分表体系维护 (`score/dimension`)**
|
|
|
392
|
+- 左侧:6个维度卡片,点击切换,显示权重合计(实时校验是否=100%)
|
|
|
393
|
+- 右侧:el-table 树形表格,展示指定维度下的指标树(默认全部展开)
|
|
|
394
|
+- 指标操作:新增子级(按层级递增,最多4级)、修改、删除、状态开关
|
|
|
395
|
+- 维度操作:新增、修改、删除
|
|
|
396
|
+
|
|
|
397
|
+**配分事项录入 (`score/event`)**
|
|
|
398
|
+- 列表含:维度/指标/责任人/部门/班组/基础分/叠加分/总分/来源标签
|
|
|
399
|
+- 新增对话框:维度→二级→三级→四级 联动下拉(从指标树接口实时加载)
|
|
|
400
|
+- 支持 Excel 导入(`/score/event/import`)和导出
|
|
|
401
|
+
|
|
|
402
|
+**推送配置 (`score/pushConfig`)**
|
|
|
403
|
+- 按维度分组展示所有推送规则
|
|
|
404
|
+- 每条规则可设:适用部门(空=全局)、预警阈值(默认75分)、推送人员
|
|
|
405
|
+
|
|
|
406
|
+### 权限标识
|
|
|
407
|
+
|
|
|
408
|
+```
|
|
|
409
|
+score:dimension:list/add/edit/remove/export
|
|
|
410
|
+score:indicator:list/add/edit/remove/export
|
|
|
411
|
+score:event:list/add/edit/remove/export/import
|
|
|
412
|
+score:pushConfig:list/add/edit/remove
|
|
|
413
|
+```
|
|
|
414
|
+
|
|
|
415
|
+### 待完成(上线前)
|
|
|
416
|
+
|
|
|
417
|
+1. 在数据库执行 `sql/score.sql`(建表+初始化6个维度)
|
|
|
418
|
+2. 在系统菜单管理中配置"配分管理"父菜单及3个子菜单:
|
|
|
419
|
+ - 配分表体系维护 → `/score/dimension`
|
|
|
420
|
+ - 配分事项录入 → `/score/event`
|
|
|
421
|
+ - 推送配置 → `/score/pushConfig`
|
|
|
422
|
+3. 在角色权限中分配 `score:*` 权限
|
|
|
423
|
+4. ~~后续需手动录入98条指标数据~~ → 已通过 SQL 初始化128条指标,直接执行 `score.sql` 中的三段 `INSERT INTO score_indicator` 即可
|
|
|
424
|
+
|
|
|
425
|
+---
|
|
|
426
|
+
|
|
|
427
|
+## Phase 3 实现记录(台账同步、雷达大屏、一键全量导入,2026-04-24)
|
|
|
428
|
+
|
|
|
429
|
+### 新增/修改文件
|
|
|
430
|
+
|
|
|
431
|
+```
|
|
|
432
|
+后端(chongqing-server):
|
|
|
433
|
+├── airport-ledger/.../service/impl/LedgerSyncServiceImpl.java # 台账→配分事项同步逻辑
|
|
|
434
|
+├── airport-ledger/.../service/impl/ScoreRadarServiceImpl.java # 雷达图:班组从sys_dept读取
|
|
|
435
|
+├── airport-ledger/.../service/impl/LedgerCombinedImportServiceImpl.java # 多Sheet合并导入(POI)
|
|
|
436
|
+├── airport-ledger/.../service/ILedgerCombinedImportService.java
|
|
|
437
|
+└── airport-admin/.../controller/ledger/LedgerSyncController.java # POST /ledger/sync/all|{type}
|
|
|
438
|
+
|
|
|
439
|
+前端(chongqing-web):
|
|
|
440
|
+├── src/api/score/index.js # 新增 syncLedgerAll / syncLedgerByType
|
|
|
441
|
+├── src/api/ledger/index.js # 新增 importCombinedLedger
|
|
|
442
|
+├── src/views/score/radar/index.vue # 新增"同步台账"按钮
|
|
|
443
|
+├── src/views/ledger/import/index.vue # 顶部新增"一键全量导入"卡片
|
|
|
444
|
+└── src/utils/request.js # 修复 FormData 上传 Content-Type 问题
|
|
|
445
|
+```
|
|
|
446
|
+
|
|
|
447
|
+### 功能说明
|
|
|
448
|
+
|
|
|
449
|
+**台账同步(`/ledger/sync/all`)**
|
|
|
450
|
+- 将所有已导入的台账数据按配分表规则转换为 `score_event` 记录
|
|
|
451
|
+- 权限标识:`ledger:sync:all`
|
|
|
452
|
+- 返回:`{ inserted: N, skipped: N, detail: {...} }`
|
|
|
453
|
+- 重复数据通过 `import_batch + source_ledger + 原始字段` 去重跳过
|
|
|
454
|
+
|
|
|
455
|
+**一键全量导入(`POST /ledger/import/combined`)**
|
|
|
456
|
+- 上传「旅检三部"三三"数字管理平台.xlsx」(15个Sheet)
|
|
|
457
|
+- 后端用 Apache POI 按列索引读取,完全对应 Python 脚本列映射
|
|
|
458
|
+- 权限标识:`ledger:import:combined`
|
|
|
459
|
+- 返回 Map<Sheet名, 导入结果>,前端逐条展示
|
|
|
460
|
+
|
|
|
461
|
+**雷达图班组下拉**
|
|
|
462
|
+- 从 `sys_dept` 表读取 `dept_type='MANAGER'` 的记录作为班组列表
|
|
|
463
|
+- 不依赖业务数据,建库后即可显示
|
|
|
464
|
+
|
|
|
465
|
+### 关键技术问题与解决
|
|
|
466
|
+
|
|
|
467
|
+| 问题 | 原因 | 解决方式 |
|
|
|
468
|
+|------|------|----------|
|
|
|
469
|
+| `selectList is ambiguous` | Mapper XML 定义了同名 `selectList(Domain)` 方法,与 MyBatis Plus `selectList(Wrapper)` 冲突 | 所有调用改传空 Domain 对象(如 `new LedgerSupervisionProblem()`) |
|
|
|
470
|
+| `Parameter 'name' not found` | 同上,LambdaQueryWrapper 被路由到 XML 方法 | 同上 |
|
|
|
471
|
+| 雷达图班组下拉为空 | `selectTeamList()` 从空的 `score_event` 表读取 | 改为查 `sys_dept` where `dept_type='MANAGER'` |
|
|
|
472
|
+| 文件上传报"not a multipart request" | `axios.defaults.headers['Content-Type']='application/json'` 全局覆盖了 FormData 的 multipart 类型 | 在请求拦截器中检测 `FormData` 时 `delete config.headers['Content-Type']` |
|
|
|
473
|
+
|
|
|
474
|
+### 配分指标体系(128条,2026-04-24 更新版)
|
|
|
475
|
+
|
|
|
476
|
+| 维度 | L2 | L3 | L4 | 叶子节点有分值的示例 |
|
|
|
477
|
+|------|----|----|----|--------------------|
|
|
|
478
|
+| 安全防控 | 6 | 19 | — | 站层级质控-1,不安全事件一类-10,典型查获一类+1 |
|
|
|
479
|
+| 服务响应 | 4 | 8 | — | 旅客服务投诉-2,服务监察航站楼-1.2 |
|
|
|
480
|
+| 业务实操 | 6 | 10 | — | 季度考试补考-2(阶梯),考试成绩≥98+5 |
|
|
|
481
|
+| 作风践行 | 7 | 10 | — | 全勤+5,旷工-10,打架斗殴-10 |
|
|
|
482
|
+| 群团协作 | 5 | 14 | 37 | 个人荣誉站层级一等奖+6,新闻发表+1 |
|
|
|
483
|
+| 身心调节 | 2 | — | — | 规则待定 |
|
|
|
484
|
+
|
|
|
485
|
+> SQL 见 `sql/score.sql`,指标 ID 规则:L2=11~62,L3=111~552,L4=1211~1522
|
|
|
486
|
+
|
|
|
487
|
+### 数据库更新步骤(测试服务器)
|
|
|
488
|
+
|
|
|
489
|
+```sql
|
|
|
490
|
+-- 1. 执行 sql/ledger.sql 建15张台账表
|
|
|
491
|
+-- 2. 执行 sql/ledger_alter_columns.sql 扩展列长度
|
|
|
492
|
+-- 3. 更新维度权重(已有数据时)
|
|
|
493
|
+UPDATE score_dimension SET weight=10.00 WHERE name='业务实操能力';
|
|
|
494
|
+UPDATE score_dimension SET weight=15.00 WHERE name='群团协作能力';
|
|
|
495
|
+-- 4. 清空并重建指标
|
|
|
496
|
+DELETE FROM score_indicator;
|
|
|
497
|
+-- 执行 score.sql 中三段 INSERT INTO score_indicator
|
|
|
498
|
+-- 5. 执行 sql/menu_ledger_score.sql
|
|
|
499
|
+-- 6. 执行 sql/menu_radar.sql
|
|
|
500
|
+-- 7. 角色管理中分配新菜单权限
|
|
|
501
|
+```
|