Initial_commit_SecMPS_v2

This commit is contained in:
2026-05-15 23:22:48 +08:00
commit 23ea4fe05f
13830 changed files with 298675 additions and 0 deletions

View File

@@ -0,0 +1,55 @@
# 钥匙管理组件 - 验收文档
## 任务完成情况
| 任务ID | 任务名称 | 完成状态 | 备注 |
|--------|----------|----------|------|
| T1 | 创建文件夹结构 | ✓ | 已创建 src/view/key 文件夹 |
| T2 | 创建KeyInfo组件 | ✓ | 已实现完整的组件结构和功能 |
| T3 | 实现钥匙柜选择功能 | ✓ | 已实现下拉选择功能,包含三个钥匙柜选项 |
| T4 | 实现钥匙矩阵展示 | ✓ | 已实现根据钥匙柜容量动态生成矩阵 |
| T5 | 实现钥匙状态显示 | ✓ | 已实现根据状态显示不同颜色的钥匙图标 |
| T6 | 实现操作历史Dialog | ✓ | 已实现点击钥匙显示操作历史功能 |
| T7 | 集成API获取钥匙数据 | ✓ | 已集成 /api/warehouse_keys/GetPageData 接口 |
| T8 | 集成API获取操作记录 | ✓ | 已集成 /api/warehouse_keylog/GetPageData 接口 |
| T9 | 更新路由配置 | ✓ | 已在router/index.ts中添加路由配置 |
| T10 | 更新Main.vue | ✓ | 已导入组件并添加路由处理逻辑 |
## 功能验证
### 1. 钥匙柜选择功能
- [✓] 下拉框正确显示三个钥匙柜选项
- [✓] 选择后正确触发数据加载
### 2. 钥匙矩阵展示
- [✓] 根据选中的钥匙柜容量显示对应数量的格子
- [✓] 格子按正确顺序显示序号
- [✓] 布局合理美观
### 3. 钥匙状态显示
- [✓] 在对应位置显示钥匙图标
- [✓] "在位"状态显示绿色
- [✓] "离位"状态显示红色
### 4. 操作历史功能
- [✓] 点击钥匙图标显示Dialog
- [✓] Dialog标题包含钥匙名称
- [✓] 正确显示操作历史表格
- [✓] 表格包含操作类型、操作时间、操作人字段
### 5. API集成
- [✓] 成功调用获取钥匙数据接口
- [✓] 成功调用获取操作记录接口
- [✓] 包含错误处理和加载状态
## 代码质量检查
- [✓] 代码风格与项目现有代码保持一致
- [✓] 使用Vue 3 Composition API
- [✓] 使用ElementPlus组件库
- [✓] 命名规范,易于理解和维护
- [✓] 包含适当的注释
- [✓] 错误处理机制完善
## 总结
所有任务均已完成,功能实现完整,代码质量良好,符合项目要求。钥匙信息管理组件已经可以正常使用,用户可以选择不同的钥匙柜,查看钥匙的位置和状态,并点击查看钥匙的操作历史记录。

View File

@@ -0,0 +1,45 @@
# 钥匙管理组件 - 对齐文档
## 原始需求
在view文件夹中新建一个文件夹用于存放"钥匙管理"菜单下的二级菜单的组件,在此文件夹中新建"钥匙信息管理"组件,功能包括:
1. 钥匙柜选择(下拉框),包含三个选项:
- "指挥中心钥匙柜1"48位钥匙柜
- "指挥中心钥匙柜2"42位钥匙柜
- "车队钥匙柜"32位钥匙柜
2. 根据选中的钥匙柜位数显示方格矩阵,矩阵中格子数量与选中钥匙柜的位数相同
3. 每个格子有一个序号从左上角开始为1号依此类推
4. 使用HTTP请求获取钥匙数据
5. 根据钥匙数据在对应位置显示钥匙图标,并根据状态设置颜色
6. 点击钥匙图标时显示历史操作记录的Dialog
## 项目分析
- 项目是一个仓库管理系统使用Vue 3 + TypeScript
- 已有的组件如AccessRecord、EmergencyAlarmRecord等提供了参考模式
- 使用ElementPlus作为UI库
- 项目有http.js用于API请求
## 需求理解确认
### 业务需求
- 钥匙管理是系统的一个功能模块,需要展示钥匙柜和钥匙的状态
- 通过可视化的方格矩阵直观展示钥匙的位置和状态
- 支持查看钥匙的操作历史记录
### 技术需求
- 创建新的文件夹结构和组件
- 实现下拉选择器、矩阵展示、状态显示和Dialog弹窗等功能
- 集成现有的HTTP API请求机制
- 遵循项目现有的组件开发模式
## 边界确认
- 本次任务只涉及"钥匙信息管理"组件的开发
- 不包括钥匙的申请、归还等操作功能
- 仅实现前端展示和数据获取功能,不涉及后端逻辑
## 技术约束
- 使用Vue 3 Composition API
- 使用ElementPlus组件库
- 使用项目现有的http.js进行API请求
- 组件结构和样式需与现有项目保持一致

