diff --git a/AGENTS.md b/AGENTS.md index ad60b9d8..301be55d 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -71,3 +71,7 @@ SVG 图标位于 `src/icons/svg/` 目录,通过 `svg-sprite-loader` 自动注 ## 调试与排错 请求拦截器中会检查 Cookie 中的 `id` 是否存在,不存在则强制登出并刷新页面。登录 API(`name` 为 `菜单系统模块_用户名密码_查询数据_new2` 和 `菜单系统模块_获取角色模块_查询数据`)跳过此检查。控制台日志使用 `console.log`,不使用 `console.error` 输出调试信息。Vue Router 的 `replace` 方法已全局捕获异常避免重复导航报错。 + +## GPT/Codex 执行日志 + +每次 GPT/Codex 执行完成后,将完整的执行过程使用日志追加到 `/gptlog-process/gpdlog.md`,日志使用中文。 diff --git a/docs/JY1.0-阶段功能需求文档.md b/docs/JY1.0-阶段功能需求文档.md new file mode 100644 index 00000000..ff9c66c0 --- /dev/null +++ b/docs/JY1.0-阶段功能需求文档.md @@ -0,0 +1,401 @@ +# JY1.0 阶段功能需求文档 + +## 01-文档说明 + +本文档根据当前提出的 7 项业务需求整理,作为后续前端、后端、数据库、测试联调的需求依据。需求内容覆盖默认库位设置、物料编码查询、移动端适配、库存盘点、看板优化、语音播报、质检 PDA 应急扫码能力。 + +本文档为初稿,后续可根据现场确认结果继续补充字段、接口、菜单权限、数据库过程和验收样例。 + +## 02-总体目标 + +1. 优化仓储相关业务流程,减少物料维护页面职责过重的问题。 +2. 提升物料查询效率,在现有查询功能中统一补充物料编码查询能力。 +3. 改善移动端使用体验,支持车间派工在手机或移动终端上自适应展示和操作。 +4. 完善库存盘点、物料系列、库位编辑、入库库位选择等库存基础能力。 +5. 优化现有看板数据展示,并新增仓库、采购等业务看板。 +6. 增加新订单语音播报能力,提升部门电视机、现场广播等场景下的消息触达效率。 +7. 完善质检 PDA 应急方案,在 PDA 设备故障时使用手机扫码保障生产不中断。 + +## 03-需求一:默认库位设置功能调整 + +### 3.1 需求背景 + +当前“设置默认库位”功能位于物料标准维护或物料标准相关页面中,导致物料基础维护页面承载了仓储业务配置职责。为降低页面复杂度,并使库位规则更贴近入库业务,需要将默认库位设置从物料标准维护中移出。 + +### 3.2 功能目标 + +1. 去除物料标准维护中的“设置默认库位”入口和相关操作。 +2. 将默认库位设置功能迁移到其他更合适的仓储组件,或新建“默认库位设置”组件。 +3. 物料入库选择库位时,根据该物料是否存在默认库存或库位库存显示不同的库位范围。 + +### 3.3 业务规则 + +1. 如果物料没有默认库存或没有可识别的默认库位库存,入库时显示全库位选择。 +2. 如果物料已有库存库位,入库时优先显示该物料已有库存的库位选择。 +3. 默认库位设置不再依赖物料标准维护页面完成。 +4. 新组件需要支持按物料编码、物料名称、图号、规格型号等条件查询物料。 +5. 默认库位设置后,应能被物料入库、库存盘点、库存查询等仓储业务读取。 + +### 3.4 前端范围 + +1. 移除物料标准维护页面中的默认库位设置按钮、弹窗和相关方法。 +2. 新增或迁移默认库位设置组件,建议放入仓储管理模块。 +3. 物料入库组件调整库位下拉数据来源: + - 无默认库存时显示全库位。 + - 有库存时显示该物料已有库存库位。 +4. 保持 Vue 2 Options API 和 Element UI 原有开发风格。 + +### 3.5 后端范围 + +1. 梳理现有默认库位相关存储过程、表字段和调用页面。 +2. 根据新组件补充查询、保存、删除默认库位的接口。 +3. 入库库位查询过程需支持按物料返回全库位或已有库存库位。 + +### 3.6 验收标准 + +1. 物料标准维护页面不再出现默认库位设置入口。 +2. 新默认库位设置组件可完成查询、设置、修改、删除。 +3. 物料无库存库位时,入库页面可选择全部库位。 +4. 物料已有库存库位时,入库页面只显示符合规则的库位。 +5. 默认库位变更后,相关仓储页面读取结果一致。 + +## 04-需求二:现有查询功能增加物料编码查询 + +### 4.1 需求背景 + +系统中已有多个物料查询入口,但部分页面只能按物料名称、图号、规格型号等条件查询,无法直接按物料编码定位,影响仓储、销售、技术、装配等场景的查询效率。 + +### 4.2 功能目标 + +1. 在现有涉及物料查询的组件中新增“物料编码”查询条件。 +2. 物料编码查询需要与原有条件组合查询。 +3. 查询结果、导出结果、选择弹窗结果保持一致。 + +### 4.3 覆盖范围 + +优先覆盖以下类型页面: + +| 模块 | 页面或组件类型 | 查询入口 | +| ---- | ------------------- | ---------- | +| 仓储管理 | 库存盘点、库存查询、入库记录、物料库位 | 主列表查询、导出 | +| 仓储管理 | 领料、耗材、入库物料选择 | 物料选择弹窗 | +| 技术中心 | 物料查询、物料维护、图纸确认 | 主列表或物料选择弹窗 | +| 销售管理 | 订单管理、订单审核、订单查询 | 物料选择弹窗 | +| 装配管理 | 接收装配任务、接收滑台装配任务 | 物料选择弹窗 | + +### 4.4 前端规则 + +1. 搜索栏新增 `物料编码` 输入框。 +2. 输入框 placeholder 可使用“物料编码”或“物料编号”,但传参建议统一使用 `物料编码`。 +3. 原有查询按钮、重置按钮、分页查询逻辑保持不变。 +4. 导出功能应同步携带物料编码条件。 +5. 不新增第三方库,不改变现有 `CreateData`、`ExecDatabase`、`getTable` 调用模式。 + +### 4.5 后端规则 + +1. 相关查询存储过程增加可选参数: + - `物料编码_check` + - `物料编码` +2. 未传物料编码时,不影响原有查询结果。 +3. 传入物料编码时,应支持模糊查询或按现场确认规则查询。 +4. 导出过程与页面查询过程保持条件一致。 + +### 4.6 验收标准 + +1. 用户可通过物料编码直接查询目标物料。 +2. 物料编码可与物料名称、图号、规格型号等条件组合查询。 +3. 查询和导出数据一致。 +4. 所有改造页面无模板解析错误、无明显布局错位。 + +## 05-需求三:车间派工组件移动端自适应 + +### 5.1 需求背景 + +车间派工业务需要在移动设备上查看和操作,当前桌面端布局在手机或窄屏设备上可能存在表格过宽、按钮拥挤、筛选条件不易操作等问题。 + +### 5.2 功能目标 + +1. 开发车间派工组件的移动端自适应布局。 +2. 保持桌面端原有操作习惯不受影响。 +3. 移动端重点保证查询、查看、派工、确认等高频操作可用。 + +### 5.3 前端要求 + +1. 使用响应式样式适配手机、平板、窄屏电脑。 +2. 搜索条件在移动端可折叠或纵向排列。 +3. 表格在移动端可采用横向滚动、卡片式列表或核心字段列表展示。 +4. 操作按钮在移动端需要保证可点击区域足够,不出现文字挤压。 +5. 弹窗在移动端宽度应适配屏幕,不应超出视口。 +6. 不引入 Vue 3、Composition API 或新的 UI 库。 + +### 5.4 重点场景 + +1. 手机查看待派工任务。 +2. 手机按订单、物料、工序、人员等条件筛选。 +3. 手机进入派工明细并提交。 +4. 手机查看派工状态、数量、人员、设备等关键字段。 + +### 5.5 验收标准 + +1. 375px、414px、768px、1366px 宽度下页面可正常展示。 +2. 移动端无关键按钮遮挡、重叠、不可点击问题。 +3. 桌面端布局保持稳定。 +4. 派工提交、查询、刷新等原有功能正常。 + +## 06-需求四:库存盘点及物料系列、库位编辑优化 + +### 6.1 需求背景 + +库存盘点需要更细粒度筛选物料,并支持对盘点库位进行维护。当前盘点和入库库位选择逻辑需要与物料库存库位更紧密关联。 + +### 6.2 功能目标 + +1. 新增“系列”字段,用于物料筛选和盘点筛选。 +2. 在物料维护组件中支持编辑物料系列。 +3. 库存盘点组件增加按系列筛选物料和库存的能力。 +4. 库存盘点组件添加编辑库位功能。 +5. 物料入库组件的库位选择只显示有该物料的库位。 + +### 6.3 物料维护要求 + +1. 物料维护列表展示“系列”字段。 +2. 新增、编辑物料时可维护“系列”。 +3. 系列字段建议使用中文字段名 `系列`。 +4. 系列可根据现场数据情况使用输入框或下拉框。 + +### 6.4 库存盘点要求 + +1. 搜索栏增加“系列”筛选条件。 +2. 支持按系列查询物料盘点数据。 +3. 支持按系列查询库存盘点数据。 +4. 表格展示需要包含系列字段,便于盘点人员核对。 +5. 增加编辑库位功能,可调整物料对应盘点库位。 + +### 6.5 物料入库要求 + +1. 入库时选择库位只显示有该物料的库位。 +2. 如果该物料没有任何库存库位,需要结合需求一规则显示全库位或默认库位候选。 +3. 库位下拉数据需要避免显示与该物料无关且容易误选的库位。 + +### 6.6 后端要求 + +1. 物料基础表或相关视图增加 `系列` 字段。 +2. 物料维护查询、新增、编辑过程支持系列字段。 +3. 库存盘点查询过程支持系列筛选。 +4. 库位编辑过程需要记录修改人、修改时间。 +5. 入库库位查询过程按物料库存库位过滤。 + +### 6.7 验收标准 + +1. 物料维护可新增和编辑系列字段。 +2. 库存盘点可按系列筛选数据。 +3. 库存盘点可编辑库位,并保存成功。 +4. 物料入库库位选择符合“只显示该物料相关库位”的规则。 +5. 相关查询、保存后刷新数据一致。 + +## 07-需求五:看板优化 + +### 7.1 需求背景 + +现场看板需要更清晰地展示仓库、采购、订单、库存等业务状态。现有看板需要数据口径优化,同时新增部分业务看板。 + +### 7.2 功能目标 + +1. 新增仓库看板组件。 +2. 新增或优化采购看板组件。 +3. 优化现有看板的数据口径、展示字段和刷新方式。 +4. 仓库看板展示入库单滚动信息。 +5. 采购看板展示仍在采购中的合同。 + +### 7.3 仓库看板要求 + +1. 展示入库单滚动列表。 +2. 滚动内容建议包括入库单号、供应商、物料名称、物料编码、数量、入库日期、状态。 +3. 支持自动刷新,刷新频率需现场确认。 +4. 大屏展示时文字清晰,不出现字段重叠。 +5. 支持异常状态突出显示,例如待处理、待上架、未完成。 + +### 7.4 采购看板要求 + +1. 展示仍在采购中的合同。 +2. 合同状态口径需要明确,例如未完成、采购中、部分到货、逾期未到。 +3. 建议展示合同号、供应商、物料、数量、已到数量、未到数量、交期、状态。 +4. 对逾期或临近交期的数据进行醒目提示。 + +### 7.5 现有看板优化要求 + +1. 梳理现有看板数据来源和字段含义。 +2. 对不准确、不及时或口径不一致的数据进行调整。 +3. 保持大屏自适应显示效果。 +4. 对滚动、刷新、排序、状态颜色做统一规范。 + +### 7.6 验收标准 + +1. 仓库看板可滚动展示入库单数据。 +2. 采购看板可展示采购中的合同。 +3. 现有看板数据口径与业务确认一致。 +4. 大屏展示无明显错位、遮挡、空白异常。 +5. 自动刷新不影响页面稳定性。 + +## 08-需求六:语音播报 + +### 8.1 需求背景 + +当系统产生新的订单或重要业务消息时,需要在部门电视机或全场广播中自动播报,类似商家外卖新订单语音提醒,减少人工盯屏和漏看消息。 + +### 8.2 功能目标 + +1. 新订单产生时触发语音播报。 +2. 支持部门电视机播报或全场广播播报。 +3. 播报内容简洁明确,便于现场人员快速理解。 +4. 后续可扩展到采购到货、异常提醒、质检任务等事件。 + +### 8.3 播报场景 + +1. 新订单生成。 +2. 新订单分配到指定部门。 +3. 订单状态发生关键变化。 +4. 后续可扩展为库存预警、采购逾期、质检待处理等。 + +### 8.4 播报内容建议 + +新订单播报示例: + +```text +您有新的生产订单,请及时处理。订单号:XXXX,客户:XXXX,数量:XXXX。 +``` + +部门播报示例: + +```text +技术中心有新的图纸确认任务,请及时处理。 +``` + +### 8.5 技术要求 + +1. 前端可使用浏览器语音能力或播放预生成音频。 +2. 如果用于电视机浏览器,需要确认浏览器是否允许自动播放声音。 +3. 如果接入全场广播,需要确认广播设备是否支持网页音频输入、接口触发或本地客户端转发。 +4. 新消息检测可采用轮询、WebSocket 或已有消息接口。 +5. 需要增加播报开关、播报范围、播报频率、防重复播报规则。 + +### 8.6 权限和配置 + +1. 管理员可配置是否启用语音播报。 +2. 可按部门配置播报内容和播报设备。 +3. 同一订单不应重复无限播报。 +4. 需要记录已播报状态或播报日志,便于追查。 + +### 8.7 验收标准 + +1. 新订单出现后,指定终端可听到语音播报。 +2. 同一订单不会被重复播报造成干扰。 +3. 播报开关关闭后不再播报。 +4. 部门播报和全场播报范围符合配置。 +5. 电视机或广播设备在生产环境中可稳定使用。 + +## 09-需求七:质检 PDA 手机扫码应急功能 + +### 9.1 需求背景 + +质检 PDA 已有扫码作业能力,但在 PDA 设备故障时,需要使用手机应急完成扫码和质检相关工作。当前功能已开发完成,但生产环境下由于扫码组件安全限制无法使用。 + +### 9.2 功能目标 + +1. 确保手机扫码功能在生产环境可正常使用。 +2. 在 PDA 故障时,手机可以临时替代 PDA 进行扫码质检作业。 +3. 解决扫码组件在生产环境下的安全限制问题。 + +### 9.3 问题说明 + +扫码组件通常依赖浏览器摄像头权限。生产环境可能存在以下限制: + +1. 页面不是 HTTPS,浏览器禁止调用摄像头。 +2. 访问地址使用 IP 或非受信任域名,浏览器阻止摄像头权限。 +3. 手机浏览器权限未授权。 +4. 扫码组件要求安全上下文,HTTP 环境不可用。 +5. 内嵌浏览器或企业微信、钉钉 WebView 权限策略不同。 + +### 9.4 解决方向 + +1. 将生产环境扫码页面部署到 HTTPS。 +2. 配置可信域名和证书,避免直接使用不安全 HTTP 地址调用摄像头。 +3. 如果必须内网使用,需要评估内网 HTTPS 证书或受信任证书安装方案。 +4. 针对手机浏览器、企业微信、钉钉等访问方式分别验证摄像头权限。 +5. 保留手工输入条码的兜底方案,避免扫码不可用时业务中断。 + +### 9.5 功能要求 + +1. 手机页面可打开摄像头并扫码。 +2. 扫码结果可回填到质检业务流程。 +3. 扫码失败时允许手动输入条码。 +4. 页面需要适配手机端显示。 +5. 扫码权限异常时给出明确提示,例如“请使用 HTTPS 地址访问”或“请允许摄像头权限”。 + +### 9.6 验收标准 + +1. 生产环境手机扫码可正常调用摄像头。 +2. 扫码后可完成质检业务操作。 +3. PDA 故障时,手机应急流程可完整跑通。 +4. 摄像头权限失败时有明确提示和手动输入兜底。 +5. 不影响 PDA 原有扫码功能。 + +## 10-优先级建议 + +| 优先级 | 需求 | 原因 | +| --- | --------------- | ------------------ | +| P2 | 质检 PDA 手机扫码应急功能 | 已开发但生产不可用,影响故障应急能力 | +| P0 | 库存盘点及入库库位选择优化 | 直接影响库存准确性和入库操作 | +| P0 | 默认库位设置功能调整 | 影响仓储配置职责和入库库位逻辑 | +| P0 | 物料编码查询 | 涉及页面多,但收益明确 | +| P1 | 车间派工移动端适配 | 改善现场移动操作效率 | +| P2 | 看板优化 | 影响现场展示和管理效率 | +| P2 | 语音播报 | 需要确认硬件、浏览器和广播接入方案 | + +## 11-实施拆分建议 + +### 第一阶段:库存与查询基础能力 + +1. 默认库位设置迁移。 +2. 物料编码查询补充。 +3. 物料系列字段和库存盘点筛选。 +4. 物料入库库位过滤。 + +### 第二阶段:移动端与应急能力 + +1. 车间派工移动端适配。 +2. 质检 PDA 手机扫码生产环境修复。 + +### 第三阶段:看板与播报能力 + +1. 仓库看板新增。 +2. 采购看板新增或优化。 +3. 现有看板数据口径调整。 +4. 新订单语音播报试点。 + +## 12-待确认事项 + +1. 默认库位设置新组件归属菜单:仓储管理、基础数据,或单独配置模块。 +2. “没有默认库存”与“没有库存库位”的业务定义是否一致。 +3. 物料入库库位选择在无库存时是否显示全库位,还是优先显示默认库位。 +4. 系列字段的数据来源:手工输入、固定字典、还是由后端基础数据维护。 +5. 库存盘点编辑库位是否允许直接改变已有库存所在库位,是否需要保留调整记录。 +6. 看板刷新频率和大屏分辨率。 +7. 语音播报使用电视机网页播放,还是接入全场广播硬件。 +8. 手机扫码生产环境访问方式:HTTPS 域名、内网 IP、企业微信、钉钉或普通浏览器。 +9. 语音播报和扫码功能是否需要新增系统配置表。 + +## 13-风险说明 + +1. 默认库位、库存库位、入库库位逻辑如果口径不统一,可能导致入库误选库位。 +2. 物料编码查询涉及页面多,需要避免漏改导出和弹窗查询。 +3. 库存盘点编辑库位如果缺少日志,后续库存差异追溯困难。 +4. 看板数据口径需与业务部门确认,否则容易出现“页面正确但业务理解不一致”的问题。 +5. 浏览器语音自动播放和摄像头扫码都受 HTTPS、安全策略、设备权限影响,必须在生产环境实测。 +6. 全场广播接入可能涉及硬件、网络、音频设备,不应只按前端功能估算工作量。 + +## 14-文档备注 + +本次变更为新增需求文档,未修改业务代码。 + +修改人:Ld 修改时间:2026-06-29 10:29:16 diff --git a/docs/preview-server.js b/docs/preview-server.js deleted file mode 100644 index 5016065e..00000000 --- a/docs/preview-server.js +++ /dev/null @@ -1,22 +0,0 @@ -const http = require('http'); -const fs = require('fs'); -const path = require('path'); -const root = __dirname; -const types = { '.html': 'text/html; charset=utf-8', '.png': 'image/png', '.css': 'text/css; charset=utf-8', '.js': 'text/javascript; charset=utf-8', '.md': 'text/plain; charset=utf-8' }; -const server = http.createServer((req, res) => { - try { - const url = new URL(req.url, 'http://127.0.0.1:18765'); - const rel = decodeURIComponent(url.pathname).replace(/^\/+/, ''); - const filePath = path.resolve(root, rel); - if (!filePath.startsWith(path.resolve(root))) { - res.writeHead(403); res.end('Forbidden'); return; - } - fs.readFile(filePath, (err, data) => { - if (err) { res.writeHead(404); res.end('Not found: ' + filePath); return; } - res.writeHead(200, { 'Content-Type': types[path.extname(filePath).toLowerCase()] || 'application/octet-stream' }); - res.end(data); - }); - } catch (e) { res.writeHead(500); res.end(String(e)); } -}); -server.listen(18765, '127.0.0.1', () => console.log('preview server on 18765')); -setInterval(() => {}, 1000); diff --git a/docs/warehouse-visualization-preview.html b/docs/warehouse-visualization-preview.html deleted file mode 100644 index 6ce5ee6e..00000000 --- a/docs/warehouse-visualization-preview.html +++ /dev/null @@ -1,482 +0,0 @@ - - -
- - -| 行-层 |
|---|
| 物料编号 | -物料名称 | -图号 | -型号 | -库存数量 | -锁定库存 | -批次 | -
|---|---|---|---|---|---|---|
| 02.009.001.0012 | -直线导轨组件 | -LRS3056-0312-01 | -HGW25CA | -14.000 台 |
- 2.000 台 |
- BATCH031201 | -
| 02.009.001.0013 | -滑块组件 | -LRS3056-0312-02 | -HGW25CC | -6.000 台 |
- 0.000 台 |
- BATCH031202 | -