更新采购订单、发货、合同查询、盘点、入库和配置文件,新增零改单和文档

This commit is contained in:
Developer
2026-06-26 08:13:30 +08:00
parent 0c8c6587bd
commit bb30ba76d0
21 changed files with 3290 additions and 50 deletions

View File

@@ -0,0 +1,672 @@
# 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. 结论
当前“立库详细界面”已经不是简单静态展示,而是一个具备实际业务查询能力的立库可视化页面。它已经实现了:
- 按巷道加载立库状态
- 立库矩阵可视化展示
- 库位状态识别
- 库位详情查看
- 库位物料明细查询
- 筛选、分页、刷新、显示模式切换等基础交互
同时,代码中还保留了导出、图表分析、状态筛选、定位等扩展能力,说明该页面已经具备进一步升级为完整“立库监控与查询中心”的基础。