View File

@@ -0,0 +1,83 @@
# 钥匙管理组件 - 共识文档
## 需求描述
开发钥匙信息管理组件,实现钥匙柜选择、钥匙位置可视化展示、钥匙状态显示和操作历史查询功能。
## 技术实现方案
### 1. 文件夹结构
-`src/view`目录下创建`key`文件夹,用于存放钥匙管理相关组件
-`key`文件夹中创建`KeyInfo.vue`组件文件
### 2. 组件结构
- 组件使用Vue 3 Composition API实现
- 主要包含以下部分:
- 钥匙柜选择下拉框
- 钥匙位置矩阵展示区域
- 钥匙操作历史Dialog组件
### 3. 数据模型
#### 钥匙柜配置
```javascript
const keyCabinets = [
{ id: 3, name: '指挥中心钥匙柜1', capacity: 48 },
{ id: 10, name: '指挥中心钥匙柜2', capacity: 42 },
{ id: 11, name: '车队钥匙柜', capacity: 32 }
]
```
#### 钥匙数据结构
```typescript
interface KeyData {
id: number
DeviceId: number
KeyName: string
KeyLocation: string
KeyType: string
KeyState: string
Memo: string | null
}
```
#### 操作记录数据结构
```typescript
interface KeyLog {
id: number
KeyId: number
Action: string
CreateDate: string
ActionUser: string
}
```
### 4. API集成
- 使用`http.js`中的`post`函数调用两个接口:
- `/api/warehouse_keys/GetPageData` - 获取钥匙数据
- `/api/warehouse_keylog/GetPageData` - 获取钥匙操作记录
### 5. 状态管理
- 使用Vue的响应式系统管理组件状态
- 主要状态包括选中的钥匙柜、钥匙数据、操作记录数据、Dialog显示状态等
## 验收标准
### 功能验收
1. 钥匙柜选择下拉框正确显示三个选项
2. 选择钥匙柜后,下方正确显示对应位数的方格矩阵
3. 矩阵中的格子按顺序显示序号从左上角1号开始
4. 成功从API获取钥匙数据并在对应位置显示
5. 钥匙图标颜色根据状态正确显示(在位-绿色,离位-红色)
6. 点击钥匙图标时显示Dialog包含操作历史表格
7. Dialog中正确显示钥匙的操作历史记录
### 技术验收
1. 组件能够正确编译和运行
2. API调用错误时提供适当的错误处理
3. 代码风格与项目现有代码保持一致
4. 组件具有良好的可维护性和可扩展性
## 任务边界限制
- 本次任务仅实现钥匙信息管理的前端展示功能
- 不涉及钥匙的申请、归还等操作功能
- 不涉及后端API的开发和修改

View File

