Files
JY1.0/docs/立库/JY1.0-立库详细界面功能说明书.md

673 lines
16 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# JY1.0 立库详细界面功能说明书
## 1. 文档目的
本文档用于整理 JY1.0 项目中“立库查询/立库可视化”组件目前已经实现的界面结构、后端数据来源、交互逻辑和现有功能范围,便于后续培训、验收、维护和功能扩展。
本文档依据当前前端实现整理,核心代码位置如下:
- `src/views/WarehouseManagement/WarehouseVisualization/index.vue`
- `static/config.js`
## 2. 页面定位
立库详细界面当前对应的页面名称为:
- 页面组件名:`WarehouseVisualizationSystem`
- 页面标签名:`立库可视化`
- 目录位置:`src/views/WarehouseManagement/WarehouseVisualization/index.vue`
该页面用于展示立体仓库库位占用情况,并支持按巷道查看、按行层筛选、单击库位查看库位详情或物料明细。
## 3. 页面总体结构
**图 1立库可视化主界面**
![立库可视化主界面](assets/warehouse-visualization/main.png)
页面整体采用标准的 `div.app-container + el-card` 布局,主体包含以下区域:
1. 顶部筛选与操作区
2. 统计信息卡片区
3. 状态图例区
4. 立库可视化表格区
5. 分页区
6. 库位详情弹窗
7. 物料信息弹窗
当前页面只有一个主标签页:
- `立库可视化`
代码中保留了图表分析相关逻辑,但当前模板中未实际启用“分析”页签。
## 4. 顶部筛选与操作区说明
**图 2筛选区与显示模式切换示意**
![筛选区与显示模式切换](assets/warehouse-visualization/filter.png)
顶部区域已经实现以下控件:
### 4.1 巷道筛选
控件类型:`el-select`
可选项固定为:
- 第一巷道
- 第二巷道
- 第三巷道
- 第四巷道
对应值为:
- `1`
- `2`
- `3`
- `4`
用途:
- 用户选择巷道后,点击“搜索”,页面会调用立库接口重新获取该巷道数据。
### 4.2 行层筛选
控件类型:`el-select`
用途:
- 根据当前已加载的立库数据,自动生成“行-层”下拉选项。
- 用户可筛选某一行层,只显示对应行数据。
特点:
- 选项从接口返回数据动态提取。
- 会自动去重。
- 按数值倒序排列。
### 4.3 搜索按钮
按钮文字:`搜索`
作用:
- 重置当前页码为第一页。
- 先执行前端筛选。
- 再根据当前巷道值调用 `GetPosition` 获取最新立库数据。
说明:
- 当前“搜索”动作的核心是按巷道重新取数。
- 代码里存在 `searchKeyword` 变量,但页面上没有对应输入框,因此当前没有“按列关键字搜索”的实际入口。
### 4.4 重置按钮
按钮文字:`重置`
作用:
- 清空状态筛选值
- 清空行层筛选值
- 清空搜索关键字
- 页码回到第一页
- 重新执行前端筛选
页面提示:
- 执行后弹出“筛选条件已重置”。
注意:
- 当前重置不会主动重新按巷道取数,只是重置前端筛选状态。
### 4.5 刷新数据按钮
按钮文字:`刷新数据`
作用:
- 触发加载动画
- 500ms 后重新装载当前 `defaultWarehouseData`
- 更新时间戳
- 弹出“数据刷新成功”
说明:
- 刷新逻辑最终仍依赖最近一次 `GetPosition` 返回并写入的 `defaultWarehouseData`
- 如果前面已经切换过巷道,刷新展示的是当前缓存的该次结果。
### 4.6 显示模式切换开关
控件类型:`el-switch`
两种模式:
- 显示文字:`text`
- 显示图标:`icon`
作用:
- 控制库位单元格显示简称文字还是图标。
切换效果:
- 文字模式显示:`物 / 盘 / 空 / 锁`
- 图标模式显示:
- 锁库:`el-icon-lock`
- 有物料有托盘:`el-icon-box`
- 有托盘无物料:`el-icon-tickets`
- 空库位:`el-icon-minus`
页面提示:
- 切换后会提示当前已切换到文字模式或图标模式。
## 5. 统计信息卡片区说明
页面中部已实现 6 个统计卡片:
### 5.1 总库位数
计算方式:
- `立库行数 * 列数`
### 5.2 有物料有托盘
统计状态值为 `2` 的库位数量。
### 5.3 有托盘无物料
统计状态值为 `1` 的库位数量。
### 5.4 空闲库位
统计状态值为 `0` 的库位数量。
### 5.5 使用率
计算方式:
- `(有物料有托盘 + 有托盘无物料) / 总库位数 * 100%`
保留 1 位小数。
### 5.6 数据行数
显示当前 `warehouseData.length`,即当前已加载的立库行数。
## 6. 状态图例说明
页面已实现状态图例,用于帮助用户理解库位颜色含义:
- 绿色:有物料有托盘
- 橙色:有托盘无物料
- 灰色:空库位
- 蓝色边框:当前选中库位
另外,代码中还支持:
- 蓝色底:锁库(状态值 `9`
该状态在单元格样式和状态文字中已实现,但图例区未单独展示“锁库”说明。
## 7. 立库可视化表格区说明
这是页面的核心区域。
### 7.1 展示形式
页面使用原生 `table` 绘制立库矩阵,不是 `el-table`
结构包含:
- 表头列号
- 左侧行层标识
- 中间库位矩阵单元格
### 7.2 行列组织方式
#### 行
每一行对应一个“行-层”值,例如:
- `01-01`
- `03-12`
页面左侧固定显示该行层编号。
#### 列
每列按照数字列号展示,从 `1``columnCount`
`columnCount` 的计算规则为:
- 读取首行对象字段
- 排除 `行-层`
- 其余字段个数即为列数
### 7.3 单元格状态值
当前库位单元格支持以下状态:
| 状态值 | 含义 | 前端显示简称 | 颜色 |
| --- | --- | --- | --- |
| `0` | 空库位 | 空 | 灰色 |
| `1` | 有托盘无物料 | 盘 | 橙色 |
| `2` | 有物料有托盘 | 物 | 绿色 |
| `9` | 锁库/在存取 | 锁 | 蓝色 |
### 7.4 单元格交互效果
当前已实现以下交互:
- 鼠标悬停单元格时放大
- 鼠标悬停显示状态浮层
- 点击后高亮选中库位
- 点击后高亮整行对应的行层
- 点击某列后,对应列表头也会高亮
### 7.5 空数据处理
`warehouseData.length === 0` 时,页面显示空白占位区域。
说明:
- 代码里曾预留 `el-empty` 结构,但目前已注释,没有实际“暂无数据”文案和“加载示例数据”按钮。
## 8. 分页功能说明
页面底部已实现分页控件,条件为:
- `totalPages > 1` 时显示
分页能力包括:
- 查看总数
- 切换每页条数
- 上一页/下一页
- 页码跳转
- 直接输入页码跳转
每页可选条数:
- `5`
- `8`
- `10`
- `15`
说明:
- 分页针对的是“行数据”,不是单元格。
- 也就是一次显示若干个“行-层”。
## 9. 库位详情弹窗说明
**图 3库位详情弹窗示意**
![库位详情弹窗](assets/warehouse-visualization/detail.png)
点击非物料状态库位时,会弹出“库位详情”窗口。
触发条件:
- 单元格状态不等于 `2`
### 9.1 弹窗标题
格式:
- `库位详情 + 库位编号`
例如:
- `库位详情 03-12-01`
### 9.2 弹窗内容
当前弹窗内容为库位状态说明文本,即 `selectedCellDetail.description`
不同状态说明如下:
- `0`:空闲库位,可存放物料
- `1`:有托盘但无物料,需补充物料
- `2`:有托盘且有物料,正常使用中
- `9`:在存取,库位已锁
### 9.3 当前实现特点
目前该弹窗属于轻量说明弹窗,展示内容较简洁,没有进一步展示:
- 仓库编号
- 创建时间
- 最近操作人
- 任务锁定来源
这些字段在前端对象构造里有部分预留,但未在弹窗模板中完整展示。
## 10. 物料信息弹窗说明
**图 4物料信息弹窗示意**
![物料信息弹窗](assets/warehouse-visualization/material.png)
点击状态为 `2` 的库位时,会弹出“库位信息”窗口。
触发条件:
- 单元格状态等于 `2`
### 10.1 弹窗标题
格式:
- `库位信息 + pno`
即使用返回数据第一条的库位编号作为标题显示。
### 10.2 数据来源
点击单元格后会调用 `StockDetail(rowLayer, column)`,查询数据库视图:
- `StockDetailView`
查询方式为手写 SQL
- `select ... from StockDetailView where pno='xx-xx-xx'`
### 10.3 库位编号拼接规则
点击单元格时,前端会把界面上的 `行-层` 和列号转换为后端查询用的 `pno`
1. 将列号补足 2 位
2.`行-层``-` 拆分
3.`行-列-层` 重新拼装
例如:
- 页面行层:`03-01`
- 点击列:`12`
- 后端查询编码:`03-12-01`
### 10.4 弹窗字段
当前弹窗表格已展示以下字段:
- 物料编号 `mno`
- 物料名称 `mname`
- 图号 `spec`
- 型号 `thao`
- 库存数量 `qty`
- 锁定库存 `lockqty`
- 批次 `batch`
其中数量字段已实现:
- 保留三位小数格式化
- 大于 0 时显示强调色
- 在数量下方显示单位 `munit`
### 10.5 返回数据兼容处理
前端对接口返回做了多种兼容判断,支持以下几类格式:
1. `response.data` 直接就是数组
2. `response.data.data` 是数组
3. `response.data.rows` 是数组
4. `response.data` 是单对象,且对象里包含 `mno``pno`
说明:
- 这意味着当前页面对后端返回结构的容错较强。
### 10.6 无数据提示
如果接口无返回数据,则提示:
- `未查询到数据`
## 11. 后端接口与数据来源说明
当前页面实际对接了两类立库相关数据。
### 11.1 立库布局/状态数据
请求方法:
- `GetPosition(hang)`
请求构造:
- `this.CreateData('11', 'GetPositionView', param)`
参数内容:
- `hang`:巷道编号
- `potvar`:空字符串
- `tt`:固定值 `1`
调用方式:
- `this.ExecDatabase1(Data)`
返回结果用途:
- 写入 `defaultWarehouseData`
- 再触发 `refreshData()`
- 最终更新主界面矩阵
### 11.2 库位物料明细数据
请求方法:
- `StockDetail(rowLayer, column)`
请求方式:
- 直接构造 SQL 查询 `StockDetailView`
调用方式:
- `this.ExecDatabase1(Data)`
返回结果用途:
- 写入 `materialInfoList`
- 打开物料信息弹窗
### 11.3 接口地址配置
立库接口使用独立配置地址:
- `static/config.js`
- `url1 = http://192.168.1.27:10006`
- `request_config1 = url1 + '/submit/MESCommonBase.ashx'`
说明:
- 这表明立库数据并未走默认 MES 主接口,而是走单独的立库数据库服务入口。
## 12. 已实现功能清单
基于当前页面代码,已经实现并可确认的功能如下。
### 12.1 页面展示类功能
- 立库矩阵可视化展示
- 行层与列号展示
- 库位状态颜色区分
- 文字/图标两种展示模式切换
- 统计卡片展示
- 状态图例展示
- 分页展示
### 12.2 数据查询类功能
- 默认加载立库数据
- 按巷道重新查询立库数据
- 点击状态为 `2` 的库位查询物料明细
- 点击非 `2` 状态库位查看库位状态说明
### 12.3 筛选与交互类功能
- 按行层筛选
- 点击搜索按钮重新按巷道加载
- 重置筛选条件
- 刷新当前缓存数据
- 鼠标悬停显示状态提示
- 单元格选中高亮
- 行高亮
- 列高亮
### 12.4 数据展示增强功能
- 数量保留 3 位小数
- 锁定库存单独显示
- 单位显示
- 物料列表支持多条记录显示
- 接口返回结构兼容处理
## 13. 代码中存在但当前未完整启用的能力
以下能力在代码中已有部分实现或预留,但从当前模板和实际入口看,尚未完整开放为可见功能。
### 13.1 状态筛选
页面 `data` 中存在:
- `statusFilter`
筛选逻辑中也保留了状态筛选分支,但顶部没有对应状态下拉框,因此用户当前无法直接按状态筛选。
### 13.2 关键字搜索
页面 `data` 中存在:
- `searchKeyword`
并保留了按列搜索的逻辑入口,但模板中没有对应输入框,因此当前不构成实际功能。
### 13.3 图表分析功能
代码中已实现:
- 状态分布饼图
- 行列使用率图
- ECharts 初始化与销毁
但模板中没有对应图表容器,也没有实际启用 `warehouse-analysis` 页签,因此当前属于预留代码。
### 13.4 数据导出功能
代码中已实现 `exportWarehouseData()`,可以把当前 `warehouseData` 导出为 JSON 文件。
但当前页面模板没有挂出“导出”按钮,因此用户在界面上无法直接使用。
### 13.5 打印报表功能
代码中存在 `printWarehouseReport()`,但当前只是提示“功能开发中”,没有实际打印逻辑。
### 13.6 物料标签打印
代码中存在 `printMaterialInfo()`,当前同样仅提示“功能开发中”。
### 13.7 焦点定位功能
代码中存在 `focusOnCell(rowLayer, column)`,可自动滚动到指定单元格位置。
但当前页面没有表格明细区或其他入口去调用它,因此属于预留能力。
## 14. 现有业务规则总结
从当前实现可归纳出以下业务规则。
### 14.1 单元格状态规则
- `2` 代表该库位已有物料,应进入物料明细查询流程
-`2` 状态不查物料,进入库位说明流程
- `9` 表示库位正在存取或已锁定
### 14.2 巷道数据规则
- 页面默认在 `mounted` 时调用 `GetPosition(1)`,默认先加载第一巷道
- 用户再通过顶部选择器切换其他巷道
### 14.3 编码转换规则
界面展示编码与后端查询编码不是同一个结构:
- 界面主要使用 `行-层`
- 后端明细查询使用 `行-列-层`
因此点击库位时必须做一次编号重组。
## 15. 使用流程说明
典型操作流程如下:
1. 打开立库可视化页面
2. 系统默认加载第一巷道数据
3. 页面显示统计信息、图例和库位矩阵
4. 用户可切换巷道并点击“搜索”
5. 用户可按“行-层”筛选关注区域
6. 用户可切换文字/图标显示模式
7. 鼠标悬停可查看库位状态提示
8. 点击空库位/托盘位/锁定位,查看库位说明
9. 点击有物料库位,查看该库位物料明细
10. 需要恢复视图时可点击“重置”或“刷新数据”
## 16. 当前界面优点
从现有实现看,该页面已经具备以下优点:
- 视觉上能直接反映立库占用状态
- 巷道切换清晰
- 物料库位点击查询路径明确
- 状态颜色和图标表达直观
- 对后端返回结构适配较灵活
- 前端交互响应比较轻量
## 17. 当前界面限制
从代码现状看,也存在一些限制:
- 状态筛选未开放界面入口
- 关键字搜索未开放界面入口
- 导出功能未开放按钮
- 图表分析功能未在页面中启用
- 空数据时缺少明确提示文案
- 锁库状态没有放入图例区
- 库位详情弹窗信息量偏少
- 刷新逻辑更多是前端缓存刷新,不是强制重新拉取所有条件数据
## 18. 维护与扩展建议
如果后续继续完善该页面,建议优先考虑以下方向:
1. 增加状态筛选下拉框,补齐 `statusFilter` 实际入口
2. 增加库位搜索输入框,支持直接定位 `行-层-列`
3. 在界面上开放“导出 JSON”按钮
4. 补上锁库状态图例
5. 完善空数据占位提示
6. 把图表分析页签正式接入模板
7. 在库位详情弹窗中增加更多业务字段
8. 将明细查询 SQL 封装为标准后端接口名,减少前端直接拼 SQL 的耦合
## 19. 结论
当前“立库详细界面”已经不是简单静态展示,而是一个具备实际业务查询能力的立库可视化页面。它已经实现了:
- 按巷道加载立库状态
- 立库矩阵可视化展示
- 库位状态识别
- 库位详情查看
- 库位物料明细查询
- 筛选、分页、刷新、显示模式切换等基础交互
同时,代码中还保留了导出、图表分析、状态筛选、定位等扩展能力,说明该页面已经具备进一步升级为完整“立库监控与查询中心”的基础。