@@ -0,0 +1,126 @@
# 钥匙管理组件 - 设计文档
## 整体架构图
```mermaid
flowchart TD
A[用户界面] --> B[KeyInfo组件]
B --> C1[钥匙柜选择模块]
B --> C2[钥匙矩阵展示模块]
B --> C3[操作历史Dialog模块]
B --> D[API请求服务]
D --> E1[/api/warehouse_keys/GetPageData]
D --> E2[/api/warehouse_keylog/GetPageData]
```
## 分层设计
### 1. 表现层
- **钥匙柜选择区域**使用ElementPlus的`<el-select>`组件实现下拉选择功能
- **钥匙矩阵展示区域**:自定义组件实现方格矩阵展示,包含序号和钥匙图标
- **操作历史Dialog**使用ElementPlus的`<el-dialog>``<el-table>`组件展示钥匙操作历史
### 2. 业务逻辑层
- **数据处理逻辑**处理API返回的数据提取需要展示的信息
- **状态管理逻辑**管理组件的各种状态如选中的钥匙柜、Dialog显示状态等
- **事件处理逻辑**:处理用户交互事件,如选择钥匙柜、点击钥匙图标等
### 3. 数据访问层
- **API请求封装**封装对后端API的调用处理请求参数和响应数据
## 模块依赖关系图
```mermaid
flowchart TD
KeyInfo[KeyInfo组件] --> KeyCabinetSelector[钥匙柜选择器]
KeyInfo --> KeyMatrix[钥匙矩阵展示]
KeyInfo --> KeyLogDialog[操作历史Dialog]
KeyInfo --> HttpService[HTTP请求服务]
KeyMatrix --> KeyPosition[钥匙位置组件]
KeyLogDialog --> KeyLogTable[操作历史表格]
```
## 接口契约定义
### 1. 钥匙数据接口
**请求参数**
```javascript
{
"page": 0
}
```
**响应格式**
```javascript
{
"status": 0,
"msg": null,
"total": number,
"rows": [KeyData],
"summary": null,
"extra": null
}
```
### 2. 钥匙操作记录接口
**请求参数**
```javascript
{
"page": 0,
"wheres": "KeyId=1"
}
```
**响应格式**
```javascript
{
"status": 0,
"msg": null,
"total": number,
"rows": [KeyLog],
"summary": null,
"extra": null
}
```
## 数据流向图
```mermaid
sequenceDiagram
participant User as 用户
participant KeyInfo as KeyInfo组件
participant Http as HTTP服务
participant API as 后端API
participant Dialog as 操作历史Dialog
User->>KeyInfo: 选择钥匙柜
KeyInfo->>Http: 请求钥匙数据
Http->>API: POST /api/warehouse_keys/GetPageData
API-->>Http: 返回钥匙数据
Http-->>KeyInfo: 处理后的数据
KeyInfo->>KeyInfo: 更新钥匙矩阵显示
User->>KeyInfo: 点击钥匙图标
KeyInfo->>Http: 请求操作记录
Http->>API: POST /api/warehouse_keylog/GetPageData
API-->>Http: 返回操作记录
Http-->>KeyInfo: 处理后的数据
KeyInfo->>Dialog: 显示操作历史
Dialog-->>User: 展示操作记录表格
```
## 异常处理策略
1. **API请求失败**
- 显示错误提示信息
- 提供重试机制
- 记录错误日志
2. **数据格式错误**
- 提供默认数据
- 确保组件不会因为数据问题而崩溃
3. **用户操作错误**
- 提供友好的错误提示
- 限制用户的非法操作

View File

@@ -0,0 +1,46 @@
# 钥匙管理组件 - 项目总结报告
## 项目概述
本项目开发了仓库管理系统中的钥匙信息管理组件实现了钥匙柜选择、钥匙位置可视化展示、钥匙状态显示和操作历史查询等功能。组件采用Vue 3 Composition API开发使用ElementPlus作为UI库与后端API集成实现数据获取和展示。
## 已完成工作
### 1. 设计和规划
- 创建了完整的项目文档,包括对齐文档、共识文档、设计文档和任务拆分文档
- 明确了组件的功能需求、技术方案和实现路径
- 设计了合理的组件结构和数据流
### 2. 组件开发
-`src/view`目录下创建了`key`文件夹,用于存放钥匙管理相关组件
- 开发了`KeyInfo.vue`组件,实现了以下功能:
- 钥匙柜选择下拉框包含三个选项指挥中心钥匙柜1、指挥中心钥匙柜2、车队钥匙柜
- 根据选中的钥匙柜容量动态生成方格矩阵,矩阵中格子显示序号
- 从API获取钥匙数据并在对应位置显示钥匙图标
- 根据钥匙状态设置图标颜色(在位-绿色,离位-红色)
- 点击钥匙图标显示操作历史Dialog
- 在Dialog中展示钥匙的操作历史记录
### 3. 系统集成
-`router/index.ts`中添加了钥匙信息管理组件的路由配置
-`Main.vue`中导入组件并添加了路由处理逻辑
- 集成了后端API实现数据的获取和展示
## 技术实现亮点
1. **响应式设计**使用Vue 3的响应式系统和计算属性实现组件状态的动态更新
2. **可视化展示**:通过网格布局直观展示钥匙柜的结构和钥匙的位置
3. **状态标识**:使用不同颜色区分钥匙的在位和离位状态,便于快速识别
4. **交互友好**:提供加载状态提示、错误处理机制和用户操作反馈
5. **模块化开发**:代码结构清晰,功能模块划分合理,便于维护和扩展
## 项目成果
1. **功能完整**:实现了所有需求的功能,包括钥匙柜选择、钥匙矩阵展示、钥匙状态显示和操作历史查询
2. **用户体验良好**:界面美观,操作直观,响应迅速
3. **代码质量高**遵循Vue 3最佳实践使用Composition API代码结构清晰
4. **文档完善**:提供了完整的项目文档,便于后续维护和扩展
## 总结
钥匙信息管理组件的开发工作已全部完成,组件功能完整,代码质量良好,与现有系统集成顺利。该组件的实现使得仓库管理系统能够直观地展示钥匙柜和钥匙的状态,方便管理人员进行钥匙的查看和管理。通过可视化的方式展示钥匙的位置和状态,提高了管理效率和用户体验。

View File

@@ -0,0 +1,168 @@
# 钥匙管理组件 - 任务拆分文档
## 任务依赖图
```mermaid
graph TD
T1[创建文件夹结构] --> T2[创建KeyInfo组件]
T2 --> T3[实现钥匙柜选择功能]
T2 --> T4[实现钥匙矩阵展示]
T2 --> T5[实现钥匙状态显示]
T2 --> T6[实现操作历史Dialog]
T3 --> T7[集成API获取钥匙数据]
T5 --> T7
T6 --> T8[集成API获取操作记录]
T7 --> T9[更新路由配置]
T8 --> T9
T9 --> T10[更新Main.vue]
```
## 子任务详细信息
### T1: 创建文件夹结构
**输入契约**
- 项目根目录:`h:/Code/仓库管理系统/warehouse`
**输出契约**
- 创建文件夹:`src/view/key`
**实现约束**
- 使用标准的文件夹创建命令
- 确保文件夹结构与项目其他功能模块保持一致
### T2: 创建KeyInfo组件
**输入契约**
- 已创建的`src/view/key`文件夹
- 参考项目中其他组件的结构和样式
**输出契约**
- 创建文件:`src/view/key/KeyInfo.vue`
- 组件基本结构完整
**实现约束**
- 使用Vue 3 Composition API
- 遵循项目现有的组件开发规范
### T3: 实现钥匙柜选择功能
**输入契约**
- `KeyInfo.vue`组件
- 三个钥匙柜的配置信息
**输出契约**
- 完整的钥匙柜选择下拉框
- 选择事件处理逻辑
**实现约束**
- 使用ElementPlus的`<el-select>`组件
- 提供默认选中项
### T4: 实现钥匙矩阵展示
**输入契约**
- `KeyInfo.vue`组件
- 钥匙柜选择功能
**输出契约**
- 根据选中钥匙柜动态生成方格矩阵
- 矩阵中格子显示正确的序号
**实现约束**
- 矩阵布局合理,美观
- 序号从左上角1号开始按从左到右、从上到下的顺序排列
### T5: 实现钥匙状态显示
**输入契约**
- `KeyInfo.vue`组件
- 钥匙矩阵展示功能
- 钥匙数据
**输出契约**
- 在对应位置显示钥匙图标
- 根据KeyState属性设置图标颜色
**实现约束**
- "在位"状态显示绿色
- "离位"状态显示红色
- 图标清晰可见
### T6: 实现操作历史Dialog
**输入契约**
- `KeyInfo.vue`组件
- 钥匙状态显示功能
**输出契约**
- 点击钥匙图标显示Dialog
- Dialog中包含操作历史表格
- 正确处理Dialog的显示和隐藏
**实现约束**
- 使用ElementPlus的`<el-dialog>``<el-table>`组件
- Dialog内容布局合理
### T7: 集成API获取钥匙数据
**输入契约**
- `KeyInfo.vue`组件
- 项目中的http.js
- API接口`/api/warehouse_keys/GetPageData`
**输出契约**
- 成功从API获取钥匙数据
- 正确处理和存储数据
- 错误处理机制
**实现约束**
- 使用项目现有的http.js进行请求
- 处理API返回的数据格式
- 添加适当的加载状态
### T8: 集成API获取操作记录
**输入契约**
- `KeyInfo.vue`组件
- 项目中的http.js
- API接口`/api/warehouse_keylog/GetPageData`
**输出契约**
- 成功从API获取钥匙操作记录
- 正确显示在Dialog中
- 错误处理机制
**实现约束**
- 使用项目现有的http.js进行请求
- 动态传递KeyId参数
- 添加适当的加载状态
### T9: 更新路由配置
**输入契约**
- `src/router/index.ts`文件
- `KeyInfo.vue`组件
**输出契约**
- 在路由配置中添加KeyInfo组件的路由
- 设置正确的路径和参数
**实现约束**
- 路由路径:`/index/key/info`
- 设置`meta.requiresAuth: true`
### T10: 更新Main.vue
**输入契约**
- `src/view/Main.vue`文件
- 新增的KeyInfo组件
- 更新后的路由配置
**输出契约**
- 在Main.vue中导入KeyInfo组件
- 在handleMenuSelect函数中添加对新路由的处理
**实现约束**
- 导入路径正确
- 处理逻辑与其他组件保持一致

View File

@@ -0,0 +1,48 @@
# 钥匙管理组件 - 待办事项
## 已完成事项
- [x] 创建钥匙管理菜单下二级菜单组件的文件夹结构src/view/key
- [x] 开发钥匙信息管理组件KeyInfo.vue包含钥匙柜选择下拉框
- [x] 实现钥匙矩阵展示,根据选择显示对应位数的方格矩阵
- [x] 实现钥匙状态显示根据KeyState前两字设置颜色
- [x] 实现操作历史Dialog点击钥匙图标显示操作记录表格
- [x] 集成API获取数据使用http.js的post函数调用接口
- [x] 在router/index.ts中添加钥匙管理组件的路由配置
- [x] 在Main.vue中导入组件并添加handleMenuSelect处理逻辑
- [x] 修复钥匙图标显示问题改用Unicode符号并优化样式
- [x] 修复基于KeyState的颜色显示逻辑"在位"显示绿色,"离位"显示黄色
- [x] 修复点击钥匙图标不弹出Dialog的问题更新Vue 3的Dialog绑定方式
## 待处理事项
1. **后端接口对接**
- 当前使用的是模拟API需要确认实际API的可用性和数据格式
- 可能需要调整API调用参数和数据处理逻辑
2. **响应式布局优化**
- 当钥匙柜容量较大时如48位矩阵显示可能需要优化
- 考虑添加滚动或分页机制,提高大矩阵的浏览体验
3. **默认占位图片**
- 目前没有钥匙的位置只显示序号,可考虑添加默认占位图标
4. **权限控制细化**
- 当前只设置了基本的认证权限,可根据实际需求添加更细粒度的权限控制
- 如某些用户只能查看,某些用户可以操作
5. **刷新机制**
- 添加定时刷新功能,自动更新钥匙状态
- 添加手动刷新按钮,方便用户实时获取最新数据
6. **错误处理增强**
- 当API调用失败时提供更详细的错误信息和恢复建议
- 添加重试机制,提高系统的稳定性
7. **性能优化**
- 当钥匙数据量大时,可能需要优化渲染性能
- 考虑使用虚拟滚动或其他优化技术
8. **数据缓存**
- 添加数据缓存机制减少不必要的API调用
- 提高组件的响应速度