From acca29b36b5df25420b4eb307d41830110edbb1f Mon Sep 17 00:00:00 2001 From: meswork764 Date: Tue, 26 May 2026 17:59:27 +0800 Subject: [PATCH] docs: update MES workflow and user manual --- .../CheckTask/materialReturn.vue | 30 +- .../今日工作汇报_2026-05-26.md | 143 + MES_Manage_View_V20/元利项目详细流程图.md | 3110 +++++++- .../元利项目详细用户使用说明书.md | 6363 ++++++++++++++++- tools/rename_manual_chapter21_titles.js | 101 + tools/rewrite_user_manual_pages.js | 573 ++ 生产任务看板/dist.zip | Bin 826528 -> 826714 bytes 7 files changed, 9943 insertions(+), 377 deletions(-) create mode 100644 MES_Manage_View_V20/今日工作汇报_2026-05-26.md create mode 100644 tools/rename_manual_chapter21_titles.js create mode 100644 tools/rewrite_user_manual_pages.js diff --git a/MES_Manage_View_V20/src/views/QualityManagement/CheckTask/materialReturn.vue b/MES_Manage_View_V20/src/views/QualityManagement/CheckTask/materialReturn.vue index a94f0d2..f233622 100644 --- a/MES_Manage_View_V20/src/views/QualityManagement/CheckTask/materialReturn.vue +++ b/MES_Manage_View_V20/src/views/QualityManagement/CheckTask/materialReturn.vue @@ -175,6 +175,7 @@ style="width: 100%; margin-top: 20px" tooltip-effect="dark" @row-click="handleRowClick" + :row-class-name="tableRowClassName" > { + const aIsUrgent = a.加急状态 === '1'; + const bIsUrgent = b.加急状态 === '1'; + + if (aIsUrgent && !bIsUrgent) return -1; + if (!aIsUrgent && bIsUrgent) return 1; + return 0; + }); this.total = response.data.total } else { this.tableData = []; @@ -1122,10 +1131,27 @@ export default { const seconds = String(date.getSeconds()).padStart(2, "0"); return `${year}${month}${day}_${hours}${minutes}${seconds}`; }, + tableRowClassName({ row, rowIndex }) { + const isUrgent = row.加急状态 == "1"; + if (isUrgent) { + return "priority-row"; + } + return ""; + }, }, }; - + \ No newline at end of file + diff --git a/MES_Manage_View_V20/今日工作汇报_2026-05-26.md b/MES_Manage_View_V20/今日工作汇报_2026-05-26.md new file mode 100644 index 0000000..28a883a --- /dev/null +++ b/MES_Manage_View_V20/今日工作汇报_2026-05-26.md @@ -0,0 +1,143 @@ +# 元利 MES 项目 — 今日工作汇报 + +日期:2026-05-26 +项目:MES_Manage_View_V20 + +## 一、今日主要工作 + +### 1. 丰富并修改元利项目详细流程图 + +今日继续完善 `元利项目详细流程图.md`,在原有系统级流程基础上,进一步补充页面级、业务级流程说明。 + +重点补充内容: +- 登录、菜单权限、动态路由生成流程。 +- 工艺、图纸、生产订单、排产、生产执行、质检、外协、工时校验、生产订单关闭等模块之间的衔接关系。 +- 机加排产、装配排产、机加中心、装配中心、质量中心、工时校验等关键页面的详细业务流。 +- SAP 回写、SAP 查询、WMS/库存任务、MES 存储过程之间的数据流转关系。 +- 将流程图尽量调整为“框 + 箭头 + 文字”的形式,减少字母节点指引,便于培训和现场讲解。 + +本次调整后,流程图更适合用于: +- 给客户讲解整体 MES 业务闭环。 +- 给实施人员定位页面与数据流关系。 +- 给开发人员判断新增需求影响范围。 + +### 2. 工时校验数据对接梳理 + +今日继续梳理工时校验页面与 MES/SAP 数据之间的对接关系,重点围绕 `ProductionManagement/WorkHoursCheck`。 + +已梳理内容: +- 对接数据时发现装配人员工时数据错误,经检查由于用户重复提交导致的问题 +- 在排查过程中发现装配人员报工加班时,同时生成了正常报工的工时 + + +### 3. 生产订单关闭培训与相关数据处理 + +今日进行了生产订单关闭相关培训和数据处理,重点说明生产订单关闭页面的使用边界。 + +培训内容: +- 生产订单关闭前需要先确认订单在 MES 中的任务完成情况。 +- 关闭前需要核对生产订单状态、入库情况、报工情况和 SAP 状态。 +- 批量关闭时要区分已成功关闭、关闭失败、不能关闭三类结果。 +- SAP 关闭失败时不应重复点击,应先确认 SAP 返回原因。 + +数据处理内容: +- 协助检查生产订单关闭相关数据。 +- 梳理关闭条件与当前订单状态之间的关系。 +- 对异常数据进行核对,避免误关或重复关闭。 + +### 4. 沟通报工结果数据上传到 SAP 的影响 + +今日围绕报工结果上传 SAP 的影响进行了沟通和确认。 + +沟通重点: +- 超过班次工作时间部分的工时 如果不选择加班,系统自动记录这段工时 +- 这段工时如果上次到SAP会导致其他生成订单工时不准确的问题,因为计算方法核算的是当日总报工时间记为8小时 +- 这段时间如果上传,就会导致其他工时减少 +- 休息日/法定时选择不加班工时记录的问题,讨论结果是MES正常记录 但是不传输给SAP + + +### 5. 修改装配报工数据重复问题 + +今日处理装配报工数据重复问题。 + +处理重点: +- 排查装配报工过程中可能重复写入的数据链路。 +- 核对装配任务、报工记录、质检/送检记录之间的关联关系。 +- 调整重复数据产生场景,避免同一任务重复形成报工结果。 +- 修改后重点关注装配中心报工、送检、任务完成状态的回显是否一致。 + +处理结果: +- 已针对装配报工重复问题进行修正。 +- 后续需要继续观察现场报工数据,确认是否仍存在重复写入或重复统计。 + +### 6. 丰富并修改用户使用说明书 + +今日重点丰富 `元利项目详细用户使用说明书.md`。 + +主要修改内容: +- 将第 21 章逐页说明整体扩展,不再只写笼统功能说明。 +- 对 78 个页面按源码逐页补充: + - 页面用途 + - 具体操作步骤 + - 查询条件/输入项 + - 结果表重点列 + - 页面按钮/状态/页签 + - 弹窗/表单重点项 + - 后台处理/外部接口 + - 操作注意事项 +- 将第 21 章页面标题从英文页面名改为中文页面名,例如: + - `WorkHoursCheck` 改为 `工时校验` + - `SelfMakePlandone` 改为 `机加已排产` + - `MachiningCenter` 改为 `机加中心` + - `QualityCenter` 改为 `质量中心` +- 对 `机加已排产` 章节进行了重点细化,补充日程拖拽、指派数量、拆分派工、二次派工、原料状态、图纸、外协分组、最晚开始、红色加急排序、SAP 日期同步等操作。 + +说明书修改后更适合: +- 现场用户培训。 +- 新员工快速熟悉页面。 +- 实施人员按页面排查问题。 +- 后续新增需求评审时对照现有功能。 + +### 7. 修改原料退库检,增加加急显示 + +今日处理原料退库检页面加急显示需求。 + +涉及页面: +- `QualityManagement/CheckTask/materialReturn.vue` + +处理内容: +- 在原料退库检任务中增加加急状态/加急信息显示。 +- 方便质检人员优先识别加急退库检任务。 +- 便于后续按加急任务排序、提醒或优先处理。 + +业务影响: +- 质检人员在原料退库检页面可以更直观看到加急任务。 +- 加急退库检任务可优先处理,减少对生产或后续流程的影响。 + +## 二、今日产出与修改文件 + +| 文件 | 今日处理内容 | +|---|---| +| `元利项目详细流程图.md` | 丰富业务流程图,补充多页面、多模块数据流 | +| `元利项目详细用户使用说明书.md` | 扩展第 21 章逐页操作说明,标题改为中文页面名 | +| `ProductionManagement/WorkHoursCheck` | 梳理工时校验与 SAP 上传关系 | +| `PlanManagement/PlannOrderClose` | 生产订单关闭培训与数据处理 | +| 装配报工相关页面/数据 | 修正装配报工重复数据问题 | +| `QualityManagement/CheckTask/materialReturn.vue` | 原料退库检增加加急显示 | + +## 三、今日沟通事项 + +1. 与相关人员沟通工时校验数据上传 SAP 的影响,明确报工结果、工时、SAP 工序资源之间的关系。 +2. 对生产订单关闭进行培训,说明关闭前校验、关闭失败处理和数据风险。 +3. 结合装配报工重复问题,沟通现场报工操作和后台数据写入逻辑。 +4. 结合用户说明书和流程图,明确后续培训资料需要按页面逐步讲解,不能只写功能概述。 + +## 四、当前风险与注意事项 + +| 风险点 | 影响 | 处理建议 | +|---|---|---| +| 工时上传 SAP 重复提交 | 可能造成 SAP 工时或库存单据重复 | 上传失败时先查失败原因,不要连续重复提交 | +| 生产订单关闭条件不一致 | 可能误关订单或关闭失败 | 关闭前核对 MES 任务、入库、报工和 SAP 状态 | +| 装配报工重复 | 影响工时、任务进度、质检/送检统计 | 修复后继续观察现场数据 | +| 加急任务未突出显示 | 质检处理优先级不明确 | 原料退库检已增加加急显示,后续可扩展排序 | +| 用户手册仍需继续细化 | 培训时可能仍有页面操作细节不足 | 后续按重点业务页面继续逐页补强 | diff --git a/MES_Manage_View_V20/元利项目详细流程图.md b/MES_Manage_View_V20/元利项目详细流程图.md index 1c1d83c..88eecf7 100644 --- a/MES_Manage_View_V20/元利项目详细流程图.md +++ b/MES_Manage_View_V20/元利项目详细流程图.md @@ -4,36 +4,31 @@ 依据文档:`元利项目详细分析.md` 说明: -- 本文把 `元利项目详细分析.md` 中的页面、存储过程、SAP 调用、看板和新增隐性需求整理为可维护的 Mermaid 流程图。 +- 本文把 `元利项目详细分析.md` 中的页面、存储过程、SAP 调用、看板和新增隐性需求整理为“文字框 + 箭头”的流程图。 - 图中页面路径以 `src/views/...` 为主,过程名称以文档分析到的 `CreateData(type, name, params)` 调用为主。 - `type=11` 通常表示查询/读取或通用执行,`type=12` 通常表示写入/业务动作,具体仍以后端实现为准。 ## 1. 系统总体架构流程 -```mermaid -flowchart TD - U[用户/班组/计划/质检/设备/管理层] --> FE[Vue 2.7 前端页面] - FE --> ROUTE[动态菜单/路由/权限] - ROUTE --> PAGE[src/views 业务页面] - - PAGE --> CD[CreateData type + procedure + params] - CD --> ED[ExecDatabase 统一后端接口] - ED --> SP[SQL Server 存储过程] - SP --> DB[(YL_MESDB)] - - PAGE --> B1[src/api/b1s.js] - B1 --> SAP[SAP B1 Service Layer] - SP --> SAPDB[(SAP.SBO_YL 跨库/同步表)] - - PAGE --> TM[tm 仓储/条码任务接口] - TM --> WMS[库存/条码任务服务] - - DB --> VIEW[业务视图/报表视图] - VIEW --> PAGE - VIEW --> DASH[生产/装配/质检/机加/综合看板] - SAPDB --> VIEW - SAP --> PAGE - WMS --> PAGE +```text +[用户/班组/计划/质检/设备/管理层] --> [Vue 2.7 前端页面] +[Vue 2.7 前端页面] --> [动态菜单/路由/权限] +[动态菜单/路由/权限] --> [src/views 业务页面] +[src/views 业务页面] --> [CreateData type + procedure + params] +[CreateData type + procedure + params] --> [ExecDatabase 统一后端接口] +[ExecDatabase 统一后端接口] --> [SQL Server 存储过程] +[SQL Server 存储过程] --> [YL_MESDB] +[src/views 业务页面] --> [src/api/b1s.js] +[src/api/b1s.js] --> [SAP B1 Service Layer] +[SQL Server 存储过程] --> [SAP.SBO_YL 跨库/同步表] +[src/views 业务页面] --> [tm 仓储/条码任务接口] +[tm 仓储/条码任务接口] --> [库存/条码任务服务] +[YL_MESDB] --> [业务视图/报表视图] +[业务视图/报表视图] --> [src/views 业务页面] +[业务视图/报表视图] --> [生产/装配/质检/机加/综合看板] +[SAP.SBO_YL 跨库/同步表] --> [业务视图/报表视图] +[SAP B1 Service Layer] --> [src/views 业务页面] +[库存/条码任务服务] --> [src/views 业务页面] ``` 关键链路: @@ -43,19 +38,18 @@ flowchart TD ## 2. 登录、菜单、权限与页面访问流程 -```mermaid -flowchart TD - A[进入登录页 src/views/login] --> B[输入工号/密码] - B --> C[登录基础数据_人员信息_登陆检查密码] - C --> D{校验通过?} - D -- 否 --> E[提示登录失败] - D -- 是 --> F[写入 Token/用户信息] - F --> G[加载用户角色/菜单权限] - G --> H[登录基础数据_二级菜单/角色权限] - H --> I[生成动态路由] - I --> J[进入 Layout] - J --> K[侧边栏/标签页/AppMain] - K --> L[打开具体业务页面] +```text +[进入登录页 src/views/login] --> [输入工号/密码] +[输入工号/密码] --> [登录基础数据_人员信息_登陆检查密码] +[登录基础数据_人员信息_登陆检查密码] --> [校验通过?] +[校验通过?] -- 否 --> [提示登录失败] +[校验通过?] -- 是 --> [写入 Token/用户信息] +[写入 Token/用户信息] --> [加载用户角色/菜单权限] +[加载用户角色/菜单权限] --> [登录基础数据_二级菜单/角色权限] +[登录基础数据_二级菜单/角色权限] --> [生成动态路由] +[生成动态路由] --> [进入 Layout] +[进入 Layout] --> [侧边栏/标签页/AppMain] +[侧边栏/标签页/AppMain] --> [打开具体业务页面] ``` 涉及页面: @@ -67,35 +61,29 @@ flowchart TD ## 3. 基础资料维护总流程 -```mermaid -flowchart TD - A[系统基础资料] --> B[人员/组织/角色] - A --> C[工位/设备/SAP Resource] - A --> D[班次/人员绑定] - A --> E[工序/物料/图纸/产品结构] - - B --> B1[PersonnelManagement/OrgManagement/SystemRole] - B1 --> B2[人员、岗位、班组、权限] - - C --> C1[WorkstationManagement] - C1 --> C2[维护工位] - C2 --> C3{是否同步 SAP Resource?} - C3 -- 是 --> C4[POST/PATCH /Resources] - C3 -- 否 --> C5[仅 MES 保存] - C4 --> C6[记录同步状态/失败原因] - C5 --> C6 - - C --> C7[DeviceInformation] - C7 --> C8[设备名称/型号/类型/工位/点检/能力] - - D --> D1[ShiftManagement/PersonnelBinding] - D1 --> D2[班次规则/人员工位绑定] - - E --> E1[ProcedureManagement] - E1 --> E2[工序基础数据] - E2 --> E3{是否同步 SAP RouteStages?} - E3 -- 是 --> E4[POST/PATCH /RouteStages] - E3 -- 否 --> E5[MES 本地维护] +```text +[系统基础资料] --> [人员/组织/角色] +[系统基础资料] --> [工位/设备/SAP Resource] +[系统基础资料] --> [班次/人员绑定] +[系统基础资料] --> [工序/物料/图纸/产品结构] +[人员/组织/角色] --> [PersonnelManagement/OrgManagement/SystemRole] +[PersonnelManagement/OrgManagement/SystemRole] --> [人员、岗位、班组、权限] +[工位/设备/SAP Resource] --> [WorkstationManagement] +[WorkstationManagement] --> [维护工位] +[维护工位] --> [是否同步 SAP Resource?] +[是否同步 SAP Resource?] -- 是 --> [POST/PATCH /Resources] +[是否同步 SAP Resource?] -- 否 --> [仅 MES 保存] +[POST/PATCH /Resources] --> [记录同步状态/失败原因] +[仅 MES 保存] --> [记录同步状态/失败原因] +[工位/设备/SAP Resource] --> [DeviceInformation] +[DeviceInformation] --> [设备名称/型号/类型/工位/点检/能力] +[班次/人员绑定] --> [ShiftManagement/PersonnelBinding] +[ShiftManagement/PersonnelBinding] --> [班次规则/人员工位绑定] +[工序/物料/图纸/产品结构] --> [ProcedureManagement] +[ProcedureManagement] --> [工序基础数据] +[工序基础数据] --> [是否同步 SAP RouteStages?] +[是否同步 SAP RouteStages?] -- 是 --> [POST/PATCH /RouteStages] +[是否同步 SAP RouteStages?] -- 否 --> [MES 本地维护] ``` 维护口径: @@ -104,35 +92,30 @@ flowchart TD ## 4. 工艺、图纸、标准工艺、生产工艺流程 -```mermaid -flowchart TD - A[产品/物料/图纸基础] --> B[产品结构维护 CraftMaintain] - A --> C[零件图纸 PartDrawing] - A --> D[工艺图纸 ProcessDrawing] - A --> E[工序基础 ProcedureManagement] - - B --> F[制定标准工艺 ProcessesDevelop] - C --> F - D --> F - E --> F - - F --> G[标准工艺库] - G --> G1[工序顺序] - G --> G2[标准工时/准备工时] - G --> G3[是否关键工序] - - G --> H[生产工艺 ProcessProduct] - H --> I{订单是否已有生产工艺?} - I -- 是 --> J[编辑订单级生产工艺] - I -- 否 --> K[按物料带出标准工艺草稿] - K --> L{用户保存?} - L -- 否 --> M[不写入生产工艺] - L -- 是 --> N[写入生产工艺库] - - J --> O[启用/下发生产工艺] - N --> O - O --> P[生成任务可用工艺快照] - P --> Q[排产/报工/质检/看板读取] +```text +[产品/物料/图纸基础] --> [产品结构维护 CraftMaintain] +[产品/物料/图纸基础] --> [零件图纸 PartDrawing] +[产品/物料/图纸基础] --> [工艺图纸 ProcessDrawing] +[产品/物料/图纸基础] --> [工序基础 ProcedureManagement] +[产品结构维护 CraftMaintain] --> [制定标准工艺 ProcessesDevelop] +[零件图纸 PartDrawing] --> [制定标准工艺 ProcessesDevelop] +[工艺图纸 ProcessDrawing] --> [制定标准工艺 ProcessesDevelop] +[工序基础 ProcedureManagement] --> [制定标准工艺 ProcessesDevelop] +[制定标准工艺 ProcessesDevelop] --> [标准工艺库] +[标准工艺库] --> [工序顺序] +[标准工艺库] --> [标准工时/准备工时] +[标准工艺库] --> [是否关键工序] +[标准工艺库] --> [生产工艺 ProcessProduct] +[生产工艺 ProcessProduct] --> [订单是否已有生产工艺?] +[订单是否已有生产工艺?] -- 是 --> [编辑订单级生产工艺] +[订单是否已有生产工艺?] -- 否 --> [按物料带出标准工艺草稿] +[按物料带出标准工艺草稿] --> [用户保存?] +[用户保存?] -- 否 --> [不写入生产工艺] +[用户保存?] -- 是 --> [写入生产工艺库] +[编辑订单级生产工艺] --> [启用/下发生产工艺] +[写入生产工艺库] --> [启用/下发生产工艺] +[启用/下发生产工艺] --> [生成任务可用工艺快照] +[生成任务可用工艺快照] --> [排产/报工/质检/看板读取] ``` 关键结论: @@ -142,24 +125,21 @@ flowchart TD ## 5. 生产订单、机加排产与 SAP 回写流程 -```mermaid -flowchart TD - A[SAP/MES 生产订单同步] --> B[MES_接口_生产计划] - B --> C[待排产 SelfMakePlan] - C --> D[选择订单/工序/设备/工位/时间] - D --> E[排产保存] - E --> F[MES_接口_生产计划_生产任务] - F --> G[任务排产状态=已排产] - - E --> H{是否回写 SAP 生产订单日期?} - H -- 是 --> I[PATCH /ProductionOrders] - I --> J{SAP 回写成功?} - J -- 是 --> K[记录同步成功] - J -- 否 --> L[记录失败原因/待重试] - H -- 否 --> M[仅 MES 排产] - - G --> N[已排产 SelfMakePlando/SelfMakePlandone] - N --> O[生产计划跟踪/及时开工/机加中心] +```text +[SAP/MES 生产订单同步] --> [MES_接口_生产计划] +[MES_接口_生产计划] --> [待排产 SelfMakePlan] +[待排产 SelfMakePlan] --> [选择订单/工序/设备/工位/时间] +[选择订单/工序/设备/工位/时间] --> [排产保存] +[排产保存] --> [MES_接口_生产计划_生产任务] +[MES_接口_生产计划_生产任务] --> [任务排产状态=已排产] +[排产保存] --> [是否回写 SAP 生产订单日期?] +[是否回写 SAP 生产订单日期?] -- 是 --> [PATCH /ProductionOrders] +[PATCH /ProductionOrders] --> [SAP 回写成功?] +[SAP 回写成功?] -- 是 --> [记录同步成功] +[SAP 回写成功?] -- 否 --> [记录失败原因/待重试] +[是否回写 SAP 生产订单日期?] -- 否 --> [仅 MES 排产] +[任务排产状态=已排产] --> [已排产 SelfMakePlando/SelfMakePlandone] +[已排产 SelfMakePlando/SelfMakePlandone] --> [生产计划跟踪/及时开工/机加中心] ``` 涉及页面: @@ -175,26 +155,22 @@ flowchart TD ## 6. 装配排产、外购申请与 SAP 流程 -```mermaid -flowchart TD - A[装配/电气/系统相关订单] --> B[InstallMakePlan 待排产] - B --> C[选择装配任务/计划时间/优先级] - C --> D[保存装配排产] - D --> E[生成装配生产任务] - - C --> F{需要采购申请?} - F -- 是 --> G[POST /PurchaseRequests] - G --> H{SAP 采购申请成功?} - H -- 是 --> I[记录 SAP 采购请求号] - H -- 否 --> J[记录失败/允许重试] - F -- 否 --> K[不生成采购申请] - - D --> L{是否回写 SAP 生产订单?} - L -- 是 --> M[PATCH /ProductionOrders] - M --> N[同步派工/日期/说明] - L -- 否 --> O[仅 MES 保存] - - E --> P[InstallMakePlanDo/装配中心/装配看板] +```text +[装配/电气/系统相关订单] --> [InstallMakePlan 待排产] +[InstallMakePlan 待排产] --> [选择装配任务/计划时间/优先级] +[选择装配任务/计划时间/优先级] --> [保存装配排产] +[保存装配排产] --> [生成装配生产任务] +[选择装配任务/计划时间/优先级] --> [需要采购申请?] +[需要采购申请?] -- 是 --> [POST /PurchaseRequests] +[POST /PurchaseRequests] --> [SAP 采购申请成功?] +[SAP 采购申请成功?] -- 是 --> [记录 SAP 采购请求号] +[SAP 采购申请成功?] -- 否 --> [记录失败/允许重试] +[需要采购申请?] -- 否 --> [不生成采购申请] +[保存装配排产] --> [是否回写 SAP 生产订单?] +[是否回写 SAP 生产订单?] -- 是 --> [PATCH /ProductionOrders] +[PATCH /ProductionOrders] --> [同步派工/日期/说明] +[是否回写 SAP 生产订单?] -- 否 --> [仅 MES 保存] +[生成装配生产任务] --> [InstallMakePlanDo/装配中心/装配看板] ``` 涉及页面: @@ -208,32 +184,27 @@ flowchart TD ## 7. 机加生产执行流程 -```mermaid -flowchart TD - A[已排产机加任务] --> B[MachiningCenter 机加中心] - B --> C{任务是否可开工?} - C -- 否 --> C1[显示不可操作原因: 未齐套/上序未合格/异常/编程未完成/设备占用] - C -- 是 --> D[开始加工/开工] - - D --> E[操作记录表写入开始时间/人员/设备] - E --> F[加工过程] - F --> G{是否异常?} - G -- 是 --> H[直接报异常] - H --> I[AbnormalControl 异常管控] - I --> F - - F --> J[结束报工] - J --> K[写入 YL_加工中心_操作记录表] - K --> L[更新完成数量/工时/任务状态] - - L --> M{是否需要质检?} - M -- 是 --> N[进入质检任务/序检/首检/终检] - M -- 否 --> O[进入下序或完成] - - O --> P{是否入库/转序/外协?} - P -- 转序 --> A - P -- 入库 --> Q[入库/库存任务] - P -- 外协 --> R[外协流程] +```text +[已排产机加任务] --> [MachiningCenter 机加中心] +[MachiningCenter 机加中心] --> [任务是否可开工?] +[任务是否可开工?] -- 否 --> [显示不可操作原因: 未齐套/上序未合格/异常/编程未完成/设备占用] +[任务是否可开工?] -- 是 --> [开始加工/开工] +[开始加工/开工] --> [操作记录表写入开始时间/人员/设备] +[操作记录表写入开始时间/人员/设备] --> [加工过程] +[加工过程] --> [是否异常?] +[是否异常?] -- 是 --> [直接报异常] +[直接报异常] --> [AbnormalControl 异常管控] +[AbnormalControl 异常管控] --> [加工过程] +[加工过程] --> [结束报工] +[结束报工] --> [写入 YL_加工中心_操作记录表] +[写入 YL_加工中心_操作记录表] --> [更新完成数量/工时/任务状态] +[更新完成数量/工时/任务状态] --> [是否需要质检?] +[是否需要质检?] -- 是 --> [进入质检任务/序检/首检/终检] +[是否需要质检?] -- 否 --> [进入下序或完成] +[进入下序或完成] --> [是否入库/转序/外协?] +[是否入库/转序/外协?] -- 转序 --> [已排产机加任务] +[是否入库/转序/外协?] -- 入库 --> [入库/库存任务] +[是否入库/转序/外协?] -- 外协 --> [外协流程] ``` 涉及对象: @@ -249,31 +220,26 @@ flowchart TD ## 8. 装配中心执行流程 -```mermaid -flowchart TD - A[已排产装配任务] --> B[AssemblyCenter 装配中心] - B --> C[查询 SAP/MES 订单、物料、发料、齐套] - C --> D{发料/齐套是否满足?} - D -- 否 --> E[缺件/待发料/不可开工] - E --> F[缺件明细/预计可执行时间] - D -- 是 --> G[开始装配] - - G --> H[装配报工/工时记录] - H --> I{是否产生异常?} - I -- 是 --> J[直接报异常 -> AbnormalControl] - I -- 否 --> K[继续装配] - - K --> L[装配完成/更新任务状态] - L --> M{是否需要送检?} - M -- 是 --> N[送检/质检任务] - M -- 否 --> O[入库/发货/后续确认] - - L --> P[手续确认报表] - P --> Q{手续确认完成?} - Q -- 否 --> R[待办保留] - Q -- 是 --> S[从待办消失] - - O --> T[装配看板/生产任务看板] +```text +[已排产装配任务] --> [AssemblyCenter 装配中心] +[AssemblyCenter 装配中心] --> [查询 SAP/MES 订单、物料、发料、齐套] +[查询 SAP/MES 订单、物料、发料、齐套] --> [发料/齐套是否满足?] +[发料/齐套是否满足?] -- 否 --> [缺件/待发料/不可开工] +[缺件/待发料/不可开工] --> [缺件明细/预计可执行时间] +[发料/齐套是否满足?] -- 是 --> [开始装配] +[开始装配] --> [装配报工/工时记录] +[装配报工/工时记录] --> [是否产生异常?] +[是否产生异常?] -- 是 --> [直接报异常 -> AbnormalControl] +[是否产生异常?] -- 否 --> [继续装配] +[继续装配] --> [装配完成/更新任务状态] +[装配完成/更新任务状态] --> [是否需要送检?] +[是否需要送检?] -- 是 --> [送检/质检任务] +[是否需要送检?] -- 否 --> [入库/发货/后续确认] +[装配完成/更新任务状态] --> [手续确认报表] +[手续确认报表] --> [手续确认完成?] +[手续确认完成?] -- 否 --> [待办保留] +[手续确认完成?] -- 是 --> [从待办消失] +[入库/发货/后续确认] --> [装配看板/生产任务看板] ``` 关键新增字段: @@ -285,37 +251,31 @@ flowchart TD ## 9. 质检业务流程 -```mermaid -flowchart TD - A[质检任务来源] --> A1[机加报工后待检] - A --> A2[装配送检] - A --> A3[采购入库检] - A --> A4[序检收检/外协收检] - A --> A5[退库/销售退货/其他入库] - - A1 --> B[QualityCenter/CheckTask] - A2 --> B - A3 --> B - A4 --> B - A5 --> B - - B --> C[录入检验结果] - C --> D{合格?} - D -- 是 --> E[合格数量/质检完成] - D -- 否 --> F[不合格处理 Unqualified] - - F --> G{处置方式} - G -- 返工 --> H[回生产/返修] - G -- 报废 --> I[报废记录] - G -- 让步接收 --> J[让步接收字段] - G -- 复检 --> K[生成复检/再次检验] - - E --> L{是否 SAP 收货/库存动作?} - L -- 是 --> M[PurchaseDeliveryNotes 或库存任务] - L -- 否 --> N[MES 本地完成] - - J --> O[让步接收记录查询页] - E --> P[质检看板/及时检验/生产日报] +```text +[质检任务来源] --> [机加报工后待检] +[质检任务来源] --> [装配送检] +[质检任务来源] --> [采购入库检] +[质检任务来源] --> [序检收检/外协收检] +[质检任务来源] --> [退库/销售退货/其他入库] +[机加报工后待检] --> [QualityCenter/CheckTask] +[装配送检] --> [QualityCenter/CheckTask] +[采购入库检] --> [QualityCenter/CheckTask] +[序检收检/外协收检] --> [QualityCenter/CheckTask] +[退库/销售退货/其他入库] --> [QualityCenter/CheckTask] +[QualityCenter/CheckTask] --> [录入检验结果] +[录入检验结果] --> [合格?] +[合格?] -- 是 --> [合格数量/质检完成] +[合格?] -- 否 --> [不合格处理 Unqualified] +[不合格处理 Unqualified] --> [处置方式] +[处置方式] -- 返工 --> [回生产/返修] +[处置方式] -- 报废 --> [报废记录] +[处置方式] -- 让步接收 --> [让步接收字段] +[处置方式] -- 复检 --> [生成复检/再次检验] +[合格数量/质检完成] --> [是否 SAP 收货/库存动作?] +[是否 SAP 收货/库存动作?] -- 是 --> [PurchaseDeliveryNotes 或库存任务] +[是否 SAP 收货/库存动作?] -- 否 --> [MES 本地完成] +[让步接收字段] --> [让步接收记录查询页] +[合格数量/质检完成] --> [质检看板/及时检验/生产日报] ``` 涉及页面: @@ -333,26 +293,24 @@ flowchart TD ## 10. 外协业务流程 -```mermaid -flowchart TD - A[生产任务指派对象=外协] --> B[OutsourceMange 外协管理] - B --> C[生成外协任务/采购申请] - C --> D{是否提交 SAP 采购申请?} - D -- 是 --> E[POST /PurchaseRequests] - E --> F{SAP 成功?} - F -- 是 --> G[记录采购请求/单据关系] - F -- 否 --> H[记录失败/重试] - D -- 否 --> I[MES 本地外协任务] - - G --> J[外协加工/供应商交付] - I --> J - J --> K[序检收检/外协收货] - K --> L[记录供应商/SAP采购收货单号/指派对象] - L --> M{质检合格?} - M -- 是 --> N[SAP PurchaseDeliveryNotes/入库] - M -- 否 --> O[不合格/返修/让步] - N --> P[外协报表/供应商质量统计] - O --> P +```text +[生产任务指派对象=外协] --> [OutsourceMange 外协管理] +[OutsourceMange 外协管理] --> [生成外协任务/采购申请] +[生成外协任务/采购申请] --> [是否提交 SAP 采购申请?] +[是否提交 SAP 采购申请?] -- 是 --> [POST /PurchaseRequests] +[POST /PurchaseRequests] --> [SAP 成功?] +[SAP 成功?] -- 是 --> [记录采购请求/单据关系] +[SAP 成功?] -- 否 --> [记录失败/重试] +[是否提交 SAP 采购申请?] -- 否 --> [MES 本地外协任务] +[记录采购请求/单据关系] --> [外协加工/供应商交付] +[MES 本地外协任务] --> [外协加工/供应商交付] +[外协加工/供应商交付] --> [序检收检/外协收货] +[序检收检/外协收货] --> [记录供应商/SAP采购收货单号/指派对象] +[记录供应商/SAP采购收货单号/指派对象] --> [质检合格?] +[质检合格?] -- 是 --> [SAP PurchaseDeliveryNotes/入库] +[质检合格?] -- 否 --> [不合格/返修/让步] +[SAP PurchaseDeliveryNotes/入库] --> [外协报表/供应商质量统计] +[不合格/返修/让步] --> [外协报表/供应商质量统计] ``` 涉及页面: @@ -366,30 +324,27 @@ flowchart TD ## 11. 工时、SAP 工时校验与投料流程 -```mermaid -flowchart TD - A[报工/设备采集/质检/装配] --> B[工时来源汇总] - B --> B1[人工报工工时] - B --> B2[设备运行工时] - B --> B3[程序工时] - B --> B4[质检/装配/设计/编程工时] - - B1 --> C[Workhours/Timesheet/WorkHoursCheck] - B2 --> C - B3 --> C - B4 --> C - - C --> D[工时校验] - D --> E{是否提交 SAP?} - E -- 否 --> F[MES 工时报表/绩效] - E -- 是 --> G[GET /ProductionOrders] - G --> H[匹配 SAP 工序/资源] - H --> I[POST /InventoryGenExits 投料] - H --> J[PATCH /ProductionOrders 更新工序资源/工时] - I --> K{SAP 成功?} - J --> K - K -- 是 --> L[记录提交成功] - K -- 否 --> M[记录失败原因/允许重试] +```text +[报工/设备采集/质检/装配] --> [工时来源汇总] +[工时来源汇总] --> [人工报工工时] +[工时来源汇总] --> [设备运行工时] +[工时来源汇总] --> [程序工时] +[工时来源汇总] --> [质检/装配/设计/编程工时] +[人工报工工时] --> [Workhours/Timesheet/WorkHoursCheck] +[设备运行工时] --> [Workhours/Timesheet/WorkHoursCheck] +[程序工时] --> [Workhours/Timesheet/WorkHoursCheck] +[质检/装配/设计/编程工时] --> [Workhours/Timesheet/WorkHoursCheck] +[Workhours/Timesheet/WorkHoursCheck] --> [工时校验] +[工时校验] --> [是否提交 SAP?] +[是否提交 SAP?] -- 否 --> [MES 工时报表/绩效] +[是否提交 SAP?] -- 是 --> [GET /ProductionOrders] +[GET /ProductionOrders] --> [匹配 SAP 工序/资源] +[匹配 SAP 工序/资源] --> [POST /InventoryGenExits 投料] +[匹配 SAP 工序/资源] --> [PATCH /ProductionOrders 更新工序资源/工时] +[POST /InventoryGenExits 投料] --> [SAP 成功?] +[PATCH /ProductionOrders 更新工序资源/工时] --> [SAP 成功?] +[SAP 成功?] -- 是 --> [记录提交成功] +[SAP 成功?] -- 否 --> [记录失败原因/允许重试] ``` 涉及页面: @@ -404,24 +359,21 @@ flowchart TD ## 12. 异常管控流程 -```mermaid -flowchart TD - A[报工/质检/外协/装配/设计/编程页面] --> B[选择任务] - B --> C[点击报异常] - C --> D[带出任务/订单/工序/人员信息] - D --> E[填写异常类型/说明/附件] - E --> F[选择审批人 多选] - F --> G[保存异常] - G --> H[AbnormalControl 异常管控] - - H --> I[审批人待办可见] - I --> J{任一审批人处理?} - J -- 否 --> K[异常未关闭] - J -- 是 --> L[记录实际处理人] - L --> M[异常进入下一状态/关闭] - - K --> N[影响任务可操作性/及时开工/看板] - M --> O[任务恢复或结束] +```text +[报工/质检/外协/装配/设计/编程页面] --> [选择任务] +[选择任务] --> [点击报异常] +[点击报异常] --> [带出任务/订单/工序/人员信息] +[带出任务/订单/工序/人员信息] --> [填写异常类型/说明/附件] +[填写异常类型/说明/附件] --> [选择审批人 多选] +[选择审批人 多选] --> [保存异常] +[保存异常] --> [AbnormalControl 异常管控] +[AbnormalControl 异常管控] --> [审批人待办可见] +[审批人待办可见] --> [任一审批人处理?] +[任一审批人处理?] -- 否 --> [异常未关闭] +[任一审批人处理?] -- 是 --> [记录实际处理人] +[记录实际处理人] --> [异常进入下一状态/关闭] +[异常未关闭] --> [影响任务可操作性/及时开工/看板] +[异常进入下一状态/关闭] --> [任务恢复或结束] ``` 关键规则: @@ -430,19 +382,18 @@ flowchart TD ## 13. 生产订单关闭与 SAP 状态同步流程 -```mermaid -flowchart TD - A[生产订单关闭 PlannOrderClose] --> B[查询可关闭订单] - B --> C[选择单个或批量订单] - C --> D[二次确认] - D --> E[逐单 PATCH /ProductionOrders] - E --> F{单据关闭成功?} - F -- 是 --> G[记录成功/更新 MES 状态] - F -- 否 --> H[记录失败原因] - H --> I[失败项重试] - G --> J[刷新关闭页] - H --> J - J --> K[影响排产页/生产中心/手续确认/看板] +```text +[生产订单关闭 PlannOrderClose] --> [查询可关闭订单] +[查询可关闭订单] --> [选择单个或批量订单] +[选择单个或批量订单] --> [二次确认] +[二次确认] --> [逐单 PATCH /ProductionOrders] +[逐单 PATCH /ProductionOrders] --> [单据关闭成功?] +[单据关闭成功?] -- 是 --> [记录成功/更新 MES 状态] +[单据关闭成功?] -- 否 --> [记录失败原因] +[记录失败原因] --> [失败项重试] +[记录成功/更新 MES 状态] --> [刷新关闭页] +[记录失败原因] --> [刷新关闭页] +[刷新关闭页] --> [影响排产页/生产中心/手续确认/看板] ``` 要求: @@ -451,25 +402,22 @@ flowchart TD ## 14. 看板数据汇总流程 -```mermaid -flowchart TD - A[主系统业务数据] --> B[统一视图/存储过程] - C[SAP 同步表/跨库表] --> B - D[设备采集缓存/历史] --> B - E[质检记录/报工记录] --> B - - B --> P[生产任务看板] - B --> Q[装配任务看板] - B --> R[质检任务看板] - B --> S[机加设备生产运营看板] - B --> T[TableTV 工位监控] - B --> U[board_view 综合大屏] - - P --> P1[齐套率/待排产/未及时开工/加急/未入库] - Q --> Q1[装配任务/发货状态/缺件/异常/缺勤] - R --> R1[未清/及时率/关键工序/当天完成] - S --> S1[设备状态/在制/关键工序/缺勤/OEE] - U --> U1[合同进度/工时/采购/库存/OEE] +```text +[主系统业务数据] --> [统一视图/存储过程] +[SAP 同步表/跨库表] --> [统一视图/存储过程] +[设备采集缓存/历史] --> [统一视图/存储过程] +[质检记录/报工记录] --> [统一视图/存储过程] +[统一视图/存储过程] --> [生产任务看板] +[统一视图/存储过程] --> [装配任务看板] +[统一视图/存储过程] --> [质检任务看板] +[统一视图/存储过程] --> [机加设备生产运营看板] +[统一视图/存储过程] --> [TableTV 工位监控] +[统一视图/存储过程] --> [board_view 综合大屏] +[生产任务看板] --> [齐套率/待排产/未及时开工/加急/未入库] +[装配任务看板] --> [装配任务/发货状态/缺件/异常/缺勤] +[质检任务看板] --> [未清/及时率/关键工序/当天完成] +[机加设备生产运营看板] --> [设备状态/在制/关键工序/缺勤/OEE] +[board_view 综合大屏] --> [合同进度/工时/采购/库存/OEE] ``` 看板治理规则: @@ -480,29 +428,26 @@ flowchart TD ## 15. 新增需求与维护入口判断流程 -```mermaid -flowchart TD - A[收到新增需求/新增字段] --> B{字段性质是什么?} - B -- 主数据 --> C[找基础维护页: 人员/班次/工位/设备/工序/工艺] - B -- 订单过程数据 --> D[找业务页: 计划/排产/装配/机加/质检] - B -- SAP 同步数据 --> E[找 SAP 同步表/接口/同步时间] - B -- 设备采集数据 --> F[找采集原始表/设备状态历史/任务绑定] - B -- 人工确认 --> G[待办页维护并记录确认人时间] - B -- 计算指标 --> H[统一视图/过程/快照] - - C --> I{现有页面能承载?} - D --> I - E --> I - F --> I - G --> I - H --> I - - I -- 是 --> J[扩展现有页面/过程] - I -- 否 --> K[新增维护页或业务页] - J --> L[同步菜单/权限/日志/历史策略] - K --> L - L --> M[检查影响看板/报表/SAP/历史数据] - M --> N[开发排期] +```text +[收到新增需求/新增字段] --> [字段性质是什么?] +[字段性质是什么?] -- 主数据 --> [找基础维护页: 人员/班次/工位/设备/工序/工艺] +[字段性质是什么?] -- 订单过程数据 --> [找业务页: 计划/排产/装配/机加/质检] +[字段性质是什么?] -- SAP 同步数据 --> [找 SAP 同步表/接口/同步时间] +[字段性质是什么?] -- 设备采集数据 --> [找采集原始表/设备状态历史/任务绑定] +[字段性质是什么?] -- 人工确认 --> [待办页维护并记录确认人时间] +[字段性质是什么?] -- 计算指标 --> [统一视图/过程/快照] +[找基础维护页: 人员/班次/工位/设备/工序/工艺] --> [现有页面能承载?] +[找业务页: 计划/排产/装配/机加/质检] --> [现有页面能承载?] +[找 SAP 同步表/接口/同步时间] --> [现有页面能承载?] +[找采集原始表/设备状态历史/任务绑定] --> [现有页面能承载?] +[待办页维护并记录确认人时间] --> [现有页面能承载?] +[统一视图/过程/快照] --> [现有页面能承载?] +[现有页面能承载?] -- 是 --> [扩展现有页面/过程] +[现有页面能承载?] -- 否 --> [新增维护页或业务页] +[扩展现有页面/过程] --> [同步菜单/权限/日志/历史策略] +[新增维护页或业务页] --> [同步菜单/权限/日志/历史策略] +[同步菜单/权限/日志/历史策略] --> [检查影响看板/报表/SAP/历史数据] +[检查影响看板/报表/SAP/历史数据] --> [开发排期] ``` 典型判断: @@ -513,39 +458,2472 @@ flowchart TD ## 16. 端到端生产业务主流程 -```mermaid -flowchart TD - A[SAP/MES 生产订单] --> B[工艺准备] - B --> B1[标准工艺] - B1 --> B2[生产工艺] - B2 --> B3[任务工艺快照] - - A --> C[计划排产] - C --> C1[机加排产] - C --> C2[装配排产] - C1 --> D[生产执行] - C2 --> E[装配执行] - - D --> F[报工/工时/设备采集] - E --> G[装配报工/发料/齐套/送检] - - F --> H[质检] - G --> H - H --> I{质量结果} - I -- 合格 --> J[入库/转序/交付] - I -- 不合格 --> K[返工/报废/让步接收/复检] - K --> D - - J --> L[工时校验/SAP 投料/订单状态] - L --> M[订单关闭] - M --> N[报表/看板/日报] - - D --> O[异常管控] - E --> O - H --> O - O --> N - - N --> P[管理层 KPI/现场大屏/追溯查询] +```text +[SAP/MES 生产订单] --> [工艺准备] +[工艺准备] --> [标准工艺] +[标准工艺] --> [生产工艺] +[生产工艺] --> [任务工艺快照] +[SAP/MES 生产订单] --> [计划排产] +[计划排产] --> [机加排产] +[计划排产] --> [装配排产] +[机加排产] --> [生产执行] +[装配排产] --> [装配执行] +[生产执行] --> [报工/工时/设备采集] +[装配执行] --> [装配报工/发料/齐套/送检] +[报工/工时/设备采集] --> [质检] +[装配报工/发料/齐套/送检] --> [质检] +[质检] --> [质量结果] +[质量结果] -- 合格 --> [入库/转序/交付] +[质量结果] -- 不合格 --> [返工/报废/让步接收/复检] +[返工/报废/让步接收/复检] --> [生产执行] +[入库/转序/交付] --> [工时校验/SAP 投料/订单状态] +[工时校验/SAP 投料/订单状态] --> [订单关闭] +[订单关闭] --> [报表/看板/日报] +[生产执行] --> [异常管控] +[装配执行] --> [异常管控] +[质检] --> [异常管控] +[异常管控] --> [报表/看板/日报] +[报表/看板/日报] --> [管理层 KPI/现场大屏/追溯查询] ``` 这个主流程是后续所有新增需求的评估底图:任何新增字段都要判断它落在工艺准备、计划排产、生产执行、质检、入库交付、SAP 回写、看板报表中的哪一环。 + +## 17. 逐页详细框线流程图 + +说明:本章按 `元利项目详细分析.md` 的 78 个 `src/views` 页面逐页生成。每个图都按“进入页面 -> 初始化 -> 查询/业务动作 -> 存储过程/SAP/WMS -> 刷新/异常”的结构展开。 + +### 17.1 逐页模块索引流程 + +```text +[登录后进入 Layout] --> [侧边菜单/动态路由] +[侧边菜单/动态路由] --> [404.vue] +[404.vue] --> [404.vue] +[侧边菜单/动态路由] --> [异常管理] +[异常管理] --> [PunctualWork] +[侧边菜单/动态路由] --> [产品结构与工艺基础] +[产品结构与工艺基础] --> [CraftMaintain] +[侧边菜单/动态路由] --> [设备管理] +[设备管理] --> [DeviceDataHistory / DeviceInformation / DeviceRealData / Devicedata] +[侧边菜单/动态路由] --> [计划排产] +[计划排产] --> [InstallMakePlanDo / InstallMakePlan / PlanShell / PlannOrderClose] +[侧边菜单/动态路由] --> [工艺与图纸] +[工艺与图纸] --> [PartDrawing / PartDrawlook / ProcedureManagement / ProcessDrawing] +[侧边菜单/动态路由] --> [生产执行] +[生产执行] --> [AbnormalControl / AssemblePlanTrack / AssembleStatus / AssembleTaskManage] +[侧边菜单/动态路由] --> [质量管理] +[质量管理] --> [OtherInbound.vue / final.vue / firstSpecial.vue / materialReturn.vue] +[侧边菜单/动态路由] --> [销售管理] +[销售管理] --> [saleorderstatus] +[侧边菜单/动态路由] --> [系统维护] +[系统维护] --> [MenuManagement / OperationLog / OrgManagement / PersonnelManagement] +[侧边菜单/动态路由] --> [首页与看板入口] +[首页与看板入口] --> [dashboard] +[侧边菜单/动态路由] --> [布局与导航] +[布局与导航] --> [Layout.vue / AppMain.vue / Navbar.vue / Item.vue] +[侧边菜单/动态路由] --> [登录] +[登录] --> [login] +``` + +### 17.2 404.vue(404.vue) + +#### 1. `src/views/404.vue` + +页面要点:该页面是 404 错误页,用于路由不存在时展示错误信息。 + +```text +[进入页面 / src/views/404.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [页面绘制/路由容器展示 / 未识别到页面级存储过程] +[页面绘制/路由容器展示 / 未识别到页面级存储过程] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [本页主要为查询/展示或容器组件 / 无明确写入动作] +[本页主要为查询/展示或容器组件 / 无明确写入动作] --> [保持当前数据或跳转其他页面] +[保持当前数据或跳转其他页面] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [页面状态/路由/展示数据] +[页面状态/路由/展示数据] --> [用户继续查询/维护或转入下一业务页] +``` + +### 17.3 异常管理(AnomalousManagement) + +#### 2. `src/views/AnomalousManagement/PunctualWork/index.vue` + +页面要点:该页面用于发现“计划应开工但现场未及时开工”的任务。用户按任务状态、工位、工序、异常原因等条件筛选,页面展示生产订单、销售订单、物料、工序、指派对象、分配数量、上序合格数、加工/收料状态和加急数量,服务于生产异常提醒和催办。 页面可见的操作/字段包括 “全部”、“待执行”、“可执行”、“已开工”、“已完成”、“item.指南工位号”、“指 +过程覆盖:`异常提醒_及时开工_查询`、`MES_登录_工位与名称_查询`、`Prog_MES_LoadProcess`、`查询字典` + +```text +[进入页面 / src/views/AnomalousManagement/PunctualWork/index.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [组装查询条件 / 分页/时间/订单/工位] +[组装查询条件 / 分页/时间/订单/工位] --> [type 11(当前通用存储过程查询/执行) / MES_登录_工位与名称_查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / MES_登录_工位与名称_查询 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / Prog_MES_LoadProcess / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / Prog_MES_LoadProcess / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 查询字典 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 查询字典 / 查询/读取数据] --> [ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] +[ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [校验必填项/选中行/数量和状态] +[校验必填项/选中行/数量和状态] --> [type 11(当前通用存储过程查询/执行) / 异常提醒_及时开工_查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 异常提醒_及时开工_查询 / 查询/读取数据] --> [后端写入/更新完成 / 返回成功/失败消息] +[后端写入/更新完成 / 返回成功/失败消息] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [主要数据对象 / MES_接口_生产计划 / MES_接口_生产计划_生产任务 / 登录基础数据_人员信息 / YL_质量检验_质检记录 / 视图:View_生产订单_MES] +[主要数据对象 / MES_接口_生产计划 / MES_接口_生产计划_生产任务 / 登录基础数据_人员信息 / YL_质量检验_质检记录 / 视图:View_生产订单_MES] --> [用户继续查询/维护或转入下一业务页] +``` + +| 环节 | 页面调用/过程 | 用途 | 依赖线索 | +|---|---|---|---| +| 1 | `异常提醒_及时开工_查询` | 查询/读取数据 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务、登录基础数据_人员信息、YL_质量检验_质检记录;视图:View_生产订单_MES | +| 2 | `MES_登录_工位与名称_查询` | 查询/读取数据 | 视图:View_基础数据_工位 | +| 3 | `Prog_MES_LoadProcess` | 查询/读取数据 | 表:基础表_工序 | +| 4 | `查询字典` | 查询/读取数据 | 表:YL_基础表_数据字典 | + +### 17.4 产品结构与工艺基础(CraftManagement) + +#### 3. `src/views/CraftManagement/CraftMaintain/index.vue` + +页面要点:该页面维护产品结构树。用户可以新增、编辑、删除产品结构节点,查询现有产品结构,并为后续工艺、物料、BOM 或生产任务提供层级基础数据。 页面可见的操作/字段包括 “新增”、“编辑”、“删除”、“展开”、“产品结构维护”、“产品材料维护”、“工艺参数维护”,这些是判断页面业务范围的主要线索。 后端主要围绕 WEB_基本表_产品结构_新增、W +过程覆盖:`WEB_基本表_产品结构_新增`、`WEB_基本表_产品结构_查询`、`WEB_基本表_产品结构_删除`、`WEB_基本表_产品结构_修改` + +```text +[进入页面 / src/views/CraftManagement/CraftMaintain/index.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [组装查询条件 / 分页/时间/订单/工位] +[组装查询条件 / 分页/时间/订单/工位] --> [type 11(当前通用存储过程查询/执行) / WEB_基本表_产品结构_查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / WEB_基本表_产品结构_查询 / 查询/读取数据] --> [ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] +[ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [校验必填项/选中行/数量和状态] +[校验必填项/选中行/数量和状态] --> [type 11(当前通用存储过程查询/执行) / WEB_基本表_产品结构_新增 / 新增业务数据] +[type 11(当前通用存储过程查询/执行) / WEB_基本表_产品结构_新增 / 新增业务数据] --> [type 11(当前通用存储过程查询/执行) / WEB_基本表_产品结构_删除 / 删除业务数据] +[type 11(当前通用存储过程查询/执行) / WEB_基本表_产品结构_删除 / 删除业务数据] --> [type 11(当前通用存储过程查询/执行) / WEB_基本表_产品结构_修改 / 更新/保存业务数据] +[type 11(当前通用存储过程查询/执行) / WEB_基本表_产品结构_修改 / 更新/保存业务数据] --> [后端写入/更新完成 / 返回成功/失败消息] +[后端写入/更新完成 / 返回成功/失败消息] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [页面状态/路由/展示数据] +[页面状态/路由/展示数据] --> [用户继续查询/维护或转入下一业务页] +``` + +| 环节 | 页面调用/过程 | 用途 | 依赖线索 | +|---|---|---|---| +| 1 | `WEB_基本表_产品结构_新增` | 新增业务数据 | 未知 | +| 2 | `WEB_基本表_产品结构_查询` | 查询/读取数据 | 未知 | +| 3 | `WEB_基本表_产品结构_删除` | 删除业务数据 | 未知 | +| 4 | `WEB_基本表_产品结构_修改` | 更新/保存业务数据 | 未知 | + +### 17.5 设备管理(DeviceManagement) + +#### 4. `src/views/DeviceManagement/DeviceDataHistory/index.vue` + +页面要点:该页面查询设备历史采集数据。用户按工位/设备、参数名称、起止时间分页查询历史记录,用于追溯设备运行参数。 页面可见的操作/字段包括 “查询”、“item.name”、“设备名称”、“参数名称”、“设备编号”、“数值”、“单位”、“采集时间”、“结束日期”、“开始日期”,这些是判断页面业务范围的主要线索。 后端主要围绕 MES_登录_工位与 +过程覆盖:`MES_登录_工位与名称_查询`、`设备管理_设备数据_历史查询` + +```text +[进入页面 / src/views/DeviceManagement/DeviceDataHistory/index.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [组装查询条件 / 分页/时间/订单/工位] +[组装查询条件 / 分页/时间/订单/工位] --> [type 11(当前通用存储过程查询/执行) / MES_登录_工位与名称_查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / MES_登录_工位与名称_查询 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 设备管理_设备数据_历史查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 设备管理_设备数据_历史查询 / 查询/读取数据] --> [ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] +[ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [本页主要为查询/展示或容器组件 / 无明确写入动作] +[本页主要为查询/展示或容器组件 / 无明确写入动作] --> [保持当前数据或跳转其他页面] +[保持当前数据或跳转其他页面] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [主要数据对象 / View_基础数据_工位] +[主要数据对象 / View_基础数据_工位] --> [用户继续查询/维护或转入下一业务页] +``` + +| 环节 | 页面调用/过程 | 用途 | 依赖线索 | +|---|---|---|---| +| 1 | `MES_登录_工位与名称_查询` | 查询/读取数据 | 视图:View_基础数据_工位 | +| 2 | `设备管理_设备数据_历史查询` | 查询/读取数据 | 未在 SQL 中解析到明确依赖 | + +#### 5. `src/views/DeviceManagement/DeviceInformation/index.vue` + +页面要点:该页面维护设备台账和设备相关基础资料。用户可以查询设备信息,新增、修改、删除设备,维护维修记录、工时记录或点检配置。 页面可见的操作/字段包括 “查询”、“设备”、“--> 取消”、“确定”、“item.name”、“设备名称”、“设备型号”、“设备类型”、“加工工艺”、“工位”,这些是判断页面业务范围的主要线索。 后端主要围绕 查询字典 +过程覆盖:`查询字典`、`设备管理_设备信息_查询`、`设备管理_设备信息_增加`、`设备管理_设备信息_编辑`、`设备管理_设备信息_删除` + +```text +[进入页面 / src/views/DeviceManagement/DeviceInformation/index.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [组装查询条件 / 分页/时间/订单/工位] +[组装查询条件 / 分页/时间/订单/工位] --> [type 11(当前通用存储过程查询/执行) / 查询字典 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 查询字典 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 设备管理_设备信息_查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 设备管理_设备信息_查询 / 查询/读取数据] --> [ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] +[ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [校验必填项/选中行/数量和状态] +[校验必填项/选中行/数量和状态] --> [type 12(当前通用存储过程写入/业务动作) / 设备管理_设备信息_增加 / 新增业务数据] +[type 12(当前通用存储过程写入/业务动作) / 设备管理_设备信息_增加 / 新增业务数据] --> [type 12(当前通用存储过程写入/业务动作) / 设备管理_设备信息_编辑 / 更新/保存业务数据] +[type 12(当前通用存储过程写入/业务动作) / 设备管理_设备信息_编辑 / 更新/保存业务数据] --> [type 12(当前通用存储过程写入/业务动作) / 设备管理_设备信息_删除 / 删除业务数据] +[type 12(当前通用存储过程写入/业务动作) / 设备管理_设备信息_删除 / 删除业务数据] --> [后端写入/更新完成 / 返回成功/失败消息] +[后端写入/更新完成 / 返回成功/失败消息] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [主要数据对象 / YL_基础表_数据字典] +[主要数据对象 / YL_基础表_数据字典] --> [用户继续查询/维护或转入下一业务页] +``` + +| 环节 | 页面调用/过程 | 用途 | 依赖线索 | +|---|---|---|---| +| 1 | `查询字典` | 查询/读取数据 | 表:YL_基础表_数据字典 | +| 2 | `设备管理_设备信息_查询` | 查询/读取数据 | 表:YL_基础表_数据字典 | +| 3 | `设备管理_设备信息_增加` | 新增业务数据 | 未在 SQL 中解析到明确依赖 | +| 4 | `设备管理_设备信息_编辑` | 更新/保存业务数据 | 未在 SQL 中解析到明确依赖 | +| 5 | `设备管理_设备信息_删除` | 删除业务数据 | 未在 SQL 中解析到明确依赖 | + +#### 6. `src/views/DeviceManagement/DeviceRealData/index.vue` + +页面要点:该页面展示设备实时或近实时数据。用户按工位和数据类型查询当前采集值、统计值或状态,通常用于设备运行监控。 页面可见的操作/字段包括 “查询”、“item.name”、“设备名称”、“参数名称”、“参数值”、“操作”、“开始时间”、“结束时间”、“状态”、“时长(m)”,这些是判断页面业务范围的主要线索。 后端主要围绕 设备管理_设备数据_ +过程覆盖:`设备管理_设备数据_工位信息_查询`、`设备管理_设备数据_统计数据查询`、`设备管理_设备数据_统计数据查询_通过类型` + +```text +[进入页面 / src/views/DeviceManagement/DeviceRealData/index.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [组装查询条件 / 分页/时间/订单/工位] +[组装查询条件 / 分页/时间/订单/工位] --> [type 11(当前通用存储过程查询/执行) / 设备管理_设备数据_统计数据查询_通过类型 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 设备管理_设备数据_统计数据查询_通过类型 / 查询/读取数据] --> [ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] +[ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [校验必填项/选中行/数量和状态] +[校验必填项/选中行/数量和状态] --> [type 11(当前通用存储过程查询/执行) / 设备管理_设备数据_工位信息_查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 设备管理_设备数据_工位信息_查询 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 设备管理_设备数据_统计数据查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 设备管理_设备数据_统计数据查询 / 查询/读取数据] --> [后端写入/更新完成 / 返回成功/失败消息] +[后端写入/更新完成 / 返回成功/失败消息] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [主要数据对象 / YL_设备管理_工时记录] +[主要数据对象 / YL_设备管理_工时记录] --> [用户继续查询/维护或转入下一业务页] +``` + +| 环节 | 页面调用/过程 | 用途 | 依赖线索 | +|---|---|---|---| +| 1 | `设备管理_设备数据_工位信息_查询` | 查询/读取数据 | 未在 SQL 中解析到明确依赖 | +| 2 | `设备管理_设备数据_统计数据查询` | 查询/读取数据 | 表:YL_设备管理_工时记录 | +| 3 | `设备管理_设备数据_统计数据查询_通过类型` | 查询/读取数据 | 表:YL_设备管理_工时记录 | + +#### 7. `src/views/DeviceManagement/Devicedata/index.vue` + +页面要点:该页面面向设备采集数据管理,查询缓存变量和设备数据,支持按设备、参数、时间等维度查看实时或历史采集结果。 页面可见的操作/字段包括 “查询”、“item.name”、“设备名称”、“参数名称”、“设备编号”、“数值”、“单位”、“更新时间”、“请选择设备”、“请输入参数名称”,这些是判断页面业务范围的主要线索。 后端主要围绕 MES_登录 +过程覆盖:`MES_登录_工位与名称_查询`、`设备管理_设备数据查询` + +```text +[进入页面 / src/views/DeviceManagement/Devicedata/index.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [组装查询条件 / 分页/时间/订单/工位] +[组装查询条件 / 分页/时间/订单/工位] --> [type 11(当前通用存储过程查询/执行) / MES_登录_工位与名称_查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / MES_登录_工位与名称_查询 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 设备管理_设备数据查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 设备管理_设备数据查询 / 查询/读取数据] --> [ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] +[ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [本页主要为查询/展示或容器组件 / 无明确写入动作] +[本页主要为查询/展示或容器组件 / 无明确写入动作] --> [保持当前数据或跳转其他页面] +[保持当前数据或跳转其他页面] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [主要数据对象 / View_基础数据_工位 / CaChe_Var] +[主要数据对象 / View_基础数据_工位 / CaChe_Var] --> [用户继续查询/维护或转入下一业务页] +``` + +| 环节 | 页面调用/过程 | 用途 | 依赖线索 | +|---|---|---|---| +| 1 | `MES_登录_工位与名称_查询` | 查询/读取数据 | 视图:View_基础数据_工位 | +| 2 | `设备管理_设备数据查询` | 查询/读取数据 | 表:CaChe_Var | + +### 17.6 计划排产(PlanManagement) + +#### 8. `src/views/PlanManagement/InstallMakePlanDo/index.vue` + +页面要点:该页面处理装配件排产。用户查询待排产/已排产装配任务,选择工位和人员,修改计划开工/完成时间、优先级、说明,执行单条派工、二次派工、批量确认排产,并在确认时同步 SAP 生产订单状态或创建相关请求。 页面可见的操作/字段包括 “查询”、“批量排产”、“排产完成”、“确定”、“派工”、“计划排产”、“编辑”、“取 消”、“确 定”、“全部” +过程覆盖:`计划排产_生产订单_已排产订单查询`、`MES_登录_工位与名称_查询`、`MES_OrderPlanned_Queryzp`、`Prog_MES_LoadStations`、`系统管理_人员管理_所有有效人员查询`、`MES_OrderPlanned_EditTaskPlanned`、`计划排产_二次派工`、`计划排产_派工`、`MES_OrderPlanned_SingleTaskPlanned`、`MES_OrderPlanned_Finish`、... + +```text +[进入页面 / src/views/PlanManagement/InstallMakePlanDo/index.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [组装查询条件 / 分页/时间/订单/工位] +[组装查询条件 / 分页/时间/订单/工位] --> [type 11(当前通用存储过程查询/执行) / MES_登录_工位与名称_查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / MES_登录_工位与名称_查询 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / Prog_MES_LoadStations / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / Prog_MES_LoadStations / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 系统管理_人员管理_所有有效人员查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 系统管理_人员管理_所有有效人员查询 / 查询/读取数据] --> [ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] +[ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [校验必填项/选中行/数量和状态] +[校验必填项/选中行/数量和状态] --> [type 11(当前通用存储过程查询/执行) / 计划排产_生产订单_已排产订单查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 计划排产_生产订单_已排产订单查询 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / MES_OrderPlanned_Queryzp / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / MES_OrderPlanned_Queryzp / 查询/读取数据] --> [type 12(当前通用存储过程写入/业务动作) / MES_OrderPlanned_EditTaskPlanned / 更新/保存业务数据] +[type 12(当前通用存储过程写入/业务动作) / MES_OrderPlanned_EditTaskPlanned / 更新/保存业务数据] --> [type 12(当前通用存储过程写入/业务动作) / 计划排产_二次派工 / 计划排产或派工] +[type 12(当前通用存储过程写入/业务动作) / 计划排产_二次派工 / 计划排产或派工] --> [type 12(当前通用存储过程写入/业务动作) / 计划排产_派工 / 计划排产或派工] +[type 12(当前通用存储过程写入/业务动作) / 计划排产_派工 / 计划排产或派工] --> [type 12(当前通用存储过程写入/业务动作) / MES_OrderPlanned_SingleTaskPlanned / 计划排产或派工] +[type 12(当前通用存储过程写入/业务动作) / MES_OrderPlanned_SingleTaskPlanned / 计划排产或派工] --> [后端写入/更新完成 / 返回成功/失败消息] +[后端写入/更新完成 / 返回成功/失败消息] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [主要数据对象 / MES_接口_生产计划 / MES_接口_生产计划_生产任务 / View_基础数据_工位 / 车间生产管理工艺_零件生产工艺_工艺库 / 视图:View_生产订单_MES] +[主要数据对象 / MES_接口_生产计划 / MES_接口_生产计划_生产任务 / View_基础数据_工位 / 车间生产管理工艺_零件生产工艺_工艺库 / 视图:View_生产订单_MES] --> [用户继续查询/维护或转入下一业务页] +``` + +| 环节 | 页面调用/过程 | 用途 | 依赖线索 | +|---|---|---|---| +| 1 | `计划排产_生产订单_已排产订单查询` | 查询/读取数据 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务 | +| 2 | `MES_登录_工位与名称_查询` | 查询/读取数据 | 视图:View_基础数据_工位 | +| 3 | `MES_OrderPlanned_Queryzp` | 查询/读取数据 | 表:车间生产管理工艺_零件生产工艺_工艺库;视图:View_生产订单_MES | +| 4 | `Prog_MES_LoadStations` | 查询/读取数据 | 表:MES_资源主数据 | +| 5 | `系统管理_人员管理_所有有效人员查询` | 查询/读取数据 | 视图:登录基础数据_管理人员权限视图 | +| 6 | `MES_OrderPlanned_EditTaskPlanned` | 更新/保存业务数据 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务 | +| 7 | `计划排产_二次派工` | 计划排产或派工 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务 | +| 8 | `计划排产_派工` | 计划排产或派工 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务 | +| 9 | `MES_OrderPlanned_SingleTaskPlanned` | 计划排产或派工 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务 | +| 10 | `MES_OrderPlanned_Finish` | 确认/关闭/完成业务动作 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务 | +| 11 | `MES_OrderPlanned_DescriptionEdit` | 更新/保存业务数据 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务 | +| 12 | `计划排产_自制件_日程时间修改` | 更新/保存业务数据 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务 | + +#### 9. `src/views/PlanManagement/InstallMakePlan/index.vue` + +页面要点:该页面处理装配件排产。用户查询待排产/已排产装配任务,选择工位和人员,修改计划开工/完成时间、优先级、说明,执行单条派工、二次派工、批量确认排产,并在确认时同步 SAP 生产订单状态或创建相关请求。 页面可见的操作/字段包括 “查询”、“批量排产”、“排产完成”、“确定”、“派工”、“计划排产”、“编辑”、“取 消”、“确 定”、“全部” +过程覆盖:`计划排产_生产订单_已排产订单查询`、`MES_登录_工位与名称_查询`、`MES_OrderPlanned_Queryzp`、`Prog_MES_LoadStations`、`系统管理_人员管理_所有有效人员查询`、`MES_OrderPlanned_EditTaskPlanned`、`计划排产_二次派工`、`计划排产_派工`、`MES_OrderPlanned_SingleTaskPlanned`、`MES_OrderPlanned_Finish`、... + +```text +[进入页面 / src/views/PlanManagement/InstallMakePlan/index.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [组装查询条件 / 分页/时间/订单/工位] +[组装查询条件 / 分页/时间/订单/工位] --> [type 11(当前通用存储过程查询/执行) / MES_登录_工位与名称_查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / MES_登录_工位与名称_查询 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / Prog_MES_LoadStations / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / Prog_MES_LoadStations / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 系统管理_人员管理_所有有效人员查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 系统管理_人员管理_所有有效人员查询 / 查询/读取数据] --> [ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] +[ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [校验必填项/选中行/数量和状态] +[校验必填项/选中行/数量和状态] --> [type 11(当前通用存储过程查询/执行) / 计划排产_生产订单_已排产订单查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 计划排产_生产订单_已排产订单查询 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / MES_OrderPlanned_Queryzp / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / MES_OrderPlanned_Queryzp / 查询/读取数据] --> [type 12(当前通用存储过程写入/业务动作) / MES_OrderPlanned_EditTaskPlanned / 更新/保存业务数据] +[type 12(当前通用存储过程写入/业务动作) / MES_OrderPlanned_EditTaskPlanned / 更新/保存业务数据] --> [type 12(当前通用存储过程写入/业务动作) / 计划排产_二次派工 / 计划排产或派工] +[type 12(当前通用存储过程写入/业务动作) / 计划排产_二次派工 / 计划排产或派工] --> [type 12(当前通用存储过程写入/业务动作) / 计划排产_派工 / 计划排产或派工] +[type 12(当前通用存储过程写入/业务动作) / 计划排产_派工 / 计划排产或派工] --> [type 12(当前通用存储过程写入/业务动作) / MES_OrderPlanned_SingleTaskPlanned / 计划排产或派工] +[type 12(当前通用存储过程写入/业务动作) / MES_OrderPlanned_SingleTaskPlanned / 计划排产或派工] --> [后端写入/更新完成 / 返回成功/失败消息] +[后端写入/更新完成 / 返回成功/失败消息] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [主要数据对象 / MES_接口_生产计划 / MES_接口_生产计划_生产任务 / View_基础数据_工位 / 车间生产管理工艺_零件生产工艺_工艺库 / 视图:View_生产订单_MES] +[主要数据对象 / MES_接口_生产计划 / MES_接口_生产计划_生产任务 / View_基础数据_工位 / 车间生产管理工艺_零件生产工艺_工艺库 / 视图:View_生产订单_MES] --> [用户继续查询/维护或转入下一业务页] +``` + +| 环节 | 页面调用/过程 | 用途 | 依赖线索 | +|---|---|---|---| +| 1 | `计划排产_生产订单_已排产订单查询` | 查询/读取数据 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务 | +| 2 | `MES_登录_工位与名称_查询` | 查询/读取数据 | 视图:View_基础数据_工位 | +| 3 | `MES_OrderPlanned_Queryzp` | 查询/读取数据 | 表:车间生产管理工艺_零件生产工艺_工艺库;视图:View_生产订单_MES | +| 4 | `Prog_MES_LoadStations` | 查询/读取数据 | 表:MES_资源主数据 | +| 5 | `系统管理_人员管理_所有有效人员查询` | 查询/读取数据 | 视图:登录基础数据_管理人员权限视图 | +| 6 | `MES_OrderPlanned_EditTaskPlanned` | 更新/保存业务数据 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务 | +| 7 | `计划排产_二次派工` | 计划排产或派工 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务 | +| 8 | `计划排产_派工` | 计划排产或派工 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务 | +| 9 | `MES_OrderPlanned_SingleTaskPlanned` | 计划排产或派工 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务 | +| 10 | `MES_OrderPlanned_Finish` | 确认/关闭/完成业务动作 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务 | +| 11 | `MES_OrderPlanned_DescriptionEdit` | 更新/保存业务数据 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务 | +| 12 | `计划排产_自制件_日程时间修改` | 更新/保存业务数据 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务 | + +#### 10. `src/views/PlanManagement/PlanShell/index.vue` + +页面要点:该页面是计划外壳/计划跟踪类页面,按缺料、发货通知、完成状态等条件查询计划或装配相关任务,用于计划人员集中查看订单齐套、发货和关闭情况。 页面可见的操作/字段包括 “查询”、“缺料”、“关闭”、“全部”、“已下达发货通知”、“未下达发货通知”、“是”、“否”、“已完成”、“未完成”,这些是判断页面业务范围的主要线索。 后端主要围绕 生产管 +过程覆盖:`生产管理_装配中心_缺料查询`、`计划排产_查询计划信息`、`MES_OrderPlanned_DescriptionEdit`、`Prog_MES_LoadStations` + +```text +[进入页面 / src/views/PlanManagement/PlanShell/index.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [组装查询条件 / 分页/时间/订单/工位] +[组装查询条件 / 分页/时间/订单/工位] --> [type 11(当前通用存储过程查询/执行) / 生产管理_装配中心_缺料查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 生产管理_装配中心_缺料查询 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / Prog_MES_LoadStations / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / Prog_MES_LoadStations / 查询/读取数据] --> [ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] +[ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [校验必填项/选中行/数量和状态] +[校验必填项/选中行/数量和状态] --> [type 11(当前通用存储过程查询/执行) / 计划排产_查询计划信息 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 计划排产_查询计划信息 / 查询/读取数据] --> [type 12(当前通用存储过程写入/业务动作) / MES_OrderPlanned_DescriptionEdit / 更新/保存业务数据] +[type 12(当前通用存储过程写入/业务动作) / MES_OrderPlanned_DescriptionEdit / 更新/保存业务数据] --> [后端写入/更新完成 / 返回成功/失败消息] +[后端写入/更新完成 / 返回成功/失败消息] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [主要数据对象 / SAP.SBO_YL.dbo.UBT_OPKL_MissQty / View_生产订单_MES / MES_接口_生产计划 / MES_接口_生产计划_生产任务 / MES_资源主数据] +[主要数据对象 / SAP.SBO_YL.dbo.UBT_OPKL_MissQty / View_生产订单_MES / MES_接口_生产计划 / MES_接口_生产计划_生产任务 / MES_资源主数据] --> [用户继续查询/维护或转入下一业务页] +``` + +| 环节 | 页面调用/过程 | 用途 | 依赖线索 | +|---|---|---|---| +| 1 | `生产管理_装配中心_缺料查询` | 查询/读取数据 | SAP/链接库:SAP.SBO_YL.dbo.UBT_OPKL_MissQty | +| 2 | `计划排产_查询计划信息` | 查询/读取数据 | 视图:View_生产订单_MES | +| 3 | `MES_OrderPlanned_DescriptionEdit` | 更新/保存业务数据 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务 | +| 4 | `Prog_MES_LoadStations` | 查询/读取数据 | 表:MES_资源主数据 | + +#### 11. `src/views/PlanManagement/PlannOrderClose/index.vue` + +页面要点:该页面用于生产订单关闭。用户筛选 SAP 未关闭或 MES 待确认订单,执行 SAP 生产订单关闭,并调用 MES 过程记录或确认订单关闭状态。 页面可见的操作/字段包括 “查询”、“确认”、“关闭”、“全部”、“已关闭”、“未关闭”、“可关闭”、“SAP未关闭”、“机加”、“装配”,这些是判断页面业务范围的主要线索。 后端主要围绕 计划 +过程覆盖:`计划排产_生产订单关闭_查询全部订单`、`计划排产_生产订单关闭_关闭订单`、`计划排产_生产订单关闭_确认订单` + +```text +[进入页面 / src/views/PlanManagement/PlannOrderClose/index.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [页面绘制/路由容器展示 / 未识别到页面级存储过程] +[页面绘制/路由容器展示 / 未识别到页面级存储过程] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [校验必填项/选中行/数量和状态] +[校验必填项/选中行/数量和状态] --> [type 11(当前通用存储过程查询/执行) / 计划排产_生产订单关闭_查询全部订单 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 计划排产_生产订单关闭_查询全部订单 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 计划排产_生产订单关闭_关闭订单 / 确认/关闭/完成业务动作] +[type 11(当前通用存储过程查询/执行) / 计划排产_生产订单关闭_关闭订单 / 确认/关闭/完成业务动作] --> [type 12(当前通用存储过程写入/业务动作) / 计划排产_生产订单关闭_确认订单 / 确认/关闭/完成业务动作] +[type 12(当前通用存储过程写入/业务动作) / 计划排产_生产订单关闭_确认订单 / 确认/关闭/完成业务动作] --> [后端写入/更新完成 / 返回成功/失败消息] +[后端写入/更新完成 / 返回成功/失败消息] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [主要数据对象 / MES_接口_生产计划 / YL_质量检验_质检记录 / 视图:View_生产工时视图] +[主要数据对象 / MES_接口_生产计划 / YL_质量检验_质检记录 / 视图:View_生产工时视图] --> [用户继续查询/维护或转入下一业务页] +``` + +| 环节 | 页面调用/过程 | 用途 | 依赖线索 | +|---|---|---|---| +| 1 | `计划排产_生产订单关闭_查询全部订单` | 查询/读取数据 | 表:MES_接口_生产计划、YL_质量检验_质检记录 | +| 2 | `计划排产_生产订单关闭_关闭订单` | 确认/关闭/完成业务动作 | 表:MES_接口_生产计划;视图:View_生产工时视图 | +| 3 | `计划排产_生产订单关闭_确认订单` | 确认/关闭/完成业务动作 | 表:MES_接口_生产计划 | + +#### 12. `src/views/PlanManagement/SelfMakePlan/index.vue` + +页面要点:该页面处理自制件/机加件排产。用户查询生产订单工序任务,筛选订单、合同、物料、工序、计划时间、排产状态和指派对象,完成工位派工、人员二次派工、外协分组、计划说明维护和排产确认。 页面可见的操作/字段包括 “查询”、“批量排产”、“排产完成”、“确定”、“派工”、“计划排产”、“编辑”、“取 消”、“确 定”、“全部”,这些是判断页面业务范 +过程覆盖:`计划排产_生产订单_已排产订单查询`、`MES_登录_工位与名称_查询`、`MES_OrderPlanned_Query`、`Prog_MES_LoadStations`、`系统管理_人员管理_所有有效人员查询`、`MES_OrderPlanned_EditTaskPlanned`、`计划排产_二次派工`、`MES_OrderPlanned_SingleTaskPlanned`、`MES_OrderPlanned_Finish`、`MES_OrderPlanned_DescriptionEdit`、... + +```text +[进入页面 / src/views/PlanManagement/SelfMakePlan/index.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [组装查询条件 / 分页/时间/订单/工位] +[组装查询条件 / 分页/时间/订单/工位] --> [type 11(当前通用存储过程查询/执行) / MES_登录_工位与名称_查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / MES_登录_工位与名称_查询 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / Prog_MES_LoadStations / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / Prog_MES_LoadStations / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 系统管理_人员管理_所有有效人员查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 系统管理_人员管理_所有有效人员查询 / 查询/读取数据] --> [ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] +[ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [校验必填项/选中行/数量和状态] +[校验必填项/选中行/数量和状态] --> [type 11(当前通用存储过程查询/执行) / 计划排产_生产订单_已排产订单查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 计划排产_生产订单_已排产订单查询 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / MES_OrderPlanned_Query / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / MES_OrderPlanned_Query / 查询/读取数据] --> [type 12(当前通用存储过程写入/业务动作) / MES_OrderPlanned_EditTaskPlanned / 更新/保存业务数据] +[type 12(当前通用存储过程写入/业务动作) / MES_OrderPlanned_EditTaskPlanned / 更新/保存业务数据] --> [type 12(当前通用存储过程写入/业务动作) / 计划排产_二次派工 / 计划排产或派工] +[type 12(当前通用存储过程写入/业务动作) / 计划排产_二次派工 / 计划排产或派工] --> [type 12(当前通用存储过程写入/业务动作) / MES_OrderPlanned_SingleTaskPlanned / 计划排产或派工] +[type 12(当前通用存储过程写入/业务动作) / MES_OrderPlanned_SingleTaskPlanned / 计划排产或派工] --> [type 11(当前通用存储过程查询/执行) / MES_OrderPlanned_Finish / 确认/关闭/完成业务动作] +[type 11(当前通用存储过程查询/执行) / MES_OrderPlanned_Finish / 确认/关闭/完成业务动作] --> [后端写入/更新完成 / 返回成功/失败消息] +[后端写入/更新完成 / 返回成功/失败消息] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [主要数据对象 / MES_接口_生产计划 / MES_接口_生产计划_生产任务 / View_基础数据_工位 / 车间生产管理工艺_零件生产工艺_工艺库 / 视图:View_生产订单_MES] +[主要数据对象 / MES_接口_生产计划 / MES_接口_生产计划_生产任务 / View_基础数据_工位 / 车间生产管理工艺_零件生产工艺_工艺库 / 视图:View_生产订单_MES] --> [用户继续查询/维护或转入下一业务页] +``` + +| 环节 | 页面调用/过程 | 用途 | 依赖线索 | +|---|---|---|---| +| 1 | `计划排产_生产订单_已排产订单查询` | 查询/读取数据 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务 | +| 2 | `MES_登录_工位与名称_查询` | 查询/读取数据 | 视图:View_基础数据_工位 | +| 3 | `MES_OrderPlanned_Query` | 查询/读取数据 | 表:车间生产管理工艺_零件生产工艺_工艺库;视图:View_生产订单_MES | +| 4 | `Prog_MES_LoadStations` | 查询/读取数据 | 表:MES_资源主数据 | +| 5 | `系统管理_人员管理_所有有效人员查询` | 查询/读取数据 | 视图:登录基础数据_管理人员权限视图 | +| 6 | `MES_OrderPlanned_EditTaskPlanned` | 更新/保存业务数据 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务 | +| 7 | `计划排产_二次派工` | 计划排产或派工 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务 | +| 8 | `MES_OrderPlanned_SingleTaskPlanned` | 计划排产或派工 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务 | +| 9 | `MES_OrderPlanned_Finish` | 确认/关闭/完成业务动作 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务 | +| 10 | `MES_OrderPlanned_DescriptionEdit` | 更新/保存业务数据 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务 | +| 11 | `计划排产_自制件_日程时间修改` | 更新/保存业务数据 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务 | + +#### 13. `src/views/PlanManagement/SelfMakePlando/index.vue` + +页面要点:该页面处理自制件/机加件排产。用户查询生产订单工序任务,筛选订单、合同、物料、工序、计划时间、排产状态和指派对象,完成工位派工、人员二次派工、外协分组、计划说明维护和排产确认。 页面可见的操作/字段包括 “查询”、“批量排产”、“排产完成”、“确定”、“查看”、“零件图纸”、“工艺图纸”、“编辑”、“计划排产”、“取 消”,这些是判断页面 +过程覆盖:`工艺管理_图纸维护_查看图纸`、`工艺管理_工艺维护_查看图纸`、`工艺管理_获取物料原料信息`、`计划排产_生产订单_已排产订单查询`、`MES_登录_工位与名称_查询`、`MES_OrderPlanned_Query`、`Prog_MES_LoadStations`、`系统管理_人员管理_所有有效人员查询`、`MES_OrderPlanned_EditTaskPlanned`、`计划排产_二次派工`、... + +```text +[进入页面 / src/views/PlanManagement/SelfMakePlando/index.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [组装查询条件 / 分页/时间/订单/工位] +[组装查询条件 / 分页/时间/订单/工位] --> [type 11(当前通用存储过程查询/执行) / 工艺管理_图纸维护_查看图纸 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 工艺管理_图纸维护_查看图纸 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 工艺管理_工艺维护_查看图纸 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 工艺管理_工艺维护_查看图纸 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 工艺管理_获取物料原料信息 / 业务存储过程调用] +[type 11(当前通用存储过程查询/执行) / 工艺管理_获取物料原料信息 / 业务存储过程调用] --> [type 11(当前通用存储过程查询/执行) / MES_登录_工位与名称_查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / MES_登录_工位与名称_查询 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / Prog_MES_LoadStations / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / Prog_MES_LoadStations / 查询/读取数据] --> [ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] +[ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [校验必填项/选中行/数量和状态] +[校验必填项/选中行/数量和状态] --> [type 11(当前通用存储过程查询/执行) / 计划排产_生产订单_已排产订单查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 计划排产_生产订单_已排产订单查询 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / MES_OrderPlanned_Query / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / MES_OrderPlanned_Query / 查询/读取数据] --> [type 12(当前通用存储过程写入/业务动作) / MES_OrderPlanned_EditTaskPlanned / 更新/保存业务数据] +[type 12(当前通用存储过程写入/业务动作) / MES_OrderPlanned_EditTaskPlanned / 更新/保存业务数据] --> [type 12(当前通用存储过程写入/业务动作) / 计划排产_二次派工 / 计划排产或派工] +[type 12(当前通用存储过程写入/业务动作) / 计划排产_二次派工 / 计划排产或派工] --> [type 12(当前通用存储过程写入/业务动作) / MES_OrderPlanned_SingleTaskPlanned / 计划排产或派工] +[type 12(当前通用存储过程写入/业务动作) / MES_OrderPlanned_SingleTaskPlanned / 计划排产或派工] --> [type 12(当前通用存储过程写入/业务动作) / 计划排产_外协分组 / 计划排产或派工] +[type 12(当前通用存储过程写入/业务动作) / 计划排产_外协分组 / 计划排产或派工] --> [后端写入/更新完成 / 返回成功/失败消息] +[后端写入/更新完成 / 返回成功/失败消息] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [主要数据对象 / 物料基础数据_零件图纸 / 物料基础数据_工艺图纸 / SAP.SBO_YL.dbo.UBT_OWOR_material / MES_接口_生产计划 / MES_接口_生产计划_生产任务] +[主要数据对象 / 物料基础数据_零件图纸 / 物料基础数据_工艺图纸 / SAP.SBO_YL.dbo.UBT_OWOR_material / MES_接口_生产计划 / MES_接口_生产计划_生产任务] --> [用户继续查询/维护或转入下一业务页] +``` + +| 环节 | 页面调用/过程 | 用途 | 依赖线索 | +|---|---|---|---| +| 1 | `工艺管理_图纸维护_查看图纸` | 查询/读取数据 | 表:物料基础数据_零件图纸 | +| 2 | `工艺管理_工艺维护_查看图纸` | 查询/读取数据 | 表:物料基础数据_工艺图纸 | +| 3 | `工艺管理_获取物料原料信息` | 业务存储过程调用 | SAP/链接库:SAP.SBO_YL.dbo.UBT_OWOR_material | +| 4 | `计划排产_生产订单_已排产订单查询` | 查询/读取数据 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务 | +| 5 | `MES_登录_工位与名称_查询` | 查询/读取数据 | 视图:View_基础数据_工位 | +| 6 | `MES_OrderPlanned_Query` | 查询/读取数据 | 表:车间生产管理工艺_零件生产工艺_工艺库;视图:View_生产订单_MES | +| 7 | `Prog_MES_LoadStations` | 查询/读取数据 | 表:MES_资源主数据 | +| 8 | `系统管理_人员管理_所有有效人员查询` | 查询/读取数据 | 视图:登录基础数据_管理人员权限视图 | +| 9 | `MES_OrderPlanned_EditTaskPlanned` | 更新/保存业务数据 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务 | +| 10 | `计划排产_二次派工` | 计划排产或派工 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务 | +| 11 | `MES_OrderPlanned_SingleTaskPlanned` | 计划排产或派工 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务 | +| 12 | `计划排产_外协分组` | 计划排产或派工 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务 | +| ... | ... | 共 15 个过程,此处仅列前 12 个 | 详见分析文档对应页面段落 | + +#### 14. `src/views/PlanManagement/SelfMakePlandone/index.vue` + +页面要点:该页面处理自制件/机加件排产。用户查询生产订单工序任务,筛选订单、合同、物料、工序、计划时间、排产状态和指派对象,完成工位派工、人员二次派工、外协分组、计划说明维护和排产确认。 页面可见的操作/字段包括 “查询”、“确定”、“查看”、“派工”、“编辑”、“取 消”、“确 定”、“全部”、“已完成”、“未完成”,这些是判断页面业务范围的主要 +过程覆盖:`工艺管理_获取物料原料信息`、`计划排产_生产订单_已排产订单查询`、`MES_登录_工位与名称_查询`、`MES_OrderPlanned_Query`、`Prog_MES_LoadStations`、`系统管理_人员管理_所有有效人员查询`、`MES_OrderPlanned_EditTaskPlanned`、`计划排产_二次派工`、`MES_OrderPlanned_SingleTaskPlanned`、`计划排产_外协分组`、... + +```text +[进入页面 / src/views/PlanManagement/SelfMakePlandone/index.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [组装查询条件 / 分页/时间/订单/工位] +[组装查询条件 / 分页/时间/订单/工位] --> [type 11(当前通用存储过程查询/执行) / 工艺管理_获取物料原料信息 / 业务存储过程调用] +[type 11(当前通用存储过程查询/执行) / 工艺管理_获取物料原料信息 / 业务存储过程调用] --> [type 11(当前通用存储过程查询/执行) / MES_登录_工位与名称_查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / MES_登录_工位与名称_查询 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / Prog_MES_LoadStations / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / Prog_MES_LoadStations / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 系统管理_人员管理_所有有效人员查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 系统管理_人员管理_所有有效人员查询 / 查询/读取数据] --> [ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] +[ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [校验必填项/选中行/数量和状态] +[校验必填项/选中行/数量和状态] --> [type 11(当前通用存储过程查询/执行) / 计划排产_生产订单_已排产订单查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 计划排产_生产订单_已排产订单查询 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / MES_OrderPlanned_Query / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / MES_OrderPlanned_Query / 查询/读取数据] --> [type 12(当前通用存储过程写入/业务动作) / MES_OrderPlanned_EditTaskPlanned / 更新/保存业务数据] +[type 12(当前通用存储过程写入/业务动作) / MES_OrderPlanned_EditTaskPlanned / 更新/保存业务数据] --> [type 12(当前通用存储过程写入/业务动作) / 计划排产_二次派工 / 计划排产或派工] +[type 12(当前通用存储过程写入/业务动作) / 计划排产_二次派工 / 计划排产或派工] --> [type 12(当前通用存储过程写入/业务动作) / MES_OrderPlanned_SingleTaskPlanned / 计划排产或派工] +[type 12(当前通用存储过程写入/业务动作) / MES_OrderPlanned_SingleTaskPlanned / 计划排产或派工] --> [type 12(当前通用存储过程写入/业务动作) / 计划排产_外协分组 / 计划排产或派工] +[type 12(当前通用存储过程写入/业务动作) / 计划排产_外协分组 / 计划排产或派工] --> [后端写入/更新完成 / 返回成功/失败消息] +[后端写入/更新完成 / 返回成功/失败消息] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [主要数据对象 / SAP.SBO_YL.dbo.UBT_OWOR_material / MES_接口_生产计划 / MES_接口_生产计划_生产任务 / View_基础数据_工位 / 车间生产管理工艺_零件生产工艺_工艺库] +[主要数据对象 / SAP.SBO_YL.dbo.UBT_OWOR_material / MES_接口_生产计划 / MES_接口_生产计划_生产任务 / View_基础数据_工位 / 车间生产管理工艺_零件生产工艺_工艺库] --> [用户继续查询/维护或转入下一业务页] +``` + +| 环节 | 页面调用/过程 | 用途 | 依赖线索 | +|---|---|---|---| +| 1 | `工艺管理_获取物料原料信息` | 业务存储过程调用 | SAP/链接库:SAP.SBO_YL.dbo.UBT_OWOR_material | +| 2 | `计划排产_生产订单_已排产订单查询` | 查询/读取数据 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务 | +| 3 | `MES_登录_工位与名称_查询` | 查询/读取数据 | 视图:View_基础数据_工位 | +| 4 | `MES_OrderPlanned_Query` | 查询/读取数据 | 表:车间生产管理工艺_零件生产工艺_工艺库;视图:View_生产订单_MES | +| 5 | `Prog_MES_LoadStations` | 查询/读取数据 | 表:MES_资源主数据 | +| 6 | `系统管理_人员管理_所有有效人员查询` | 查询/读取数据 | 视图:登录基础数据_管理人员权限视图 | +| 7 | `MES_OrderPlanned_EditTaskPlanned` | 更新/保存业务数据 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务 | +| 8 | `计划排产_二次派工` | 计划排产或派工 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务 | +| 9 | `MES_OrderPlanned_SingleTaskPlanned` | 计划排产或派工 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务 | +| 10 | `计划排产_外协分组` | 计划排产或派工 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务 | +| 11 | `MES_OrderPlanned_Finish` | 确认/关闭/完成业务动作 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务 | +| 12 | `MES_OrderPlanned_DescriptionEdit` | 更新/保存业务数据 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务 | +| ... | ... | 共 13 个过程,此处仅列前 12 个 | 详见分析文档对应页面段落 | + +#### 15. `src/views/PlanManagement/priorityinstall/index.vue` + +页面要点:该页面用于装配优先级调整。用户查询装配计划任务,修改计划开工/完成时间、派工对象或优先级,用于插单和重点订单排序。 页面可见的操作/字段包括 “查询”、“月”、“周”、“日”、“今天”、“表单”、“生产订单”、“计划号”、“物料编码”、“物料名称”,这些是判断页面业务范围的主要线索。 后端主要围绕 MES_OrderPlanned_Que +过程覆盖:`MES_OrderPlanned_Queryzp`、`MES_OrderPlanned_EditTaskPlanned` + +```text +[进入页面 / src/views/PlanManagement/priorityinstall/index.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [页面绘制/路由容器展示 / 未识别到页面级存储过程] +[页面绘制/路由容器展示 / 未识别到页面级存储过程] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [校验必填项/选中行/数量和状态] +[校验必填项/选中行/数量和状态] --> [type 11(当前通用存储过程查询/执行) / MES_OrderPlanned_Queryzp / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / MES_OrderPlanned_Queryzp / 查询/读取数据] --> [type 12(当前通用存储过程写入/业务动作) / MES_OrderPlanned_EditTaskPlanned / 更新/保存业务数据] +[type 12(当前通用存储过程写入/业务动作) / MES_OrderPlanned_EditTaskPlanned / 更新/保存业务数据] --> [后端写入/更新完成 / 返回成功/失败消息] +[后端写入/更新完成 / 返回成功/失败消息] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [主要数据对象 / 车间生产管理工艺_零件生产工艺_工艺库 / 视图:View_生产订单_MES / MES_接口_生产计划 / MES_接口_生产计划_生产任务] +[主要数据对象 / 车间生产管理工艺_零件生产工艺_工艺库 / 视图:View_生产订单_MES / MES_接口_生产计划 / MES_接口_生产计划_生产任务] --> [用户继续查询/维护或转入下一业务页] +``` + +| 环节 | 页面调用/过程 | 用途 | 依赖线索 | +|---|---|---|---| +| 1 | `MES_OrderPlanned_Queryzp` | 查询/读取数据 | 表:车间生产管理工艺_零件生产工艺_工艺库;视图:View_生产订单_MES | +| 2 | `MES_OrderPlanned_EditTaskPlanned` | 更新/保存业务数据 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务 | + +### 17.7 工艺与图纸(ProcessManagement) + +#### 16. `src/views/ProcessManagement/PartDrawing/index.vue` + +页面要点:该页面维护零件图纸。用户按物料查询图纸、查看文件、验证名称、删除图纸并保留删除记录。 页面可见的操作/字段包括 “查询”、“零件图”、“选零件上传零件图”、“查看删除记录”、“查看”、“删除”、“取消”、“确定”、“关闭”、“查看信息”,这些是判断页面业务范围的主要线索。 后端主要围绕 工艺管理_图纸维护_查询删除记录、工艺管理_图纸维护 +过程覆盖:`工艺管理_图纸维护_查询删除记录`、`工艺管理_图纸维护_零件图查询`、`工艺管理_图纸维护_物料查询`、`工艺管理_图纸维护_验证名称`、`工艺管理_图纸维护_查看图纸`、`工艺管理_图纸维护_删除图纸` + +```text +[进入页面 / src/views/ProcessManagement/PartDrawing/index.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [组装查询条件 / 分页/时间/订单/工位] +[组装查询条件 / 分页/时间/订单/工位] --> [type 11(当前通用存储过程查询/执行) / 工艺管理_图纸维护_零件图查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 工艺管理_图纸维护_零件图查询 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 工艺管理_图纸维护_物料查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 工艺管理_图纸维护_物料查询 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 工艺管理_图纸维护_验证名称 / 业务存储过程调用] +[type 11(当前通用存储过程查询/执行) / 工艺管理_图纸维护_验证名称 / 业务存储过程调用] --> [type 11(当前通用存储过程查询/执行) / 工艺管理_图纸维护_查看图纸 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 工艺管理_图纸维护_查看图纸 / 查询/读取数据] --> [ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] +[ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [校验必填项/选中行/数量和状态] +[校验必填项/选中行/数量和状态] --> [type 11(当前通用存储过程查询/执行) / 工艺管理_图纸维护_查询删除记录 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 工艺管理_图纸维护_查询删除记录 / 查询/读取数据] --> [type 12(当前通用存储过程写入/业务动作) / 工艺管理_图纸维护_删除图纸 / 删除业务数据] +[type 12(当前通用存储过程写入/业务动作) / 工艺管理_图纸维护_删除图纸 / 删除业务数据] --> [后端写入/更新完成 / 返回成功/失败消息] +[后端写入/更新完成 / 返回成功/失败消息] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [主要数据对象 / View_图纸视图 / SAP.SBO_YL.dbo.UBT_OITM / 物料数据 / 物料基础数据_零件图纸] +[主要数据对象 / View_图纸视图 / SAP.SBO_YL.dbo.UBT_OITM / 物料数据 / 物料基础数据_零件图纸] --> [用户继续查询/维护或转入下一业务页] +``` + +| 环节 | 页面调用/过程 | 用途 | 依赖线索 | +|---|---|---|---| +| 1 | `工艺管理_图纸维护_查询删除记录` | 查询/读取数据 | 未在 SQL 中解析到明确依赖 | +| 2 | `工艺管理_图纸维护_零件图查询` | 查询/读取数据 | 视图:View_图纸视图 | +| 3 | `工艺管理_图纸维护_物料查询` | 查询/读取数据 | SAP/链接库:SAP.SBO_YL.dbo.UBT_OITM | +| 4 | `工艺管理_图纸维护_验证名称` | 业务存储过程调用 | 表:物料数据 | +| 5 | `工艺管理_图纸维护_查看图纸` | 查询/读取数据 | 表:物料基础数据_零件图纸 | +| 6 | `工艺管理_图纸维护_删除图纸` | 删除业务数据 | 表:物料基础数据_零件图纸 | + +#### 17. `src/views/ProcessManagement/PartDrawlook/index.vue` + +页面要点:该页面偏只读查看零件图纸,通常给生产或质检人员按物料快速打开图纸。 页面可见的操作/字段包括 “查询”、“查看”、“删除”、“取消”、“确定”、“关闭”、“item.物料编码”、“序号”、“物料编号”、“物料名称”,这些是判断页面业务范围的主要线索。 后端主要围绕 工艺管理_图纸维护_查询删除记录、工艺管理_图纸维护_零件图查询全部、工艺 +过程覆盖:`工艺管理_图纸维护_查询删除记录`、`工艺管理_图纸维护_零件图查询全部`、`工艺管理_图纸维护_物料查询`、`工艺管理_图纸维护_验证名称`、`工艺管理_图纸维护_查看图纸`、`工艺管理_图纸维护_删除图纸` + +```text +[进入页面 / src/views/ProcessManagement/PartDrawlook/index.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [组装查询条件 / 分页/时间/订单/工位] +[组装查询条件 / 分页/时间/订单/工位] --> [type 11(当前通用存储过程查询/执行) / 工艺管理_图纸维护_零件图查询全部 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 工艺管理_图纸维护_零件图查询全部 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 工艺管理_图纸维护_物料查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 工艺管理_图纸维护_物料查询 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 工艺管理_图纸维护_验证名称 / 业务存储过程调用] +[type 11(当前通用存储过程查询/执行) / 工艺管理_图纸维护_验证名称 / 业务存储过程调用] --> [type 11(当前通用存储过程查询/执行) / 工艺管理_图纸维护_查看图纸 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 工艺管理_图纸维护_查看图纸 / 查询/读取数据] --> [ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] +[ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [校验必填项/选中行/数量和状态] +[校验必填项/选中行/数量和状态] --> [type 11(当前通用存储过程查询/执行) / 工艺管理_图纸维护_查询删除记录 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 工艺管理_图纸维护_查询删除记录 / 查询/读取数据] --> [type 12(当前通用存储过程写入/业务动作) / 工艺管理_图纸维护_删除图纸 / 删除业务数据] +[type 12(当前通用存储过程写入/业务动作) / 工艺管理_图纸维护_删除图纸 / 删除业务数据] --> [后端写入/更新完成 / 返回成功/失败消息] +[后端写入/更新完成 / 返回成功/失败消息] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [主要数据对象 / View_图纸视图 / SAP.SBO_YL.dbo.UBT_OITM / 物料数据 / 物料基础数据_零件图纸] +[主要数据对象 / View_图纸视图 / SAP.SBO_YL.dbo.UBT_OITM / 物料数据 / 物料基础数据_零件图纸] --> [用户继续查询/维护或转入下一业务页] +``` + +| 环节 | 页面调用/过程 | 用途 | 依赖线索 | +|---|---|---|---| +| 1 | `工艺管理_图纸维护_查询删除记录` | 查询/读取数据 | 未在 SQL 中解析到明确依赖 | +| 2 | `工艺管理_图纸维护_零件图查询全部` | 查询/读取数据 | 视图:View_图纸视图 | +| 3 | `工艺管理_图纸维护_物料查询` | 查询/读取数据 | SAP/链接库:SAP.SBO_YL.dbo.UBT_OITM | +| 4 | `工艺管理_图纸维护_验证名称` | 业务存储过程调用 | 表:物料数据 | +| 5 | `工艺管理_图纸维护_查看图纸` | 查询/读取数据 | 表:物料基础数据_零件图纸 | +| 6 | `工艺管理_图纸维护_删除图纸` | 删除业务数据 | 表:物料基础数据_零件图纸 | + +#### 18. `src/views/ProcessManagement/ProcedureManagement/index.vue` + +页面要点:该页面维护工序/路线阶段主数据。新增或修改工序时会同步 SAP B1 的 RouteStages,保证 MES 工序与 SAP 工艺阶段一致。 页面可见的操作/字段包括 “新增工艺”、“--> 取 消”、“确 定”、“序号”、“工艺名称”、“操作”、“请输入工艺名称”、“title”,这些是判断页面业务范围的主要线索。 后端主要围绕 ME +过程覆盖:`MES_ProcessManagement_ProcessGet`、`MES_ProcessManagement_ProcessAdd`、`MES_ProcessManagement_ProcessEdit`、`MES_ProcessManagement_Processdel` + +```text +[进入页面 / src/views/ProcessManagement/ProcedureManagement/index.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [组装查询条件 / 分页/时间/订单/工位] +[组装查询条件 / 分页/时间/订单/工位] --> [type 11(当前通用存储过程查询/执行) / MES_ProcessManagement_ProcessGet / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / MES_ProcessManagement_ProcessGet / 查询/读取数据] --> [type 12(当前通用存储过程写入/业务动作) / MES_ProcessManagement_Processdel / 业务存储过程调用] +[type 12(当前通用存储过程写入/业务动作) / MES_ProcessManagement_Processdel / 业务存储过程调用] --> [ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] +[ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [校验必填项/选中行/数量和状态] +[校验必填项/选中行/数量和状态] --> [type 11(当前通用存储过程查询/执行) / MES_ProcessManagement_ProcessAdd / 新增业务数据] +[type 11(当前通用存储过程查询/执行) / MES_ProcessManagement_ProcessAdd / 新增业务数据] --> [type 12(当前通用存储过程写入/业务动作) / MES_ProcessManagement_ProcessEdit / 更新/保存业务数据] +[type 12(当前通用存储过程写入/业务动作) / MES_ProcessManagement_ProcessEdit / 更新/保存业务数据] --> [后端写入/更新完成 / 返回成功/失败消息] +[后端写入/更新完成 / 返回成功/失败消息] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [主要数据对象 / 基础表_工序] +[主要数据对象 / 基础表_工序] --> [用户继续查询/维护或转入下一业务页] +``` + +| 环节 | 页面调用/过程 | 用途 | 依赖线索 | +|---|---|---|---| +| 1 | `MES_ProcessManagement_ProcessGet` | 查询/读取数据 | 表:基础表_工序 | +| 2 | `MES_ProcessManagement_ProcessAdd` | 新增业务数据 | 未在 SQL 中解析到明确依赖 | +| 3 | `MES_ProcessManagement_ProcessEdit` | 更新/保存业务数据 | 未在 SQL 中解析到明确依赖 | +| 4 | `MES_ProcessManagement_Processdel` | 业务存储过程调用 | 未知 | + +#### 19. `src/views/ProcessManagement/ProcessDrawing/index.vue` + +页面要点:该页面维护工艺图纸。用户按物料/工艺条件查询工艺图,验证名称,查看或删除工艺图纸。 页面可见的操作/字段包括 “查询”、“工艺图”、“选零件上传工艺图”、“选订单上传工艺图”、“查看”、“删除”、“取消”、“确定”、“item.物料编码”、“序号”,这些是判断页面业务范围的主要线索。 后端主要围绕 工艺管理_工艺维护_工艺图查询、工艺管理 +过程覆盖:`工艺管理_工艺维护_工艺图查询`、`工艺管理_图纸维护_物料查询`、`工艺管理_工艺维护_验证名称`、`工艺管理_工艺维护_查看图纸`、`工艺管理_工艺维护_删除图纸` + +```text +[进入页面 / src/views/ProcessManagement/ProcessDrawing/index.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [组装查询条件 / 分页/时间/订单/工位] +[组装查询条件 / 分页/时间/订单/工位] --> [type 11(当前通用存储过程查询/执行) / 工艺管理_工艺维护_工艺图查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 工艺管理_工艺维护_工艺图查询 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 工艺管理_图纸维护_物料查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 工艺管理_图纸维护_物料查询 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 工艺管理_工艺维护_验证名称 / 业务存储过程调用] +[type 11(当前通用存储过程查询/执行) / 工艺管理_工艺维护_验证名称 / 业务存储过程调用] --> [type 11(当前通用存储过程查询/执行) / 工艺管理_工艺维护_查看图纸 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 工艺管理_工艺维护_查看图纸 / 查询/读取数据] --> [ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] +[ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [校验必填项/选中行/数量和状态] +[校验必填项/选中行/数量和状态] --> [type 12(当前通用存储过程写入/业务动作) / 工艺管理_工艺维护_删除图纸 / 删除业务数据] +[type 12(当前通用存储过程写入/业务动作) / 工艺管理_工艺维护_删除图纸 / 删除业务数据] --> [后端写入/更新完成 / 返回成功/失败消息] +[后端写入/更新完成 / 返回成功/失败消息] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [主要数据对象 / SAP.SBO_YL.dbo.UBT_OITM / 物料数据 / 物料基础数据_工艺图纸] +[主要数据对象 / SAP.SBO_YL.dbo.UBT_OITM / 物料数据 / 物料基础数据_工艺图纸] --> [用户继续查询/维护或转入下一业务页] +``` + +| 环节 | 页面调用/过程 | 用途 | 依赖线索 | +|---|---|---|---| +| 1 | `工艺管理_工艺维护_工艺图查询` | 查询/读取数据 | SAP/链接库:SAP.SBO_YL.dbo.UBT_OITM | +| 2 | `工艺管理_图纸维护_物料查询` | 查询/读取数据 | SAP/链接库:SAP.SBO_YL.dbo.UBT_OITM | +| 3 | `工艺管理_工艺维护_验证名称` | 业务存储过程调用 | 表:物料数据 | +| 4 | `工艺管理_工艺维护_查看图纸` | 查询/读取数据 | 表:物料基础数据_工艺图纸 | +| 5 | `工艺管理_工艺维护_删除图纸` | 删除业务数据 | 表:物料基础数据_工艺图纸 | + +#### 20. `src/views/ProcessManagement/ProcessInquiry/index.vue` + +页面要点:该页面用于工艺路线查询。用户按物料、产品、工序等条件查看标准工艺或生产工艺,服务于排产、生产和质检核对。 页面可见的操作/字段包括 “查询”、“打印”、“item.物料编码”、“全部”、“已打印”、“未打印”、“已拣配”、“未拣配”、“机加件”、“装配件”,这些是判断页面业务范围的主要线索。 后端主要围绕 MES_ProcessManag +过程覆盖:`MES_ProcessManagement_PartGet`、`工艺管理_工艺查询_查询生产工艺`、`工艺管理_工艺查询_更新打印次数` + +```text +[进入页面 / src/views/ProcessManagement/ProcessInquiry/index.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [组装查询条件 / 分页/时间/订单/工位] +[组装查询条件 / 分页/时间/订单/工位] --> [type 11(当前通用存储过程查询/执行) / MES_ProcessManagement_PartGet / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / MES_ProcessManagement_PartGet / 查询/读取数据] --> [ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] +[ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [校验必填项/选中行/数量和状态] +[校验必填项/选中行/数量和状态] --> [type 11(当前通用存储过程查询/执行) / 工艺管理_工艺查询_查询生产工艺 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 工艺管理_工艺查询_查询生产工艺 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 工艺管理_工艺查询_更新打印次数 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 工艺管理_工艺查询_更新打印次数 / 查询/读取数据] --> [后端写入/更新完成 / 返回成功/失败消息] +[后端写入/更新完成 / 返回成功/失败消息] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [主要数据对象 / SAP.SBO_YL.dbo.UBT_OITM / 车间生产管理工艺_零件生产工艺_工艺库 / 视图:View_生产订单_MES / MES_接口_生产计划] +[主要数据对象 / SAP.SBO_YL.dbo.UBT_OITM / 车间生产管理工艺_零件生产工艺_工艺库 / 视图:View_生产订单_MES / MES_接口_生产计划] --> [用户继续查询/维护或转入下一业务页] +``` + +| 环节 | 页面调用/过程 | 用途 | 依赖线索 | +|---|---|---|---| +| 1 | `MES_ProcessManagement_PartGet` | 查询/读取数据 | SAP/链接库:SAP.SBO_YL.dbo.UBT_OITM | +| 2 | `工艺管理_工艺查询_查询生产工艺` | 查询/读取数据 | 表:车间生产管理工艺_零件生产工艺_工艺库;视图:View_生产订单_MES | +| 3 | `工艺管理_工艺查询_更新打印次数` | 查询/读取数据 | 表:MES_接口_生产计划 | + +#### 21. `src/views/ProcessManagement/ProcessProduct/index.vue` + +页面要点:该页面维护产品与工艺/图纸的关系,使产品、物料、工序、图纸等基础数据形成可查询的工艺资料。 页面可见的操作/字段包括 “查询”、“批量生成生产工艺”、“编辑工艺”、“拷贝”、“零件图纸”、“工艺图纸”、“保存为标准工艺”、“下发任务”、“已保存”、“保存”,这些是判断页面业务范围的主要线索。 后端主要围绕 工艺管理_获取物料原料信息、工艺 +过程覆盖:`工艺管理_获取物料原料信息`、`工艺管理_生产工艺_查询生产工艺`、`工艺管理_生产工艺_工艺拷贝`、`工艺管理_生产工艺_生产工艺拷贝`、`工艺管理_生产工艺_标准工艺拷贝`、`计划排产_生产订单_订单查询`、`计划排产_生产订单_订单任务_生产工艺任务下发`、`计划排产_生产订单_订单任务_单条生产工艺任务下发`、`工艺管理_零件工序_生产工艺_批量生成生产工艺`、`设备管理_设备信息_查询`、... + +```text +[进入页面 / src/views/ProcessManagement/ProcessProduct/index.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [组装查询条件 / 分页/时间/订单/工位] +[组装查询条件 / 分页/时间/订单/工位] --> [type 11(当前通用存储过程查询/执行) / 工艺管理_获取物料原料信息 / 业务存储过程调用] +[type 11(当前通用存储过程查询/执行) / 工艺管理_获取物料原料信息 / 业务存储过程调用] --> [type 11(当前通用存储过程查询/执行) / 工艺管理_生产工艺_标准工艺拷贝 / 业务存储过程调用] +[type 11(当前通用存储过程查询/执行) / 工艺管理_生产工艺_标准工艺拷贝 / 业务存储过程调用] --> [type 11(当前通用存储过程查询/执行) / 设备管理_设备信息_查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 设备管理_设备信息_查询 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / MES_ProcessManagement_ProcessBindGet / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / MES_ProcessManagement_ProcessBindGet / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 工艺管理_制定标准工艺_拷贝生产工艺 / 业务存储过程调用] +[type 11(当前通用存储过程查询/执行) / 工艺管理_制定标准工艺_拷贝生产工艺 / 业务存储过程调用] --> [ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] +[ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [校验必填项/选中行/数量和状态] +[校验必填项/选中行/数量和状态] --> [type 11(当前通用存储过程查询/执行) / 工艺管理_生产工艺_查询生产工艺 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 工艺管理_生产工艺_查询生产工艺 / 查询/读取数据] --> [type 12(当前通用存储过程写入/业务动作) / 工艺管理_生产工艺_工艺拷贝 / 业务存储过程调用] +[type 12(当前通用存储过程写入/业务动作) / 工艺管理_生产工艺_工艺拷贝 / 业务存储过程调用] --> [type 11(当前通用存储过程查询/执行) / 工艺管理_生产工艺_生产工艺拷贝 / 业务存储过程调用] +[type 11(当前通用存储过程查询/执行) / 工艺管理_生产工艺_生产工艺拷贝 / 业务存储过程调用] --> [type 11(当前通用存储过程查询/执行) / 计划排产_生产订单_订单查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 计划排产_生产订单_订单查询 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 计划排产_生产订单_订单任务_生产工艺任务下发 / 计划排产或派工] +[type 11(当前通用存储过程查询/执行) / 计划排产_生产订单_订单任务_生产工艺任务下发 / 计划排产或派工] --> [type 12(当前通用存储过程写入/业务动作) / 计划排产_生产订单_订单任务_单条生产工艺任务下发 / 计划排产或派工] +[type 12(当前通用存储过程写入/业务动作) / 计划排产_生产订单_订单任务_单条生产工艺任务下发 / 计划排产或派工] --> [后端写入/更新完成 / 返回成功/失败消息] +[后端写入/更新完成 / 返回成功/失败消息] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [主要数据对象 / SAP.SBO_YL.dbo.UBT_OWOR_material / 车间生产管理工艺_零件生产工艺_工艺库 / MES_接口_生产计划 / 车间生产管理工艺_零件工序_工艺库 / 物料数据] +[主要数据对象 / SAP.SBO_YL.dbo.UBT_OWOR_material / 车间生产管理工艺_零件生产工艺_工艺库 / MES_接口_生产计划 / 车间生产管理工艺_零件工序_工艺库 / 物料数据] --> [用户继续查询/维护或转入下一业务页] +``` + +| 环节 | 页面调用/过程 | 用途 | 依赖线索 | +|---|---|---|---| +| 1 | `工艺管理_获取物料原料信息` | 业务存储过程调用 | SAP/链接库:SAP.SBO_YL.dbo.UBT_OWOR_material | +| 2 | `工艺管理_生产工艺_查询生产工艺` | 查询/读取数据 | 表:车间生产管理工艺_零件生产工艺_工艺库 | +| 3 | `工艺管理_生产工艺_工艺拷贝` | 业务存储过程调用 | 表:MES_接口_生产计划 | +| 4 | `工艺管理_生产工艺_生产工艺拷贝` | 业务存储过程调用 | 表:MES_接口_生产计划 | +| 5 | `工艺管理_生产工艺_标准工艺拷贝` | 业务存储过程调用 | 表:车间生产管理工艺_零件工序_工艺库、物料数据 | +| 6 | `计划排产_生产订单_订单查询` | 查询/读取数据 | 表:MES_接口_生产计划;视图:View_生产计划零件图纸视图 | +| 7 | `计划排产_生产订单_订单任务_生产工艺任务下发` | 计划排产或派工 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务 | +| 8 | `计划排产_生产订单_订单任务_单条生产工艺任务下发` | 计划排产或派工 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务 | +| 9 | `工艺管理_零件工序_生产工艺_批量生成生产工艺` | 业务存储过程调用 | 表:MES_接口_生产计划 | +| 10 | `设备管理_设备信息_查询` | 查询/读取数据 | 表:YL_基础表_数据字典 | +| 11 | `MES_ProcessManagement_ProcessBindGet` | 查询/读取数据 | 表:车间生产管理工艺_零件工序_工艺库 | +| 12 | `工艺管理_制定标准工艺_拷贝生产工艺` | 业务存储过程调用 | 表:车间生产管理工艺_零件生产工艺_工艺库 | +| ... | ... | 共 24 个过程,此处仅列前 12 个 | 详见分析文档对应页面段落 | + +#### 22. `src/views/ProcessManagement/ProcessesDevelop/index.vue` + +页面要点:该页面用于工艺开发和生产工艺路线维护。用户围绕物料、工序、顺序、工艺参数、图纸等信息维护标准或生产用工艺路线。 页面可见的操作/字段包括 “查询”、“拷贝”、“图纸”、“已保存”、“保存”、“导出”、“--> 生产工艺 取消”、“确定”、“item.物料编码”、“工序”,这些是判断页面业务范围的主要线索。 后端主要围绕 工艺管理_获取物料 +过程覆盖:`工艺管理_获取物料原料信息`、`设备管理_设备信息_查询`、`工艺管理_生产计划物料查询`、`工艺管理_生产工艺_生产工艺拷贝`、`工艺管理_生产工艺_标准工艺拷贝`、`MES_ProcessManagement_ProcessBindGet`、`工艺管理_制定标准工艺_拷贝生产工艺`、`MES_ProcessManagement_ProcessGet`、`工艺管理_制定标准工艺_拷贝工艺保存`、`工艺管理_工艺维护_查看图纸`、... + +```text +[进入页面 / src/views/ProcessManagement/ProcessesDevelop/index.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [组装查询条件 / 分页/时间/订单/工位] +[组装查询条件 / 分页/时间/订单/工位] --> [type 11(当前通用存储过程查询/执行) / 工艺管理_获取物料原料信息 / 业务存储过程调用] +[type 11(当前通用存储过程查询/执行) / 工艺管理_获取物料原料信息 / 业务存储过程调用] --> [type 11(当前通用存储过程查询/执行) / 设备管理_设备信息_查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 设备管理_设备信息_查询 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 工艺管理_生产工艺_标准工艺拷贝 / 业务存储过程调用] +[type 11(当前通用存储过程查询/执行) / 工艺管理_生产工艺_标准工艺拷贝 / 业务存储过程调用] --> [type 11(当前通用存储过程查询/执行) / MES_ProcessManagement_ProcessBindGet / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / MES_ProcessManagement_ProcessBindGet / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 工艺管理_制定标准工艺_拷贝生产工艺 / 业务存储过程调用] +[type 11(当前通用存储过程查询/执行) / 工艺管理_制定标准工艺_拷贝生产工艺 / 业务存储过程调用] --> [ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] +[ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [校验必填项/选中行/数量和状态] +[校验必填项/选中行/数量和状态] --> [type 11(当前通用存储过程查询/执行) / 工艺管理_生产计划物料查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 工艺管理_生产计划物料查询 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 工艺管理_生产工艺_生产工艺拷贝 / 业务存储过程调用] +[type 11(当前通用存储过程查询/执行) / 工艺管理_生产工艺_生产工艺拷贝 / 业务存储过程调用] --> [type 12(当前通用存储过程写入/业务动作) / 工艺管理_制定标准工艺_拷贝工艺保存 / 更新/保存业务数据] +[type 12(当前通用存储过程写入/业务动作) / 工艺管理_制定标准工艺_拷贝工艺保存 / 更新/保存业务数据] --> [type 11(当前通用存储过程查询/执行) / 车间生产管理工艺_零件工序_修改数据_工艺库 / 更新/保存业务数据] +[type 11(当前通用存储过程查询/执行) / 车间生产管理工艺_零件工序_修改数据_工艺库 / 更新/保存业务数据] --> [type 11(当前通用存储过程查询/执行) / 车间生产管理工艺_零件工序_编辑_工艺库 / 更新/保存业务数据] +[type 11(当前通用存储过程查询/执行) / 车间生产管理工艺_零件工序_编辑_工艺库 / 更新/保存业务数据] --> [type 11(当前通用存储过程查询/执行) / 车间生产管理工艺_零件工序_编辑插入行 / 更新/保存业务数据] +[type 11(当前通用存储过程查询/执行) / 车间生产管理工艺_零件工序_编辑插入行 / 更新/保存业务数据] --> [后端写入/更新完成 / 返回成功/失败消息] +[后端写入/更新完成 / 返回成功/失败消息] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [主要数据对象 / SAP.SBO_YL.dbo.UBT_OWOR_material / YL_基础表_数据字典 / MES_接口_生产计划 / 车间生产管理工艺_零件工序_工艺库 / 物料数据] +[主要数据对象 / SAP.SBO_YL.dbo.UBT_OWOR_material / YL_基础表_数据字典 / MES_接口_生产计划 / 车间生产管理工艺_零件工序_工艺库 / 物料数据] --> [用户继续查询/维护或转入下一业务页] +``` + +| 环节 | 页面调用/过程 | 用途 | 依赖线索 | +|---|---|---|---| +| 1 | `工艺管理_获取物料原料信息` | 业务存储过程调用 | SAP/链接库:SAP.SBO_YL.dbo.UBT_OWOR_material | +| 2 | `设备管理_设备信息_查询` | 查询/读取数据 | 表:YL_基础表_数据字典 | +| 3 | `工艺管理_生产计划物料查询` | 查询/读取数据 | 未在 SQL 中解析到明确依赖 | +| 4 | `工艺管理_生产工艺_生产工艺拷贝` | 业务存储过程调用 | 表:MES_接口_生产计划 | +| 5 | `工艺管理_生产工艺_标准工艺拷贝` | 业务存储过程调用 | 表:车间生产管理工艺_零件工序_工艺库、物料数据 | +| 6 | `MES_ProcessManagement_ProcessBindGet` | 查询/读取数据 | 表:车间生产管理工艺_零件工序_工艺库 | +| 7 | `工艺管理_制定标准工艺_拷贝生产工艺` | 业务存储过程调用 | 表:车间生产管理工艺_零件生产工艺_工艺库 | +| 8 | `MES_ProcessManagement_ProcessGet` | 查询/读取数据 | 表:基础表_工序 | +| 9 | `工艺管理_制定标准工艺_拷贝工艺保存` | 更新/保存业务数据 | 表:MES_接口_生产计划 | +| 10 | `工艺管理_工艺维护_查看图纸` | 查询/读取数据 | 表:物料基础数据_工艺图纸 | +| 11 | `车间生产管理工艺_零件工序_修改数据_工艺库` | 更新/保存业务数据 | 表:MES_接口_生产计划 | +| 12 | `车间生产管理工艺_零件工序_查询工序信息_工艺库` | 查询/读取数据 | 未在 SQL 中解析到明确依赖 | +| ... | ... | 共 19 个过程,此处仅列前 12 个 | 详见分析文档对应页面段落 | + +#### 23. `src/views/ProcessManagement/ProcurementDrawlook/index.vue` + +页面要点:该页面提供采购场景的图纸查看。用户按采购物料查询图纸,查看或删除图纸记录,支持采购、外协、来料检验时查阅技术文件。 页面可见的操作/字段包括 “查询”、“查看”、“删除”、“取消”、“确定”、“关闭”、“item.物料编码”、“序号”、“物料编号”、“物料名称”,这些是判断页面业务范围的主要线索。 后端主要围绕 工艺管理_图纸维护_查询删 +过程覆盖:`工艺管理_图纸维护_查询删除记录`、`工艺管理_图纸维护_零件图查询采购`、`工艺管理_图纸维护_物料查询_采购`、`工艺管理_图纸维护_验证名称`、`工艺管理_图纸维护_查看图纸`、`工艺管理_图纸维护_删除图纸` + +```text +[进入页面 / src/views/ProcessManagement/ProcurementDrawlook/index.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [组装查询条件 / 分页/时间/订单/工位] +[组装查询条件 / 分页/时间/订单/工位] --> [type 11(当前通用存储过程查询/执行) / 工艺管理_图纸维护_零件图查询采购 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 工艺管理_图纸维护_零件图查询采购 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 工艺管理_图纸维护_物料查询_采购 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 工艺管理_图纸维护_物料查询_采购 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 工艺管理_图纸维护_验证名称 / 业务存储过程调用] +[type 11(当前通用存储过程查询/执行) / 工艺管理_图纸维护_验证名称 / 业务存储过程调用] --> [type 11(当前通用存储过程查询/执行) / 工艺管理_图纸维护_查看图纸 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 工艺管理_图纸维护_查看图纸 / 查询/读取数据] --> [ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] +[ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [校验必填项/选中行/数量和状态] +[校验必填项/选中行/数量和状态] --> [type 11(当前通用存储过程查询/执行) / 工艺管理_图纸维护_查询删除记录 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 工艺管理_图纸维护_查询删除记录 / 查询/读取数据] --> [type 12(当前通用存储过程写入/业务动作) / 工艺管理_图纸维护_删除图纸 / 删除业务数据] +[type 12(当前通用存储过程写入/业务动作) / 工艺管理_图纸维护_删除图纸 / 删除业务数据] --> [后端写入/更新完成 / 返回成功/失败消息] +[后端写入/更新完成 / 返回成功/失败消息] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [主要数据对象 / View_图纸视图 / SAP.SBO_YL.dbo.UBT_OITM / 物料数据 / 物料基础数据_零件图纸] +[主要数据对象 / View_图纸视图 / SAP.SBO_YL.dbo.UBT_OITM / 物料数据 / 物料基础数据_零件图纸] --> [用户继续查询/维护或转入下一业务页] +``` + +| 环节 | 页面调用/过程 | 用途 | 依赖线索 | +|---|---|---|---| +| 1 | `工艺管理_图纸维护_查询删除记录` | 查询/读取数据 | 未在 SQL 中解析到明确依赖 | +| 2 | `工艺管理_图纸维护_零件图查询采购` | 查询/读取数据 | 视图:View_图纸视图 | +| 3 | `工艺管理_图纸维护_物料查询_采购` | 查询/读取数据 | SAP/链接库:SAP.SBO_YL.dbo.UBT_OITM | +| 4 | `工艺管理_图纸维护_验证名称` | 业务存储过程调用 | 表:物料数据 | +| 5 | `工艺管理_图纸维护_查看图纸` | 查询/读取数据 | 表:物料基础数据_零件图纸 | +| 6 | `工艺管理_图纸维护_删除图纸` | 删除业务数据 | 表:物料基础数据_零件图纸 | + +#### 24. `src/views/ProcessManagement/ProductionOrder/index.vue` + +页面要点:该页面处理生产订单资料。用户查询 ERP/MES 生产订单,并通过过程把 SAP 生产订单同步成 MES 生产计划和工序任务。 页面可见的操作/字段包括 “查询”、“批量生成任务”、“查看生产工艺”、“查看标准工艺”、“全部”、“未下发”、“已下发”、“机加件”、“装配件”、“序号”,这些是判断页面业务范围的主要线索。 后端主要围绕 设备 +过程覆盖:`设备管理_设备信息_查询`、`工艺管理_生产工艺_查询生产工艺`、`工艺管理_生产工艺_查询标准工艺`、`工艺管理_工艺任务_订单查询`、`计划排产_生产订单_订单任务` + +```text +[进入页面 / src/views/ProcessManagement/ProductionOrder/index.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [组装查询条件 / 分页/时间/订单/工位] +[组装查询条件 / 分页/时间/订单/工位] --> [type 11(当前通用存储过程查询/执行) / 设备管理_设备信息_查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 设备管理_设备信息_查询 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 工艺管理_生产工艺_查询标准工艺 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 工艺管理_生产工艺_查询标准工艺 / 查询/读取数据] --> [ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] +[ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [校验必填项/选中行/数量和状态] +[校验必填项/选中行/数量和状态] --> [type 11(当前通用存储过程查询/执行) / 工艺管理_生产工艺_查询生产工艺 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 工艺管理_生产工艺_查询生产工艺 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 工艺管理_工艺任务_订单查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 工艺管理_工艺任务_订单查询 / 查询/读取数据] --> [type 12(当前通用存储过程写入/业务动作) / 计划排产_生产订单_订单任务 / 计划排产或派工] +[type 12(当前通用存储过程写入/业务动作) / 计划排产_生产订单_订单任务 / 计划排产或派工] --> [后端写入/更新完成 / 返回成功/失败消息] +[后端写入/更新完成 / 返回成功/失败消息] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [主要数据对象 / YL_基础表_数据字典 / 车间生产管理工艺_零件生产工艺_工艺库 / 车间生产管理工艺_零件工序_工艺库 / MES_接口_生产计划 / MES_接口_生产计划_生产任务] +[主要数据对象 / YL_基础表_数据字典 / 车间生产管理工艺_零件生产工艺_工艺库 / 车间生产管理工艺_零件工序_工艺库 / MES_接口_生产计划 / MES_接口_生产计划_生产任务] --> [用户继续查询/维护或转入下一业务页] +``` + +| 环节 | 页面调用/过程 | 用途 | 依赖线索 | +|---|---|---|---| +| 1 | `设备管理_设备信息_查询` | 查询/读取数据 | 表:YL_基础表_数据字典 | +| 2 | `工艺管理_生产工艺_查询生产工艺` | 查询/读取数据 | 表:车间生产管理工艺_零件生产工艺_工艺库 | +| 3 | `工艺管理_生产工艺_查询标准工艺` | 查询/读取数据 | 表:车间生产管理工艺_零件工序_工艺库 | +| 4 | `工艺管理_工艺任务_订单查询` | 查询/读取数据 | 表:MES_接口_生产计划 | +| 5 | `计划排产_生产订单_订单任务` | 计划排产或派工 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务 | + +### 17.8 生产执行(ProductionManagement) + +#### 25. `src/views/ProductionManagement/AbnormalControl/index.vue` + +页面要点:该页面管理生产异常。用户查询异常记录,推进异常处理、关闭或记录处理结果。 页面可见的操作/字段包括 “处理”、“转办”、“发起新流程”、“查看进度”、“完结”、“查看详情”、“点击上传”、“添加审批人”、“查询”、“取 消”,这些是判断页面业务范围的主要线索。 后端主要围绕 sp_获取最近处理任务、人员管理_人员信息查询、sp_获取我的流 +过程覆盖:`sp_获取最近处理任务`、`人员管理_人员信息查询`、`sp_获取我的流程`、`sp_获取待处理任务`、`MES_ProductAdmin_Query`、`sp_创建流程_简化版`、`sp_处理审批`、`sp_转办流程`、`sp_完成流程`、`sp_获取流程详情` + +```text +[进入页面 / src/views/ProductionManagement/AbnormalControl/index.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [组装查询条件 / 分页/时间/订单/工位] +[组装查询条件 / 分页/时间/订单/工位] --> [type 11(当前通用存储过程查询/执行) / sp_获取最近处理任务 / 业务存储过程调用] +[type 11(当前通用存储过程查询/执行) / sp_获取最近处理任务 / 业务存储过程调用] --> [type 11(当前通用存储过程查询/执行) / 人员管理_人员信息查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 人员管理_人员信息查询 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / sp_获取我的流程 / 业务存储过程调用] +[type 11(当前通用存储过程查询/执行) / sp_获取我的流程 / 业务存储过程调用] --> [ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] +[ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [校验必填项/选中行/数量和状态] +[校验必填项/选中行/数量和状态] --> [type 11(当前通用存储过程查询/执行) / sp_获取待处理任务 / 业务存储过程调用] +[type 11(当前通用存储过程查询/执行) / sp_获取待处理任务 / 业务存储过程调用] --> [type 11(当前通用存储过程查询/执行) / MES_ProductAdmin_Query / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / MES_ProductAdmin_Query / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / sp_创建流程_简化版 / 业务存储过程调用] +[type 11(当前通用存储过程查询/执行) / sp_创建流程_简化版 / 业务存储过程调用] --> [type 12(当前通用存储过程写入/业务动作) / sp_处理审批 / 业务存储过程调用] +[type 12(当前通用存储过程写入/业务动作) / sp_处理审批 / 业务存储过程调用] --> [type 12(当前通用存储过程写入/业务动作) / sp_转办流程 / 业务存储过程调用] +[type 12(当前通用存储过程写入/业务动作) / sp_转办流程 / 业务存储过程调用] --> [type 11(当前通用存储过程查询/执行) / sp_完成流程 / 业务存储过程调用] +[type 11(当前通用存储过程查询/执行) / sp_完成流程 / 业务存储过程调用] --> [后端写入/更新完成 / 返回成功/失败消息] +[后端写入/更新完成 / 返回成功/失败消息] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [主要数据对象 / 登录基础数据_管理人员权限视图 / View_生产订单_MES] +[主要数据对象 / 登录基础数据_管理人员权限视图 / View_生产订单_MES] --> [用户继续查询/维护或转入下一业务页] +``` + +| 环节 | 页面调用/过程 | 用途 | 依赖线索 | +|---|---|---|---| +| 1 | `sp_获取最近处理任务` | 业务存储过程调用 | 未在 SQL 中解析到明确依赖 | +| 2 | `人员管理_人员信息查询` | 查询/读取数据 | 视图:登录基础数据_管理人员权限视图 | +| 3 | `sp_获取我的流程` | 业务存储过程调用 | 未在 SQL 中解析到明确依赖 | +| 4 | `sp_获取待处理任务` | 业务存储过程调用 | 未在 SQL 中解析到明确依赖 | +| 5 | `MES_ProductAdmin_Query` | 查询/读取数据 | 视图:View_生产订单_MES | +| 6 | `sp_创建流程_简化版` | 业务存储过程调用 | 未在 SQL 中解析到明确依赖 | +| 7 | `sp_处理审批` | 业务存储过程调用 | 未在 SQL 中解析到明确依赖 | +| 8 | `sp_转办流程` | 业务存储过程调用 | 未在 SQL 中解析到明确依赖 | +| 9 | `sp_完成流程` | 业务存储过程调用 | 未在 SQL 中解析到明确依赖 | +| 10 | `sp_获取流程详情` | 业务存储过程调用 | 未在 SQL 中解析到明确依赖 | + +#### 26. `src/views/ProductionManagement/AssemblePlanTrack/index.vue` + +页面要点:该页面跟踪装配计划执行,展示装配任务进度、计划完成情况和异常。 页面可见的操作/字段包括 “查询”、“全部”、“已完成”、“未完成”、“序号”、“工序名称”、“计划数量”、“指派对象”、“开始时间”、“结束时间”,这些是判断页面业务范围的主要线索。 后端主要围绕 MES_OrderPlanned_Query +过程覆盖:`MES_OrderPlanned_Queryzp`、`MES_OrderPlanned_DescriptionEdit`、`Prog_MES_LoadStations` + +```text +[进入页面 / src/views/ProductionManagement/AssemblePlanTrack/index.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [组装查询条件 / 分页/时间/订单/工位] +[组装查询条件 / 分页/时间/订单/工位] --> [type 11(当前通用存储过程查询/执行) / Prog_MES_LoadStations / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / Prog_MES_LoadStations / 查询/读取数据] --> [ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] +[ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [校验必填项/选中行/数量和状态] +[校验必填项/选中行/数量和状态] --> [type 11(当前通用存储过程查询/执行) / MES_OrderPlanned_Queryzp / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / MES_OrderPlanned_Queryzp / 查询/读取数据] --> [type 12(当前通用存储过程写入/业务动作) / MES_OrderPlanned_DescriptionEdit / 更新/保存业务数据] +[type 12(当前通用存储过程写入/业务动作) / MES_OrderPlanned_DescriptionEdit / 更新/保存业务数据] --> [后端写入/更新完成 / 返回成功/失败消息] +[后端写入/更新完成 / 返回成功/失败消息] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [主要数据对象 / 车间生产管理工艺_零件生产工艺_工艺库 / 视图:View_生产订单_MES / MES_接口_生产计划 / MES_接口_生产计划_生产任务 / MES_资源主数据] +[主要数据对象 / 车间生产管理工艺_零件生产工艺_工艺库 / 视图:View_生产订单_MES / MES_接口_生产计划 / MES_接口_生产计划_生产任务 / MES_资源主数据] --> [用户继续查询/维护或转入下一业务页] +``` + +| 环节 | 页面调用/过程 | 用途 | 依赖线索 | +|---|---|---|---| +| 1 | `MES_OrderPlanned_Queryzp` | 查询/读取数据 | 表:车间生产管理工艺_零件生产工艺_工艺库;视图:View_生产订单_MES | +| 2 | `MES_OrderPlanned_DescriptionEdit` | 更新/保存业务数据 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务 | +| 3 | `Prog_MES_LoadStations` | 查询/读取数据 | 表:MES_资源主数据 | + +#### 27. `src/views/ProductionManagement/AssembleStatus/index.vue` + +页面要点:该页面查看装配现场状态,重点展示进行中任务和当前工位状态。 页面可见的操作/字段包括 “查询”、“item.label”、“序号”、“人员名称”、“工位”、“生产订单”、“计划号”、“销售订单”、“物料名称”、“物料编码”,这些是判断页面业务范围的主要线索。 后端主要围绕 人员管理_人员信息查询_质检部门_查询、MES_登录_工位与名称_ +过程覆盖:`人员管理_人员信息查询_质检部门_查询`、`MES_登录_工位与名称_查询`、`生产管理_装配状态_获取进行中任务` + +```text +[进入页面 / src/views/ProductionManagement/AssembleStatus/index.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [组装查询条件 / 分页/时间/订单/工位] +[组装查询条件 / 分页/时间/订单/工位] --> [type 11(当前通用存储过程查询/执行) / 人员管理_人员信息查询_质检部门_查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 人员管理_人员信息查询_质检部门_查询 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / MES_登录_工位与名称_查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / MES_登录_工位与名称_查询 / 查询/读取数据] --> [ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] +[ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [校验必填项/选中行/数量和状态] +[校验必填项/选中行/数量和状态] --> [type 11(当前通用存储过程查询/执行) / 生产管理_装配状态_获取进行中任务 / 业务存储过程调用] +[type 11(当前通用存储过程查询/执行) / 生产管理_装配状态_获取进行中任务 / 业务存储过程调用] --> [后端写入/更新完成 / 返回成功/失败消息] +[后端写入/更新完成 / 返回成功/失败消息] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [主要数据对象 / 登录基础数据_管理人员权限视图 / View_基础数据_工位 / YL_加工中心_操作记录表 / 视图:View_生产订单_MES] +[主要数据对象 / 登录基础数据_管理人员权限视图 / View_基础数据_工位 / YL_加工中心_操作记录表 / 视图:View_生产订单_MES] --> [用户继续查询/维护或转入下一业务页] +``` + +| 环节 | 页面调用/过程 | 用途 | 依赖线索 | +|---|---|---|---| +| 1 | `人员管理_人员信息查询_质检部门_查询` | 查询/读取数据 | 视图:登录基础数据_管理人员权限视图 | +| 2 | `MES_登录_工位与名称_查询` | 查询/读取数据 | 视图:View_基础数据_工位 | +| 3 | `生产管理_装配状态_获取进行中任务` | 业务存储过程调用 | 表:YL_加工中心_操作记录表;视图:View_生产订单_MES | + +#### 28. `src/views/ProductionManagement/AssembleTaskManage/index.vue` + +页面要点:该页面管理装配任务。用户查询装配生产任务、查看工时汇总,进行派工、任务说明维护和外协/生产通知。 页面可见的操作/字段包括 “查询”、“批量排产”、“排产完成”、“确认修改”、“拆分子任务”、“确定”、“编辑”、“取 消”、“确 定”、“全部”,这些是判断页面业务范围的主要线索。 后端主要围绕 MES_登录_工位与名称_查询、MES_Or +过程覆盖:`MES_登录_工位与名称_查询`、`MES_OrderPlanned_Finish`、`MES_OrderPlanned_ChildTask_Add`、`MES_OrderPlanned_ChildTask_Get`、`MES_OrderPlanned_Query`、`Prog_MES_LoadStations`、`MES_OrderPlanned_EditTaskPlanned`、`MES_OrderPlanned_SingleTaskPlanned`、`MES_OrderPlanned_DescriptionEdit` + +```text +[进入页面 / src/views/ProductionManagement/AssembleTaskManage/index.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [组装查询条件 / 分页/时间/订单/工位] +[组装查询条件 / 分页/时间/订单/工位] --> [type 11(当前通用存储过程查询/执行) / MES_登录_工位与名称_查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / MES_登录_工位与名称_查询 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / Prog_MES_LoadStations / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / Prog_MES_LoadStations / 查询/读取数据] --> [ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] +[ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [校验必填项/选中行/数量和状态] +[校验必填项/选中行/数量和状态] --> [type 12(当前通用存储过程写入/业务动作) / MES_OrderPlanned_Finish / 确认/关闭/完成业务动作] +[type 12(当前通用存储过程写入/业务动作) / MES_OrderPlanned_Finish / 确认/关闭/完成业务动作] --> [type 12(当前通用存储过程写入/业务动作) / MES_OrderPlanned_ChildTask_Add / 新增业务数据] +[type 12(当前通用存储过程写入/业务动作) / MES_OrderPlanned_ChildTask_Add / 新增业务数据] --> [type 11(当前通用存储过程查询/执行) / MES_OrderPlanned_ChildTask_Get / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / MES_OrderPlanned_ChildTask_Get / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / MES_OrderPlanned_Query / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / MES_OrderPlanned_Query / 查询/读取数据] --> [type 12(当前通用存储过程写入/业务动作) / MES_OrderPlanned_EditTaskPlanned / 更新/保存业务数据] +[type 12(当前通用存储过程写入/业务动作) / MES_OrderPlanned_EditTaskPlanned / 更新/保存业务数据] --> [type 12(当前通用存储过程写入/业务动作) / MES_OrderPlanned_SingleTaskPlanned / 计划排产或派工] +[type 12(当前通用存储过程写入/业务动作) / MES_OrderPlanned_SingleTaskPlanned / 计划排产或派工] --> [后端写入/更新完成 / 返回成功/失败消息] +[后端写入/更新完成 / 返回成功/失败消息] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [主要数据对象 / View_基础数据_工位 / MES_接口_生产计划 / MES_接口_生产计划_生产任务 / 车间生产管理工艺_零件生产工艺_工艺库 / 视图:View_生产订单_MES] +[主要数据对象 / View_基础数据_工位 / MES_接口_生产计划 / MES_接口_生产计划_生产任务 / 车间生产管理工艺_零件生产工艺_工艺库 / 视图:View_生产订单_MES] --> [用户继续查询/维护或转入下一业务页] +``` + +| 环节 | 页面调用/过程 | 用途 | 依赖线索 | +|---|---|---|---| +| 1 | `MES_登录_工位与名称_查询` | 查询/读取数据 | 视图:View_基础数据_工位 | +| 2 | `MES_OrderPlanned_Finish` | 确认/关闭/完成业务动作 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务 | +| 3 | `MES_OrderPlanned_ChildTask_Add` | 新增业务数据 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务 | +| 4 | `MES_OrderPlanned_ChildTask_Get` | 查询/读取数据 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务 | +| 5 | `MES_OrderPlanned_Query` | 查询/读取数据 | 表:车间生产管理工艺_零件生产工艺_工艺库;视图:View_生产订单_MES | +| 6 | `Prog_MES_LoadStations` | 查询/读取数据 | 表:MES_资源主数据 | +| 7 | `MES_OrderPlanned_EditTaskPlanned` | 更新/保存业务数据 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务 | +| 8 | `MES_OrderPlanned_SingleTaskPlanned` | 计划排产或派工 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务 | +| 9 | `MES_OrderPlanned_DescriptionEdit` | 更新/保存业务数据 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务 | + +#### 29. `src/views/ProductionManagement/AssembleTasksSum/index.vue` + +页面要点:该页面汇总装配任务,按订单、工位、人员或状态统计装配执行情况。 页面可见的操作/字段包括 “查询”、“编辑”、“取 消”、“确 定”、“item.指南工位号”、“表单”、“序号”、“销售订单”、“生产订单”、“零件编码”,这些是判断页面业务范围的主要线索。 后端主要围绕 MES_登录_工位与名称_查询、MES_ProductTask_Wo +过程覆盖:`MES_登录_工位与名称_查询`、`MES_ProductTask_WorkTimeSum`、`MES_ProductAdmin_Query`、`Prog_MES_LoadStations`、`MES_OrderPlanned_DescriptionEdit`、`MES_OrderPlanned_EditTaskPlanned` + +```text +[进入页面 / src/views/ProductionManagement/AssembleTasksSum/index.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [组装查询条件 / 分页/时间/订单/工位] +[组装查询条件 / 分页/时间/订单/工位] --> [type 11(当前通用存储过程查询/执行) / MES_登录_工位与名称_查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / MES_登录_工位与名称_查询 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / Prog_MES_LoadStations / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / Prog_MES_LoadStations / 查询/读取数据] --> [ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] +[ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [校验必填项/选中行/数量和状态] +[校验必填项/选中行/数量和状态] --> [type 11(当前通用存储过程查询/执行) / MES_ProductTask_WorkTimeSum / 报工或工时处理] +[type 11(当前通用存储过程查询/执行) / MES_ProductTask_WorkTimeSum / 报工或工时处理] --> [type 11(当前通用存储过程查询/执行) / MES_ProductAdmin_Query / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / MES_ProductAdmin_Query / 查询/读取数据] --> [type 12(当前通用存储过程写入/业务动作) / MES_OrderPlanned_DescriptionEdit / 更新/保存业务数据] +[type 12(当前通用存储过程写入/业务动作) / MES_OrderPlanned_DescriptionEdit / 更新/保存业务数据] --> [type 12(当前通用存储过程写入/业务动作) / MES_OrderPlanned_EditTaskPlanned / 更新/保存业务数据] +[type 12(当前通用存储过程写入/业务动作) / MES_OrderPlanned_EditTaskPlanned / 更新/保存业务数据] --> [后端写入/更新完成 / 返回成功/失败消息] +[后端写入/更新完成 / 返回成功/失败消息] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [主要数据对象 / View_基础数据_工位 / View_生产订单_MES / MES_资源主数据 / MES_接口_生产计划 / MES_接口_生产计划_生产任务] +[主要数据对象 / View_基础数据_工位 / View_生产订单_MES / MES_资源主数据 / MES_接口_生产计划 / MES_接口_生产计划_生产任务] --> [用户继续查询/维护或转入下一业务页] +``` + +| 环节 | 页面调用/过程 | 用途 | 依赖线索 | +|---|---|---|---| +| 1 | `MES_登录_工位与名称_查询` | 查询/读取数据 | 视图:View_基础数据_工位 | +| 2 | `MES_ProductTask_WorkTimeSum` | 报工或工时处理 | 未在 SQL 中解析到明确依赖 | +| 3 | `MES_ProductAdmin_Query` | 查询/读取数据 | 视图:View_生产订单_MES | +| 4 | `Prog_MES_LoadStations` | 查询/读取数据 | 表:MES_资源主数据 | +| 5 | `MES_OrderPlanned_DescriptionEdit` | 更新/保存业务数据 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务 | +| 6 | `MES_OrderPlanned_EditTaskPlanned` | 更新/保存业务数据 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务 | + +#### 30. `src/views/ProductionManagement/AssemblyCenter/index.vue` + +页面要点:该页面是装配生产执行主界面。装配人员按工位查询装配任务,处理开工、结束/报工、送检、缺料查询、收检记录、图纸查看和退库等动作,并会读取 SAP 生产订单信息辅助判断。 页面可见的操作/字段包括 “查询 --> 缺料”、“上一个 下一个”、“删除当前记录 关闭”、“上一个 下一个 保存当前记录 删除当前记录 关闭”、“确定 关闭”、“取 消 +过程覆盖:`生产管理_获取人员绑定`、`加急订单_加急明细查询`、`MES_人员工时记录_获取进行中任务2`、`MES_人员工时记录_获取进行中任务`、`工时校验_获取订单列表`、`异常工时_新增操作记录`、`工时校验_获取订单工序`、`MES_登录_工位与名称_查询`、`Prog_MES_LoadProcess`、`MES_ProductCenter_GetTask_zp`、... +WMS/条码任务:页面涉及 `stocktask` 出库/入库任务接口。 + +```text +[进入页面 / src/views/ProductionManagement/AssemblyCenter/index.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [组装查询条件 / 分页/时间/订单/工位] +[组装查询条件 / 分页/时间/订单/工位] --> [type 11(当前通用存储过程查询/执行) / 生产管理_获取人员绑定 / 基础权限/人员数据处理] +[type 11(当前通用存储过程查询/执行) / 生产管理_获取人员绑定 / 基础权限/人员数据处理] --> [type 11(当前通用存储过程查询/执行) / 工时校验_获取订单工序 / 报工或工时处理] +[type 11(当前通用存储过程查询/执行) / 工时校验_获取订单工序 / 报工或工时处理] --> [type 11(当前通用存储过程查询/执行) / MES_登录_工位与名称_查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / MES_登录_工位与名称_查询 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / Prog_MES_LoadProcess / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / Prog_MES_LoadProcess / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 生产管理_装配中心_缺料查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 生产管理_装配中心_缺料查询 / 查询/读取数据] --> [ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] +[ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [校验必填项/选中行/数量和状态] +[校验必填项/选中行/数量和状态] --> [type 11(当前通用存储过程查询/执行) / 加急订单_加急明细查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 加急订单_加急明细查询 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / MES_人员工时记录_获取进行中任务2 / 报工或工时处理] +[type 11(当前通用存储过程查询/执行) / MES_人员工时记录_获取进行中任务2 / 报工或工时处理] --> [type 11(当前通用存储过程查询/执行) / MES_人员工时记录_获取进行中任务 / 报工或工时处理] +[type 11(当前通用存储过程查询/执行) / MES_人员工时记录_获取进行中任务 / 报工或工时处理] --> [type 11(当前通用存储过程查询/执行) / 工时校验_获取订单列表 / 报工或工时处理] +[type 11(当前通用存储过程查询/执行) / 工时校验_获取订单列表 / 报工或工时处理] --> [type 11(当前通用存储过程查询/执行) / 异常工时_新增操作记录 / 新增业务数据] +[type 11(当前通用存储过程查询/执行) / 异常工时_新增操作记录 / 新增业务数据] --> [type 11(当前通用存储过程查询/执行) / MES_ProductCenter_GetTask_zp / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / MES_ProductCenter_GetTask_zp / 查询/读取数据] --> [后端写入/更新完成 / 返回成功/失败消息] +[后端写入/更新完成 / 返回成功/失败消息] --> [是否需要外部系统同步?] +[是否需要外部系统同步?] -- WMS/条码 --> [stocktask 入库/出库任务 / 物料/条码/数量同步] +[是否需要外部系统同步?] -- 否 --> [MES 本地状态生效] +[stocktask 入库/出库任务 / 物料/条码/数量同步] --> [外部返回成功?] +[MES 本地状态生效] --> [刷新列表/明细/看板数据] +[外部返回成功?] -- 是 --> [刷新列表/明细/看板数据] +[外部返回成功?] -- 否 --> [记录失败原因 / 保留待重试/待处理状态] +[记录失败原因 / 保留待重试/待处理状态] --> [刷新列表/明细/看板数据] +[用户是否发起业务动作?] -- 否 --> [刷新列表/明细/看板数据] +[刷新列表/明细/看板数据] --> [主要数据对象 / MES_资源主数据 / 工位人员绑定表 / MES_接口_生产计划 / SAP/链接库:SAP.SBO_YL.dbo.ubt_OPKL_UrgentMaterials_ALL / MES_接口_生产计划_生产任务] +[主要数据对象 / MES_资源主数据 / 工位人员绑定表 / MES_接口_生产计划 / SAP/链接库:SAP.SBO_YL.dbo.ubt_OPKL_UrgentMaterials_ALL / MES_接口_生产计划_生产任务] --> [用户继续查询/维护或转入下一业务页] +``` + +| 环节 | 页面调用/过程 | 用途 | 依赖线索 | +|---|---|---|---| +| 1 | `生产管理_获取人员绑定` | 基础权限/人员数据处理 | 表:MES_资源主数据、工位人员绑定表 | +| 2 | `加急订单_加急明细查询` | 查询/读取数据 | 表:MES_接口_生产计划;SAP/链接库:SAP.SBO_YL.dbo.ubt_OPKL_UrgentMaterials_ALL | +| 3 | `MES_人员工时记录_获取进行中任务2` | 报工或工时处理 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务、YL_加工中心_操作记录表 | +| 4 | `MES_人员工时记录_获取进行中任务` | 报工或工时处理 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务、YL_加工中心_操作记录表 | +| 5 | `工时校验_获取订单列表` | 报工或工时处理 | 表:MES_接口_生产计划 | +| 6 | `异常工时_新增操作记录` | 新增业务数据 | 表:YL_加工中心_操作记录表;视图:View_生产订单_MES | +| 7 | `工时校验_获取订单工序` | 报工或工时处理 | 视图:View_生产订单_MES | +| 8 | `MES_登录_工位与名称_查询` | 查询/读取数据 | 视图:View_基础数据_工位 | +| 9 | `Prog_MES_LoadProcess` | 查询/读取数据 | 表:基础表_工序 | +| 10 | `MES_ProductCenter_GetTask_zp` | 查询/读取数据 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务、登录基础数据_人员信息、YL_质量检验_质检记录;视图:View_生产订单_MES | +| 11 | `MES_ProductTask_WorkTimeSum` | 报工或工时处理 | 未在 SQL 中解析到明确依赖 | +| 12 | `生产管理_装配中心_缺料查询` | 查询/读取数据 | SAP/链接库:SAP.SBO_YL.dbo.UBT_OPKL_MissQty | +| ... | ... | 共 26 个过程,此处仅列前 12 个 | 详见分析文档对应页面段落 | + +#### 31. `src/views/ProductionManagement/DeviceStatus/index.vue` + +页面要点:该页面查看设备/工位生产状态,通常用于判断设备是否在加工、待机、报警或空闲。 页面可见的操作/字段包括 “查询”、“item.name”、“序号”、“工位”、“生产订单”、“计划号”、“销售订单”、“物料名称”、“物料编码”、“顺序”,这些是判断页面业务范围的主要线索。 后端主要围绕 MES_登录_工位与名称_查询、设备管理_设备状态_查 +过程覆盖:`MES_登录_工位与名称_查询`、`设备管理_设备状态_查询` + +```text +[进入页面 / src/views/ProductionManagement/DeviceStatus/index.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [组装查询条件 / 分页/时间/订单/工位] +[组装查询条件 / 分页/时间/订单/工位] --> [type 11(当前通用存储过程查询/执行) / MES_登录_工位与名称_查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / MES_登录_工位与名称_查询 / 查询/读取数据] --> [ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] +[ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [校验必填项/选中行/数量和状态] +[校验必填项/选中行/数量和状态] --> [type 11(当前通用存储过程查询/执行) / 设备管理_设备状态_查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 设备管理_设备状态_查询 / 查询/读取数据] --> [后端写入/更新完成 / 返回成功/失败消息] +[后端写入/更新完成 / 返回成功/失败消息] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [主要数据对象 / View_基础数据_工位 / MES_资源主数据 / MES_接口_生产计划 / MES_接口_生产计划_生产任务 / YL_质量检验_质检记录] +[主要数据对象 / View_基础数据_工位 / MES_资源主数据 / MES_接口_生产计划 / MES_接口_生产计划_生产任务 / YL_质量检验_质检记录] --> [用户继续查询/维护或转入下一业务页] +``` + +| 环节 | 页面调用/过程 | 用途 | 依赖线索 | +|---|---|---|---| +| 1 | `MES_登录_工位与名称_查询` | 查询/读取数据 | 视图:View_基础数据_工位 | +| 2 | `设备管理_设备状态_查询` | 查询/读取数据 | 表:MES_资源主数据、MES_接口_生产计划、MES_接口_生产计划_生产任务、YL_质量检验_质检记录;视图:View_生产订单_MES、View_设备工位人员 | + +#### 32. `src/views/ProductionManagement/MachiningCenter/index.vue` + +页面要点:该页面是机加生产执行主界面。操作员按工位查看可执行任务和进行中任务,完成收料、开始加工、暂停/恢复、报工、辅助工序、首检/巡检/序检、生产发料查询、退库、图纸查看等动作,并写入加工中心操作记录和报工记录。 页面可见的操作/字段包括 “取 消”、“确 定”、“上一个 下一个”、“删除当前记录 关闭”、“上一个 下一个 保存当前记录 删除当前 +过程覆盖:`生产管理_加工中心_获取设备人员`、`生产管理_加工中心_获取班次信息`、`加急订单_加急明细查询`、`生产管理_获取人员绑定`、`工时校验_获取订单工序`、`工时校验_获取订单列表`、`异常工时_新增操作记录`、`MES_操作记录_获取暂停状态`、`MES_操作记录_获取任务暂停状态`、`MES_登录_工位与名称_查询`、... +WMS/条码任务:页面涉及 `stocktask` 出库/入库任务接口。 + +```text +[进入页面 / src/views/ProductionManagement/MachiningCenter/index.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [组装查询条件 / 分页/时间/订单/工位] +[组装查询条件 / 分页/时间/订单/工位] --> [type 11(当前通用存储过程查询/执行) / 生产管理_加工中心_获取设备人员 / 基础权限/人员数据处理] +[type 11(当前通用存储过程查询/执行) / 生产管理_加工中心_获取设备人员 / 基础权限/人员数据处理] --> [type 11(当前通用存储过程查询/执行) / 生产管理_加工中心_获取班次信息 / 业务存储过程调用] +[type 11(当前通用存储过程查询/执行) / 生产管理_加工中心_获取班次信息 / 业务存储过程调用] --> [type 11(当前通用存储过程查询/执行) / 生产管理_获取人员绑定 / 基础权限/人员数据处理] +[type 11(当前通用存储过程查询/执行) / 生产管理_获取人员绑定 / 基础权限/人员数据处理] --> [type 11(当前通用存储过程查询/执行) / 工时校验_获取订单工序 / 报工或工时处理] +[type 11(当前通用存储过程查询/执行) / 工时校验_获取订单工序 / 报工或工时处理] --> [type 11(当前通用存储过程查询/执行) / MES_操作记录_获取暂停状态 / 业务存储过程调用] +[type 11(当前通用存储过程查询/执行) / MES_操作记录_获取暂停状态 / 业务存储过程调用] --> [ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] +[ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [校验必填项/选中行/数量和状态] +[校验必填项/选中行/数量和状态] --> [type 11(当前通用存储过程查询/执行) / 加急订单_加急明细查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 加急订单_加急明细查询 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 工时校验_获取订单列表 / 报工或工时处理] +[type 11(当前通用存储过程查询/执行) / 工时校验_获取订单列表 / 报工或工时处理] --> [type 11(当前通用存储过程查询/执行) / 异常工时_新增操作记录 / 新增业务数据] +[type 11(当前通用存储过程查询/执行) / 异常工时_新增操作记录 / 新增业务数据] --> [type 12(当前通用存储过程写入/业务动作) / MES_ProductTask_HelpStart / 业务存储过程调用] +[type 12(当前通用存储过程写入/业务动作) / MES_ProductTask_HelpStart / 业务存储过程调用] --> [type 11(当前通用存储过程查询/执行) / Prog_MES_GetProductOrder_byAID / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / Prog_MES_GetProductOrder_byAID / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / MES_ProductCenter_GetTask / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / MES_ProductCenter_GetTask / 查询/读取数据] --> [后端写入/更新完成 / 返回成功/失败消息] +[后端写入/更新完成 / 返回成功/失败消息] --> [是否需要外部系统同步?] +[是否需要外部系统同步?] -- WMS/条码 --> [stocktask 入库/出库任务 / 物料/条码/数量同步] +[是否需要外部系统同步?] -- 否 --> [MES 本地状态生效] +[stocktask 入库/出库任务 / 物料/条码/数量同步] --> [外部返回成功?] +[MES 本地状态生效] --> [刷新列表/明细/看板数据] +[外部返回成功?] -- 是 --> [刷新列表/明细/看板数据] +[外部返回成功?] -- 否 --> [记录失败原因 / 保留待重试/待处理状态] +[记录失败原因 / 保留待重试/待处理状态] --> [刷新列表/明细/看板数据] +[用户是否发起业务动作?] -- 否 --> [刷新列表/明细/看板数据] +[刷新列表/明细/看板数据] --> [主要数据对象 / View_设备工位人员 / 班次表 / MES_接口_生产计划 / SAP/链接库:SAP.SBO_YL.dbo.ubt_OPKL_UrgentMaterials_ALL / MES_资源主数据] +[主要数据对象 / View_设备工位人员 / 班次表 / MES_接口_生产计划 / SAP/链接库:SAP.SBO_YL.dbo.ubt_OPKL_UrgentMaterials_ALL / MES_资源主数据] --> [用户继续查询/维护或转入下一业务页] +``` + +| 环节 | 页面调用/过程 | 用途 | 依赖线索 | +|---|---|---|---| +| 1 | `生产管理_加工中心_获取设备人员` | 基础权限/人员数据处理 | 视图:View_设备工位人员 | +| 2 | `生产管理_加工中心_获取班次信息` | 业务存储过程调用 | 表:班次表 | +| 3 | `加急订单_加急明细查询` | 查询/读取数据 | 表:MES_接口_生产计划;SAP/链接库:SAP.SBO_YL.dbo.ubt_OPKL_UrgentMaterials_ALL | +| 4 | `生产管理_获取人员绑定` | 基础权限/人员数据处理 | 表:MES_资源主数据、工位人员绑定表 | +| 5 | `工时校验_获取订单工序` | 报工或工时处理 | 视图:View_生产订单_MES | +| 6 | `工时校验_获取订单列表` | 报工或工时处理 | 表:MES_接口_生产计划 | +| 7 | `异常工时_新增操作记录` | 新增业务数据 | 表:YL_加工中心_操作记录表;视图:View_生产订单_MES | +| 8 | `MES_操作记录_获取暂停状态` | 业务存储过程调用 | 表:YL_加工中心_操作记录表 | +| 9 | `MES_操作记录_获取任务暂停状态` | 业务存储过程调用 | 表:YL_加工中心_操作记录表 | +| 10 | `MES_登录_工位与名称_查询` | 查询/读取数据 | 视图:View_基础数据_工位 | +| 11 | `Prog_MES_LoadProcess` | 查询/读取数据 | 表:基础表_工序 | +| 12 | `查询字典` | 查询/读取数据 | 表:YL_基础表_数据字典 | +| ... | ... | 共 48 个过程,此处仅列前 12 个 | 详见分析文档对应页面段落 | + +#### 33. `src/views/ProductionManagement/OutsourceMange/index.vue` + +页面要点:该页面管理外协任务。用户查询可外协工序,按供应商/订单/工序分组,执行外协派工并同步 SAP 采购请求或相关单据,维护外协发料、收料、质检记录、打印次数和备注。 页面可见的操作/字段包括 “查询 派工并同步SAP”、“打印”、“发料”、“收货”、“编辑”、“历史记录”、“查看图纸”、“工艺图纸”、“取 消”、“确 定”,这些是判断页面业务 +过程覆盖:`生产管理_外协管理_外协历史查询`、`计划排产_派工`、`生产管理_外协管理_更新打印次数`、`生产管理_外协管理_更新备注`、`工艺管理_图纸维护_查看图纸`、`工艺管理_工艺维护_查看图纸`、`生产管理_外协管理_查询外协全部`、`生产管理_外协管理_外协发料查询`、`生产管理_外协管理_外协发料保存`、`生产管理_外协管理_外协收料保存` + +```text +[进入页面 / src/views/ProductionManagement/OutsourceMange/index.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [组装查询条件 / 分页/时间/订单/工位] +[组装查询条件 / 分页/时间/订单/工位] --> [type 11(当前通用存储过程查询/执行) / 生产管理_外协管理_外协历史查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 生产管理_外协管理_外协历史查询 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 工艺管理_图纸维护_查看图纸 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 工艺管理_图纸维护_查看图纸 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 工艺管理_工艺维护_查看图纸 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 工艺管理_工艺维护_查看图纸 / 查询/读取数据] --> [ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] +[ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [校验必填项/选中行/数量和状态] +[校验必填项/选中行/数量和状态] --> [type 12(当前通用存储过程写入/业务动作) / 计划排产_派工 / 计划排产或派工] +[type 12(当前通用存储过程写入/业务动作) / 计划排产_派工 / 计划排产或派工] --> [type 11(当前通用存储过程查询/执行) / 生产管理_外协管理_更新打印次数 / 更新/保存业务数据] +[type 11(当前通用存储过程查询/执行) / 生产管理_外协管理_更新打印次数 / 更新/保存业务数据] --> [type 11(当前通用存储过程查询/执行) / 生产管理_外协管理_更新备注 / 更新/保存业务数据] +[type 11(当前通用存储过程查询/执行) / 生产管理_外协管理_更新备注 / 更新/保存业务数据] --> [type 11(当前通用存储过程查询/执行) / 生产管理_外协管理_查询外协全部 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 生产管理_外协管理_查询外协全部 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 生产管理_外协管理_外协发料查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 生产管理_外协管理_外协发料查询 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 生产管理_外协管理_外协发料保存 / 更新/保存业务数据] +[type 11(当前通用存储过程查询/执行) / 生产管理_外协管理_外协发料保存 / 更新/保存业务数据] --> [后端写入/更新完成 / 返回成功/失败消息] +[后端写入/更新完成 / 返回成功/失败消息] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [主要数据对象 / YL_加工中心_操作记录表 / 视图:View_生产订单_MES / MES_接口_生产计划 / MES_接口_生产计划_生产任务 / 物料基础数据_零件图纸] +[主要数据对象 / YL_加工中心_操作记录表 / 视图:View_生产订单_MES / MES_接口_生产计划 / MES_接口_生产计划_生产任务 / 物料基础数据_零件图纸] --> [用户继续查询/维护或转入下一业务页] +``` + +| 环节 | 页面调用/过程 | 用途 | 依赖线索 | +|---|---|---|---| +| 1 | `生产管理_外协管理_外协历史查询` | 查询/读取数据 | 表:YL_加工中心_操作记录表;视图:View_生产订单_MES | +| 2 | `计划排产_派工` | 计划排产或派工 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务 | +| 3 | `生产管理_外协管理_更新打印次数` | 更新/保存业务数据 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务 | +| 4 | `生产管理_外协管理_更新备注` | 更新/保存业务数据 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务 | +| 5 | `工艺管理_图纸维护_查看图纸` | 查询/读取数据 | 表:物料基础数据_零件图纸 | +| 6 | `工艺管理_工艺维护_查看图纸` | 查询/读取数据 | 表:物料基础数据_工艺图纸 | +| 7 | `生产管理_外协管理_查询外协全部` | 查询/读取数据 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务、YL_质量检验_质检记录;视图:View_生产订单全部(包括已关闭) | +| 8 | `生产管理_外协管理_外协发料查询` | 查询/读取数据 | 表:YL_质量检验_质检记录;视图:View_生产订单_MES | +| 9 | `生产管理_外协管理_外协发料保存` | 更新/保存业务数据 | 表:MES_接口_生产计划 | +| 10 | `生产管理_外协管理_外协收料保存` | 更新/保存业务数据 | 表:MES_接口_生产计划 | + +#### 34. `src/views/ProductionManagement/OutsourceSheet/index.vue` + +页面要点:该页面输出外协报表。用户按订单、合同、产品、计划号、供应商、状态分页查询外协报表,也可导出,用于外协进度、发料、收料、质检、开票等跟踪。 页面可见的操作/字段包括 “查询”、“Excel导出”、“全部”、“收检”、“终检”、“来料检验”、“退库检验”、“收料小于发料”、“供应商”、“订单号”,这些是判断页面业务范围的主要线索。 后端主要围 +过程覆盖:`生产管理_外协报表_导出`、`生产管理_外协报表_查询` + +```text +[进入页面 / src/views/ProductionManagement/OutsourceSheet/index.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [页面绘制/路由容器展示 / 未识别到页面级存储过程] +[页面绘制/路由容器展示 / 未识别到页面级存储过程] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [校验必填项/选中行/数量和状态] +[校验必填项/选中行/数量和状态] --> [type 2001(导出/报表类过程) / 生产管理_外协报表_导出 / 外协业务处理] +[type 2001(导出/报表类过程) / 生产管理_外协报表_导出 / 外协业务处理] --> [type 11(当前通用存储过程查询/执行) / 生产管理_外协报表_查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 生产管理_外协报表_查询 / 查询/读取数据] --> [后端写入/更新完成 / 返回成功/失败消息] +[后端写入/更新完成 / 返回成功/失败消息] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [页面状态/路由/展示数据] +[页面状态/路由/展示数据] --> [用户继续查询/维护或转入下一业务页] +``` + +| 环节 | 页面调用/过程 | 用途 | 依赖线索 | +|---|---|---|---| +| 1 | `生产管理_外协报表_导出` | 外协业务处理 | 未在 SQL 中解析到明确依赖 | +| 2 | `生产管理_外协报表_查询` | 查询/读取数据 | 未在 SQL 中解析到明确依赖 | + +#### 35. `src/views/ProductionManagement/PersonnelBinding/index.vue` + +页面要点:该页面维护工位与人员绑定关系。用于限制或提示哪些人员可在指定工位报工、开工或执行任务。 页面可见的操作/字段包括 “查询”、“绑定人员”、“确 定”、“取 消”、“序号”、“工位名称”、“工位号”、“操作”、“请输入工位名称”,这些是判断页面业务范围的主要线索。 后端主要围绕 MES_登录_工位与名称_查询、系统管理_人员管理_所有有效人 +过程覆盖:`MES_登录_工位与名称_查询`、`系统管理_人员管理_所有有效人员查询`、`系统管理_工位管理_工位绑定人员查询`、`系统管理_工位管理_工位绑定人员保存` + +```text +[进入页面 / src/views/ProductionManagement/PersonnelBinding/index.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [组装查询条件 / 分页/时间/订单/工位] +[组装查询条件 / 分页/时间/订单/工位] --> [type 11(当前通用存储过程查询/执行) / MES_登录_工位与名称_查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / MES_登录_工位与名称_查询 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 系统管理_人员管理_所有有效人员查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 系统管理_人员管理_所有有效人员查询 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 系统管理_工位管理_工位绑定人员查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 系统管理_工位管理_工位绑定人员查询 / 查询/读取数据] --> [ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] +[ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [校验必填项/选中行/数量和状态] +[校验必填项/选中行/数量和状态] --> [type 11(当前通用存储过程查询/执行) / 系统管理_工位管理_工位绑定人员保存 / 更新/保存业务数据] +[type 11(当前通用存储过程查询/执行) / 系统管理_工位管理_工位绑定人员保存 / 更新/保存业务数据] --> [后端写入/更新完成 / 返回成功/失败消息] +[后端写入/更新完成 / 返回成功/失败消息] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [主要数据对象 / View_基础数据_工位 / 登录基础数据_管理人员权限视图] +[主要数据对象 / View_基础数据_工位 / 登录基础数据_管理人员权限视图] --> [用户继续查询/维护或转入下一业务页] +``` + +| 环节 | 页面调用/过程 | 用途 | 依赖线索 | +|---|---|---|---| +| 1 | `MES_登录_工位与名称_查询` | 查询/读取数据 | 视图:View_基础数据_工位 | +| 2 | `系统管理_人员管理_所有有效人员查询` | 查询/读取数据 | 视图:登录基础数据_管理人员权限视图 | +| 3 | `系统管理_工位管理_工位绑定人员查询` | 查询/读取数据 | 视图:登录基础数据_管理人员权限视图 | +| 4 | `系统管理_工位管理_工位绑定人员保存` | 更新/保存业务数据 | 未在 SQL 中解析到明确依赖 | + +#### 36. `src/views/ProductionManagement/PickingTask/index.vue` + +页面要点:该页面处理拣配任务。用户查询生产订单相关拣配/领料任务,并可能联动 SAP 生产订单或库存出入库状态。 页面可见的操作/字段包括 “查询”、“转至 完成 --> 生产订单 加急数量 物料编号 关闭”、“装配”、“机加”、“全部”、“一楼”、“二楼”、“仓库”、“已完成”、“未完成”,这些是判断页面业务范围的主要线索。 后端主要围绕 生产管 +过程覆盖:`生产管理_拣配任务_查询` + +```text +[进入页面 / src/views/ProductionManagement/PickingTask/index.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [页面绘制/路由容器展示 / 未识别到页面级存储过程] +[页面绘制/路由容器展示 / 未识别到页面级存储过程] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [校验必填项/选中行/数量和状态] +[校验必填项/选中行/数量和状态] --> [type 11(当前通用存储过程查询/执行) / 生产管理_拣配任务_查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 生产管理_拣配任务_查询 / 查询/读取数据] --> [后端写入/更新完成 / 返回成功/失败消息] +[后端写入/更新完成 / 返回成功/失败消息] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [主要数据对象 / SAP.SBO_YL.dbo.UBT_MES_TASK_MERGE] +[主要数据对象 / SAP.SBO_YL.dbo.UBT_MES_TASK_MERGE] --> [用户继续查询/维护或转入下一业务页] +``` + +| 环节 | 页面调用/过程 | 用途 | 依赖线索 | +|---|---|---|---| +| 1 | `生产管理_拣配任务_查询` | 查询/读取数据 | SAP/链接库:SAP.SBO_YL.dbo.UBT_MES_TASK_MERGE | + +#### 37. `src/views/ProductionManagement/ProductionPlanTrack/index.vue` + +页面要点:该页面跟踪生产计划执行。用户查看计划任务的开工、完工、进度、延期或异常情况,用于计划员追踪订单。 页面可见的操作/字段包括 “查询”、“关闭”、“全部”、“机加”、“装配”、“是”、“否”、“加急”、“正常”、“序号”,这些是判断页面业务范围的主要线索。 后端主要围绕 加急订单_加急明细查询、生产管理_生产计划跟踪、MES_OrderPl +过程覆盖:`加急订单_加急明细查询`、`生产管理_生产计划跟踪`、`MES_OrderPlanned_DescriptionEdit`、`Prog_MES_LoadStations` + +```text +[进入页面 / src/views/ProductionManagement/ProductionPlanTrack/index.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [组装查询条件 / 分页/时间/订单/工位] +[组装查询条件 / 分页/时间/订单/工位] --> [type 11(当前通用存储过程查询/执行) / Prog_MES_LoadStations / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / Prog_MES_LoadStations / 查询/读取数据] --> [ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] +[ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [校验必填项/选中行/数量和状态] +[校验必填项/选中行/数量和状态] --> [type 11(当前通用存储过程查询/执行) / 加急订单_加急明细查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 加急订单_加急明细查询 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 生产管理_生产计划跟踪 / 计划排产或派工] +[type 11(当前通用存储过程查询/执行) / 生产管理_生产计划跟踪 / 计划排产或派工] --> [type 12(当前通用存储过程写入/业务动作) / MES_OrderPlanned_DescriptionEdit / 更新/保存业务数据] +[type 12(当前通用存储过程写入/业务动作) / MES_OrderPlanned_DescriptionEdit / 更新/保存业务数据] --> [后端写入/更新完成 / 返回成功/失败消息] +[后端写入/更新完成 / 返回成功/失败消息] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [主要数据对象 / MES_接口_生产计划 / SAP/链接库:SAP.SBO_YL.dbo.ubt_OPKL_UrgentMaterials_ALL / YL_加工中心_操作记录表 / 视图:View_生产订单_MES / View_生产订单全部] +[主要数据对象 / MES_接口_生产计划 / SAP/链接库:SAP.SBO_YL.dbo.ubt_OPKL_UrgentMaterials_ALL / YL_加工中心_操作记录表 / 视图:View_生产订单_MES / View_生产订单全部] --> [用户继续查询/维护或转入下一业务页] +``` + +| 环节 | 页面调用/过程 | 用途 | 依赖线索 | +|---|---|---|---| +| 1 | `加急订单_加急明细查询` | 查询/读取数据 | 表:MES_接口_生产计划;SAP/链接库:SAP.SBO_YL.dbo.ubt_OPKL_UrgentMaterials_ALL | +| 2 | `生产管理_生产计划跟踪` | 计划排产或派工 | 表:YL_加工中心_操作记录表;视图:View_生产订单_MES、View_生产订单全部(包括已关闭) | +| 3 | `MES_OrderPlanned_DescriptionEdit` | 更新/保存业务数据 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务 | +| 4 | `Prog_MES_LoadStations` | 查询/读取数据 | 表:MES_资源主数据 | + +#### 38. `src/views/ProductionManagement/ProductionTaskManage/index.vue` + +页面要点:该页面管理生产任务。用户按工位、订单、工序查询任务,查看工时汇总,执行派工、修改计划字段、维护任务说明和通知状态。 页面可见的操作/字段包括 “查询”、“表单”、“日程”、“派工调整”、“外协通知”、“已发起”、“编辑”、“取 消”、“确 定”、“item.指南工位号”,这些是判断页面业务范围的主要线索。 后端主要围绕 MES_登录_工位 +过程覆盖:`MES_登录_工位与名称_查询`、`MES_OrderPlanned_SingleTaskPlanned`、`MES_ProductTask_WorkTimeSum`、`MES_ProductAdmin_Query`、`Prog_MES_LoadStations`、`Prog_MES_SingleTaskPlanned`、`MES_OrderPlanned_DescriptionEdit`、`MES_ProductTask_Notice`、`MES_OrderPlanned_EditTaskPlanned` + +```text +[进入页面 / src/views/ProductionManagement/ProductionTaskManage/index.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [组装查询条件 / 分页/时间/订单/工位] +[组装查询条件 / 分页/时间/订单/工位] --> [type 11(当前通用存储过程查询/执行) / MES_登录_工位与名称_查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / MES_登录_工位与名称_查询 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / Prog_MES_LoadStations / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / Prog_MES_LoadStations / 查询/读取数据] --> [ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] +[ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [校验必填项/选中行/数量和状态] +[校验必填项/选中行/数量和状态] --> [type 12(当前通用存储过程写入/业务动作) / MES_OrderPlanned_SingleTaskPlanned / 计划排产或派工] +[type 12(当前通用存储过程写入/业务动作) / MES_OrderPlanned_SingleTaskPlanned / 计划排产或派工] --> [type 11(当前通用存储过程查询/执行) / MES_ProductTask_WorkTimeSum / 报工或工时处理] +[type 11(当前通用存储过程查询/执行) / MES_ProductTask_WorkTimeSum / 报工或工时处理] --> [type 11(当前通用存储过程查询/执行) / MES_ProductAdmin_Query / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / MES_ProductAdmin_Query / 查询/读取数据] --> [type 12(当前通用存储过程写入/业务动作) / Prog_MES_SingleTaskPlanned / 计划排产或派工] +[type 12(当前通用存储过程写入/业务动作) / Prog_MES_SingleTaskPlanned / 计划排产或派工] --> [type 12(当前通用存储过程写入/业务动作) / MES_OrderPlanned_DescriptionEdit / 更新/保存业务数据] +[type 12(当前通用存储过程写入/业务动作) / MES_OrderPlanned_DescriptionEdit / 更新/保存业务数据] --> [type 12(当前通用存储过程写入/业务动作) / MES_ProductTask_Notice / 业务存储过程调用] +[type 12(当前通用存储过程写入/业务动作) / MES_ProductTask_Notice / 业务存储过程调用] --> [后端写入/更新完成 / 返回成功/失败消息] +[后端写入/更新完成 / 返回成功/失败消息] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [主要数据对象 / View_基础数据_工位 / MES_接口_生产计划 / MES_接口_生产计划_生产任务 / View_生产订单_MES / MES_资源主数据] +[主要数据对象 / View_基础数据_工位 / MES_接口_生产计划 / MES_接口_生产计划_生产任务 / View_生产订单_MES / MES_资源主数据] --> [用户继续查询/维护或转入下一业务页] +``` + +| 环节 | 页面调用/过程 | 用途 | 依赖线索 | +|---|---|---|---| +| 1 | `MES_登录_工位与名称_查询` | 查询/读取数据 | 视图:View_基础数据_工位 | +| 2 | `MES_OrderPlanned_SingleTaskPlanned` | 计划排产或派工 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务 | +| 3 | `MES_ProductTask_WorkTimeSum` | 报工或工时处理 | 未在 SQL 中解析到明确依赖 | +| 4 | `MES_ProductAdmin_Query` | 查询/读取数据 | 视图:View_生产订单_MES | +| 5 | `Prog_MES_LoadStations` | 查询/读取数据 | 表:MES_资源主数据 | +| 6 | `Prog_MES_SingleTaskPlanned` | 计划排产或派工 | 未知 | +| 7 | `MES_OrderPlanned_DescriptionEdit` | 更新/保存业务数据 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务 | +| 8 | `MES_ProductTask_Notice` | 业务存储过程调用 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务 | +| 9 | `MES_OrderPlanned_EditTaskPlanned` | 更新/保存业务数据 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务 | + +#### 39. `src/views/ProductionManagement/ProductionTasksSum/index.vue` + +页面要点:该页面做生产任务汇总。用户按订单、工序、工位、时间等维度查询生产任务和工时汇总,并可编辑计划说明或派工信息。 页面可见的操作/字段包括 “查询”、“编辑”、“取 消”、“确 定”、“item.指南工位号”、“表单”、“序号”、“销售订单”、“生产订单”、“零件编码”,这些是判断页面业务范围的主要线索。 后端主要围绕 MES_登录_工位与名 +过程覆盖:`MES_登录_工位与名称_查询`、`MES_ProductTask_WorkTimeSum`、`生产管理_生产任务汇总`、`Prog_MES_LoadStations`、`MES_OrderPlanned_DescriptionEdit`、`MES_OrderPlanned_EditTaskPlanned` + +```text +[进入页面 / src/views/ProductionManagement/ProductionTasksSum/index.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [组装查询条件 / 分页/时间/订单/工位] +[组装查询条件 / 分页/时间/订单/工位] --> [type 11(当前通用存储过程查询/执行) / MES_登录_工位与名称_查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / MES_登录_工位与名称_查询 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / Prog_MES_LoadStations / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / Prog_MES_LoadStations / 查询/读取数据] --> [ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] +[ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [校验必填项/选中行/数量和状态] +[校验必填项/选中行/数量和状态] --> [type 11(当前通用存储过程查询/执行) / MES_ProductTask_WorkTimeSum / 报工或工时处理] +[type 11(当前通用存储过程查询/执行) / MES_ProductTask_WorkTimeSum / 报工或工时处理] --> [type 11(当前通用存储过程查询/执行) / 生产管理_生产任务汇总 / 业务存储过程调用] +[type 11(当前通用存储过程查询/执行) / 生产管理_生产任务汇总 / 业务存储过程调用] --> [type 12(当前通用存储过程写入/业务动作) / MES_OrderPlanned_DescriptionEdit / 更新/保存业务数据] +[type 12(当前通用存储过程写入/业务动作) / MES_OrderPlanned_DescriptionEdit / 更新/保存业务数据] --> [type 12(当前通用存储过程写入/业务动作) / MES_OrderPlanned_EditTaskPlanned / 更新/保存业务数据] +[type 12(当前通用存储过程写入/业务动作) / MES_OrderPlanned_EditTaskPlanned / 更新/保存业务数据] --> [后端写入/更新完成 / 返回成功/失败消息] +[后端写入/更新完成 / 返回成功/失败消息] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [主要数据对象 / View_基础数据_工位 / View_生产订单_MES / MES_资源主数据 / MES_接口_生产计划 / MES_接口_生产计划_生产任务] +[主要数据对象 / View_基础数据_工位 / View_生产订单_MES / MES_资源主数据 / MES_接口_生产计划 / MES_接口_生产计划_生产任务] --> [用户继续查询/维护或转入下一业务页] +``` + +| 环节 | 页面调用/过程 | 用途 | 依赖线索 | +|---|---|---|---| +| 1 | `MES_登录_工位与名称_查询` | 查询/读取数据 | 视图:View_基础数据_工位 | +| 2 | `MES_ProductTask_WorkTimeSum` | 报工或工时处理 | 未在 SQL 中解析到明确依赖 | +| 3 | `生产管理_生产任务汇总` | 业务存储过程调用 | 视图:View_生产订单_MES | +| 4 | `Prog_MES_LoadStations` | 查询/读取数据 | 表:MES_资源主数据 | +| 5 | `MES_OrderPlanned_DescriptionEdit` | 更新/保存业务数据 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务 | +| 6 | `MES_OrderPlanned_EditTaskPlanned` | 更新/保存业务数据 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务 | + +#### 40. `src/views/ProductionManagement/SaleOutsourceMange/index.vue` + +页面要点:该页面管理外协任务。用户查询可外协工序,按供应商/订单/工序分组,执行外协派工并同步 SAP 采购请求或相关单据,维护外协发料、收料、质检记录、打印次数和备注。 页面可见的操作/字段包括 “查询 派工并同步SAP”、“打印”、“发料”、“收货”、“更新”、“编辑”、“历史记录”、“查看图纸”、“工艺图纸”、“收发记录”,这些是判断页面业务 +过程覆盖:`计划排产_重置派工状态`、`生产管理_外协管理_外协历史查询`、`计划排产_派工`、`生产管理_外协管理_更新打印次数`、`生产管理_外协管理_更新备注`、`工艺管理_图纸维护_查看图纸`、`工艺管理_工艺维护_查看图纸`、`生产管理_外协管理_查询外协`、`生产管理_外协管理_外协发料查询`、`生产管理_外协管理_查询外协历史记录`、... + +```text +[进入页面 / src/views/ProductionManagement/SaleOutsourceMange/index.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [组装查询条件 / 分页/时间/订单/工位] +[组装查询条件 / 分页/时间/订单/工位] --> [type 11(当前通用存储过程查询/执行) / 生产管理_外协管理_外协历史查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 生产管理_外协管理_外协历史查询 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 工艺管理_图纸维护_查看图纸 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 工艺管理_图纸维护_查看图纸 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 工艺管理_工艺维护_查看图纸 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 工艺管理_工艺维护_查看图纸 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 生产管理_外协管理_查询外协历史记录 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 生产管理_外协管理_查询外协历史记录 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 生产管理_外协管理_查询质检记录 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 生产管理_外协管理_查询质检记录 / 查询/读取数据] --> [ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] +[ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [校验必填项/选中行/数量和状态] +[校验必填项/选中行/数量和状态] --> [type 11(当前通用存储过程查询/执行) / 计划排产_重置派工状态 / 计划排产或派工] +[type 11(当前通用存储过程查询/执行) / 计划排产_重置派工状态 / 计划排产或派工] --> [type 12(当前通用存储过程写入/业务动作) / 计划排产_派工 / 计划排产或派工] +[type 12(当前通用存储过程写入/业务动作) / 计划排产_派工 / 计划排产或派工] --> [type 11(当前通用存储过程查询/执行) / 生产管理_外协管理_更新打印次数 / 更新/保存业务数据] +[type 11(当前通用存储过程查询/执行) / 生产管理_外协管理_更新打印次数 / 更新/保存业务数据] --> [type 11(当前通用存储过程查询/执行) / 生产管理_外协管理_更新备注 / 更新/保存业务数据] +[type 11(当前通用存储过程查询/执行) / 生产管理_外协管理_更新备注 / 更新/保存业务数据] --> [type 11(当前通用存储过程查询/执行) / 生产管理_外协管理_查询外协 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 生产管理_外协管理_查询外协 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 生产管理_外协管理_外协发料查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 生产管理_外协管理_外协发料查询 / 查询/读取数据] --> [后端写入/更新完成 / 返回成功/失败消息] +[后端写入/更新完成 / 返回成功/失败消息] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [主要数据对象 / MES_接口_生产计划 / MES_接口_生产计划_生产任务 / YL_加工中心_操作记录表 / 视图:View_生产订单_MES / 物料基础数据_零件图纸] +[主要数据对象 / MES_接口_生产计划 / MES_接口_生产计划_生产任务 / YL_加工中心_操作记录表 / 视图:View_生产订单_MES / 物料基础数据_零件图纸] --> [用户继续查询/维护或转入下一业务页] +``` + +| 环节 | 页面调用/过程 | 用途 | 依赖线索 | +|---|---|---|---| +| 1 | `计划排产_重置派工状态` | 计划排产或派工 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务 | +| 2 | `生产管理_外协管理_外协历史查询` | 查询/读取数据 | 表:YL_加工中心_操作记录表;视图:View_生产订单_MES | +| 3 | `计划排产_派工` | 计划排产或派工 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务 | +| 4 | `生产管理_外协管理_更新打印次数` | 更新/保存业务数据 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务 | +| 5 | `生产管理_外协管理_更新备注` | 更新/保存业务数据 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务 | +| 6 | `工艺管理_图纸维护_查看图纸` | 查询/读取数据 | 表:物料基础数据_零件图纸 | +| 7 | `工艺管理_工艺维护_查看图纸` | 查询/读取数据 | 表:物料基础数据_工艺图纸 | +| 8 | `生产管理_外协管理_查询外协` | 查询/读取数据 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务、YL_质量检验_质检记录;视图:View_生产订单_MES | +| 9 | `生产管理_外协管理_外协发料查询` | 查询/读取数据 | 表:YL_质量检验_质检记录;视图:View_生产订单_MES | +| 10 | `生产管理_外协管理_查询外协历史记录` | 查询/读取数据 | 表:YL_加工中心_操作记录表 | +| 11 | `生产管理_外协管理_查询质检记录` | 查询/读取数据 | 表:YL_质量检验_质检记录 | +| 12 | `生产管理_外协管理_外协发料保存` | 更新/保存业务数据 | 表:MES_接口_生产计划 | +| ... | ... | 共 13 个过程,此处仅列前 12 个 | 详见分析文档对应页面段落 | + +#### 41. `src/views/ProductionManagement/ShiftManagement/index.vue` + +页面要点:该页面维护班次和班次人员绑定。用户新增、修改、删除班次,给班次绑定人员,为工时计算和报工归属提供基础数据。 页面可见的操作/字段包括 “添加新班次”、“编辑”、“保存”、“取消”、“绑定”、“删除”、“确 定”、“取 消”、“序号”、“班次”,这些是判断页面业务范围的主要线索。 后端主要围绕 生产管理_班次管理_班次列表查询、系统管理_人 +过程覆盖:`生产管理_班次管理_班次列表查询`、`系统管理_人员管理_所有有效人员查询`、`生产管理_班次管理_班次绑定人员查询`、`生产管理_班次管理_班次保存`、`生产管理_班次管理_班次删除`、`生产管理_班次管理_班次绑定人员保存` + +```text +[进入页面 / src/views/ProductionManagement/ShiftManagement/index.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [组装查询条件 / 分页/时间/订单/工位] +[组装查询条件 / 分页/时间/订单/工位] --> [type 11(当前通用存储过程查询/执行) / 生产管理_班次管理_班次列表查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 生产管理_班次管理_班次列表查询 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 系统管理_人员管理_所有有效人员查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 系统管理_人员管理_所有有效人员查询 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 生产管理_班次管理_班次绑定人员查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 生产管理_班次管理_班次绑定人员查询 / 查询/读取数据] --> [ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] +[ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [校验必填项/选中行/数量和状态] +[校验必填项/选中行/数量和状态] --> [type 11(当前通用存储过程查询/执行) / 生产管理_班次管理_班次保存 / 更新/保存业务数据] +[type 11(当前通用存储过程查询/执行) / 生产管理_班次管理_班次保存 / 更新/保存业务数据] --> [type 11(当前通用存储过程查询/执行) / 生产管理_班次管理_班次删除 / 删除业务数据] +[type 11(当前通用存储过程查询/执行) / 生产管理_班次管理_班次删除 / 删除业务数据] --> [type 11(当前通用存储过程查询/执行) / 生产管理_班次管理_班次绑定人员保存 / 更新/保存业务数据] +[type 11(当前通用存储过程查询/执行) / 生产管理_班次管理_班次绑定人员保存 / 更新/保存业务数据] --> [后端写入/更新完成 / 返回成功/失败消息] +[后端写入/更新完成 / 返回成功/失败消息] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [主要数据对象 / 登录基础数据_管理人员权限视图] +[主要数据对象 / 登录基础数据_管理人员权限视图] --> [用户继续查询/维护或转入下一业务页] +``` + +| 环节 | 页面调用/过程 | 用途 | 依赖线索 | +|---|---|---|---| +| 1 | `生产管理_班次管理_班次列表查询` | 查询/读取数据 | 未在 SQL 中解析到明确依赖 | +| 2 | `系统管理_人员管理_所有有效人员查询` | 查询/读取数据 | 视图:登录基础数据_管理人员权限视图 | +| 3 | `生产管理_班次管理_班次绑定人员查询` | 查询/读取数据 | 未在 SQL 中解析到明确依赖 | +| 4 | `生产管理_班次管理_班次保存` | 更新/保存业务数据 | 未在 SQL 中解析到明确依赖 | +| 5 | `生产管理_班次管理_班次删除` | 删除业务数据 | 未在 SQL 中解析到明确依赖 | +| 6 | `生产管理_班次管理_班次绑定人员保存` | 更新/保存业务数据 | 未在 SQL 中解析到明确依赖 | + +#### 42. `src/views/ProductionManagement/Timesheet/index.vue` + +页面要点:该页面统计工时。用户按项目、作业者、设备、任务等维度查询工时数据,并可导出报表。 页面可见的操作/字段包括 “查询”、“Excel导出”、“项目工时”、“合同号”、“产品名称”、“产品编码”、“订单编号”、“工序名称”、“操作人”、“计划/完成”,这些是判断页面业务范围的主要线索。 后端主要围绕 工时统计_项目工时_查询、工时统计_作业者 +过程覆盖:`工时统计_项目工时_查询`、`工时统计_作业者工时_查询`、`工时统计_设备工时_查询`、`工时统计_任务工时_查询` + +```text +[进入页面 / src/views/ProductionManagement/Timesheet/index.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [组装查询条件 / 分页/时间/订单/工位] +[组装查询条件 / 分页/时间/订单/工位] --> [type 11(当前通用存储过程查询/执行) / 工时统计_作业者工时_查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 工时统计_作业者工时_查询 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 工时统计_设备工时_查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 工时统计_设备工时_查询 / 查询/读取数据] --> [ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] +[ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [校验必填项/选中行/数量和状态] +[校验必填项/选中行/数量和状态] --> [type 11(当前通用存储过程查询/执行) / 工时统计_项目工时_查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 工时统计_项目工时_查询 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 工时统计_任务工时_查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 工时统计_任务工时_查询 / 查询/读取数据] --> [后端写入/更新完成 / 返回成功/失败消息] +[后端写入/更新完成 / 返回成功/失败消息] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [主要数据对象 / View_生产工时视图] +[主要数据对象 / View_生产工时视图] --> [用户继续查询/维护或转入下一业务页] +``` + +| 环节 | 页面调用/过程 | 用途 | 依赖线索 | +|---|---|---|---| +| 1 | `工时统计_项目工时_查询` | 查询/读取数据 | 未在 SQL 中解析到明确依赖 | +| 2 | `工时统计_作业者工时_查询` | 查询/读取数据 | 视图:View_生产工时视图 | +| 3 | `工时统计_设备工时_查询` | 查询/读取数据 | 未在 SQL 中解析到明确依赖 | +| 4 | `工时统计_任务工时_查询` | 查询/读取数据 | 未在 SQL 中解析到明确依赖 | + +#### 43. `src/views/ProductionManagement/Urgent/index.vue` + +页面要点:该页面维护加急任务。用户查询加急订单明细,并更新完成、转至等字段,用于生产/质检优先级管理。 页面可见的操作/字段包括 “查询”、“转至 完成 加急明细 --> 生产订单 加急数量 物料编号 关闭”、“装配”、“机加”、“全部”、“已转至”、“未转至”、“已完成”、“未完成”、“序号”,这些是判断页面业务范围的主要线索。 后端主要围绕 加 +过程覆盖:`加急订单_加急明细查询`、`生产管理_加急件管理查询`、`生产管理_加急件管理_更新转至`、`生产管理_加急件管理_更新完成` + +```text +[进入页面 / src/views/ProductionManagement/Urgent/index.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [页面绘制/路由容器展示 / 未识别到页面级存储过程] +[页面绘制/路由容器展示 / 未识别到页面级存储过程] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [校验必填项/选中行/数量和状态] +[校验必填项/选中行/数量和状态] --> [type 11(当前通用存储过程查询/执行) / 加急订单_加急明细查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 加急订单_加急明细查询 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 生产管理_加急件管理查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 生产管理_加急件管理查询 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 生产管理_加急件管理_更新转至 / 更新/保存业务数据] +[type 11(当前通用存储过程查询/执行) / 生产管理_加急件管理_更新转至 / 更新/保存业务数据] --> [type 11(当前通用存储过程查询/执行) / 生产管理_加急件管理_更新完成 / 更新/保存业务数据] +[type 11(当前通用存储过程查询/执行) / 生产管理_加急件管理_更新完成 / 更新/保存业务数据] --> [后端写入/更新完成 / 返回成功/失败消息] +[后端写入/更新完成 / 返回成功/失败消息] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [主要数据对象 / MES_接口_生产计划 / SAP/链接库:SAP.SBO_YL.dbo.ubt_OPKL_UrgentMaterials_ALL / YL_质量检验_质检记录 / 视图:View_生产订单_MES] +[主要数据对象 / MES_接口_生产计划 / SAP/链接库:SAP.SBO_YL.dbo.ubt_OPKL_UrgentMaterials_ALL / YL_质量检验_质检记录 / 视图:View_生产订单_MES] --> [用户继续查询/维护或转入下一业务页] +``` + +| 环节 | 页面调用/过程 | 用途 | 依赖线索 | +|---|---|---|---| +| 1 | `加急订单_加急明细查询` | 查询/读取数据 | 表:MES_接口_生产计划;SAP/链接库:SAP.SBO_YL.dbo.ubt_OPKL_UrgentMaterials_ALL | +| 2 | `生产管理_加急件管理查询` | 查询/读取数据 | 表:YL_质量检验_质检记录;视图:View_生产订单_MES | +| 3 | `生产管理_加急件管理_更新转至` | 更新/保存业务数据 | 表:YL_质量检验_质检记录 | +| 4 | `生产管理_加急件管理_更新完成` | 更新/保存业务数据 | 表:YL_质量检验_质检记录 | + +#### 44. `src/views/ProductionManagement/WorkHoursCheck/index - 副本.vue` + +页面要点:该页面用于工时校验。质检/管理人员查询待校验报工记录,系统计算标准/实际工时,保存单条或批量校验结果;通过校验后可把工序资源或工时/出库类单据上传到 SAP。 页面可见的操作/字段包括 “查询”、“一键校验”、“新增工时记录”、“设备工时”、“关闭”、“确 定”、“取消”、“item.label”、“全部”、“已校验”,这些是判断页面业务 +过程覆盖:`人员管理_人员信息查询_质检部门_查询`、`系统管理_人员管理_所有有效人员查询`、`工时校验_获取订单列表`、`工时校验_获取订单工序`、`工时校验_获取昨日之前操作记录列表`、`工时校验_获取资源`、`工时校验_获取设备数据`、`工时校验_保存校验记录`、`工时校验_批量保存校验记录`、`工时校验_获取操作人当天报工记录` + +```text +[进入页面 / src/views/ProductionManagement/WorkHoursCheck/index - 副本.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [组装查询条件 / 分页/时间/订单/工位] +[组装查询条件 / 分页/时间/订单/工位] --> [type 11(当前通用存储过程查询/执行) / 人员管理_人员信息查询_质检部门_查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 人员管理_人员信息查询_质检部门_查询 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 系统管理_人员管理_所有有效人员查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 系统管理_人员管理_所有有效人员查询 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 工时校验_获取订单工序 / 报工或工时处理] +[type 11(当前通用存储过程查询/执行) / 工时校验_获取订单工序 / 报工或工时处理] --> [type 11(当前通用存储过程查询/执行) / 工时校验_获取昨日之前操作记录列表 / 报工或工时处理] +[type 11(当前通用存储过程查询/执行) / 工时校验_获取昨日之前操作记录列表 / 报工或工时处理] --> [type 11(当前通用存储过程查询/执行) / 工时校验_获取资源 / 报工或工时处理] +[type 11(当前通用存储过程查询/执行) / 工时校验_获取资源 / 报工或工时处理] --> [ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] +[ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [校验必填项/选中行/数量和状态] +[校验必填项/选中行/数量和状态] --> [type 11(当前通用存储过程查询/执行) / 工时校验_获取订单列表 / 报工或工时处理] +[type 11(当前通用存储过程查询/执行) / 工时校验_获取订单列表 / 报工或工时处理] --> [type 11(当前通用存储过程查询/执行) / 工时校验_保存校验记录 / 更新/保存业务数据] +[type 11(当前通用存储过程查询/执行) / 工时校验_保存校验记录 / 更新/保存业务数据] --> [type 11(当前通用存储过程查询/执行) / 工时校验_批量保存校验记录 / 更新/保存业务数据] +[type 11(当前通用存储过程查询/执行) / 工时校验_批量保存校验记录 / 更新/保存业务数据] --> [后端写入/更新完成 / 返回成功/失败消息] +[后端写入/更新完成 / 返回成功/失败消息] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [主要数据对象 / 登录基础数据_管理人员权限视图 / MES_接口_生产计划 / View_生产订单_MES / View_生产工时视图 / SAP.SBO_YL.dbo.UBT_ORSC] +[主要数据对象 / 登录基础数据_管理人员权限视图 / MES_接口_生产计划 / View_生产订单_MES / View_生产工时视图 / SAP.SBO_YL.dbo.UBT_ORSC] --> [用户继续查询/维护或转入下一业务页] +``` + +| 环节 | 页面调用/过程 | 用途 | 依赖线索 | +|---|---|---|---| +| 1 | `人员管理_人员信息查询_质检部门_查询` | 查询/读取数据 | 视图:登录基础数据_管理人员权限视图 | +| 2 | `系统管理_人员管理_所有有效人员查询` | 查询/读取数据 | 视图:登录基础数据_管理人员权限视图 | +| 3 | `工时校验_获取订单列表` | 报工或工时处理 | 表:MES_接口_生产计划 | +| 4 | `工时校验_获取订单工序` | 报工或工时处理 | 视图:View_生产订单_MES | +| 5 | `工时校验_获取昨日之前操作记录列表` | 报工或工时处理 | 视图:View_生产工时视图 | +| 6 | `工时校验_获取资源` | 报工或工时处理 | SAP/链接库:SAP.SBO_YL.dbo.UBT_ORSC | +| 7 | `工时校验_获取设备数据` | 报工或工时处理 | 表:历史_工位设备状态每分钟记录 | +| 8 | `工时校验_保存校验记录` | 更新/保存业务数据 | 表:生产管理_工时校验_校验工时表、YL_加工中心_操作记录表 | +| 9 | `工时校验_批量保存校验记录` | 更新/保存业务数据 | 表:生产管理_工时校验_校验工时表、YL_加工中心_操作记录表 | +| 10 | `工时校验_获取操作人当天报工记录` | 报工或工时处理 | 表:YL_加工中心_操作记录表 | + +#### 45. `src/views/ProductionManagement/WorkHoursCheck/index.vue` + +页面要点:该页面用于工时校验。质检/管理人员查询待校验报工记录,系统计算标准/实际工时,保存单条或批量校验结果;通过校验后可把工序资源或工时/出库类单据上传到 SAP。 页面可见的操作/字段包括 “查询”、“一键校验”、“直接校验”、“新增工时记录”、“设备工时”、“关闭”、“确 定”、“取消”、“item.label”、“全部”,这些是判断页面业 +过程覆盖:`usp_BatchValidateWorkTime`、`usp_ValidateWorkTime`、`人员管理_人员信息查询_质检部门_查询`、`系统管理_人员管理_所有有效人员查询`、`工时校验_获取订单列表`、`工时校验_获取订单工序`、`工时校验_获取昨日之前操作记录列表`、`工时校验_获取资源`、`工时校验_获取设备数据`、`工时校验_保存校验记录`、... + +```text +[进入页面 / src/views/ProductionManagement/WorkHoursCheck/index.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [组装查询条件 / 分页/时间/订单/工位] +[组装查询条件 / 分页/时间/订单/工位] --> [type 11(当前通用存储过程查询/执行) / 人员管理_人员信息查询_质检部门_查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 人员管理_人员信息查询_质检部门_查询 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 系统管理_人员管理_所有有效人员查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 系统管理_人员管理_所有有效人员查询 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 工时校验_获取订单工序 / 报工或工时处理] +[type 11(当前通用存储过程查询/执行) / 工时校验_获取订单工序 / 报工或工时处理] --> [type 11(当前通用存储过程查询/执行) / 工时校验_获取昨日之前操作记录列表 / 报工或工时处理] +[type 11(当前通用存储过程查询/执行) / 工时校验_获取昨日之前操作记录列表 / 报工或工时处理] --> [type 11(当前通用存储过程查询/执行) / 工时校验_获取资源 / 报工或工时处理] +[type 11(当前通用存储过程查询/执行) / 工时校验_获取资源 / 报工或工时处理] --> [ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] +[ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [校验必填项/选中行/数量和状态] +[校验必填项/选中行/数量和状态] --> [type 11(当前通用存储过程查询/执行) / usp_BatchValidateWorkTime / 报工或工时处理] +[type 11(当前通用存储过程查询/执行) / usp_BatchValidateWorkTime / 报工或工时处理] --> [type 11(当前通用存储过程查询/执行) / usp_ValidateWorkTime / 报工或工时处理] +[type 11(当前通用存储过程查询/执行) / usp_ValidateWorkTime / 报工或工时处理] --> [type 11(当前通用存储过程查询/执行) / 工时校验_获取订单列表 / 报工或工时处理] +[type 11(当前通用存储过程查询/执行) / 工时校验_获取订单列表 / 报工或工时处理] --> [type 11(当前通用存储过程查询/执行) / 工时校验_保存校验记录 / 更新/保存业务数据] +[type 11(当前通用存储过程查询/执行) / 工时校验_保存校验记录 / 更新/保存业务数据] --> [type 11(当前通用存储过程查询/执行) / 工时校验_批量保存校验记录 / 更新/保存业务数据] +[type 11(当前通用存储过程查询/执行) / 工时校验_批量保存校验记录 / 更新/保存业务数据] --> [后端写入/更新完成 / 返回成功/失败消息] +[后端写入/更新完成 / 返回成功/失败消息] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [主要数据对象 / 登录基础数据_管理人员权限视图 / MES_接口_生产计划 / View_生产订单_MES / View_生产工时视图 / SAP.SBO_YL.dbo.UBT_ORSC] +[主要数据对象 / 登录基础数据_管理人员权限视图 / MES_接口_生产计划 / View_生产订单_MES / View_生产工时视图 / SAP.SBO_YL.dbo.UBT_ORSC] --> [用户继续查询/维护或转入下一业务页] +``` + +| 环节 | 页面调用/过程 | 用途 | 依赖线索 | +|---|---|---|---| +| 1 | `usp_BatchValidateWorkTime` | 报工或工时处理 | 未在 SQL 中解析到明确依赖 | +| 2 | `usp_ValidateWorkTime` | 报工或工时处理 | 未在 SQL 中解析到明确依赖 | +| 3 | `人员管理_人员信息查询_质检部门_查询` | 查询/读取数据 | 视图:登录基础数据_管理人员权限视图 | +| 4 | `系统管理_人员管理_所有有效人员查询` | 查询/读取数据 | 视图:登录基础数据_管理人员权限视图 | +| 5 | `工时校验_获取订单列表` | 报工或工时处理 | 表:MES_接口_生产计划 | +| 6 | `工时校验_获取订单工序` | 报工或工时处理 | 视图:View_生产订单_MES | +| 7 | `工时校验_获取昨日之前操作记录列表` | 报工或工时处理 | 视图:View_生产工时视图 | +| 8 | `工时校验_获取资源` | 报工或工时处理 | SAP/链接库:SAP.SBO_YL.dbo.UBT_ORSC | +| 9 | `工时校验_获取设备数据` | 报工或工时处理 | 表:历史_工位设备状态每分钟记录 | +| 10 | `工时校验_保存校验记录` | 更新/保存业务数据 | 表:生产管理_工时校验_校验工时表、YL_加工中心_操作记录表 | +| 11 | `工时校验_批量保存校验记录` | 更新/保存业务数据 | 表:生产管理_工时校验_校验工时表、YL_加工中心_操作记录表 | + +#### 46. `src/views/ProductionManagement/WorkhoursEdit/index.vue` + +页面要点:该页面用于编辑已产生的工时/报工记录,修正异常工时或补录说明。 页面可见的操作/字段包括 “查询”、“新增工时记录”、“设备工时”、“关闭”、“确 定”、“取消”、“item.label”、“全部”、“已校验”、“未校验”,这些是判断页面业务范围的主要线索。 后端主要围绕 人员管理_人员信息查询_质检部门_查询、系统管理_人员管理_所有有 +过程覆盖:`人员管理_人员信息查询_质检部门_查询`、`系统管理_人员管理_所有有效人员查询`、`工时校验_获取订单列表`、`工时校验_获取订单工序`、`工时校验_获取操作记录列表`、`工时校验_获取设备数据`、`工时校验_保存校验记录`、`工时校验_新增操作记录` + +```text +[进入页面 / src/views/ProductionManagement/WorkhoursEdit/index.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [组装查询条件 / 分页/时间/订单/工位] +[组装查询条件 / 分页/时间/订单/工位] --> [type 11(当前通用存储过程查询/执行) / 人员管理_人员信息查询_质检部门_查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 人员管理_人员信息查询_质检部门_查询 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 系统管理_人员管理_所有有效人员查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 系统管理_人员管理_所有有效人员查询 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 工时校验_获取订单工序 / 报工或工时处理] +[type 11(当前通用存储过程查询/执行) / 工时校验_获取订单工序 / 报工或工时处理] --> [type 11(当前通用存储过程查询/执行) / 工时校验_获取操作记录列表 / 报工或工时处理] +[type 11(当前通用存储过程查询/执行) / 工时校验_获取操作记录列表 / 报工或工时处理] --> [type 11(当前通用存储过程查询/执行) / 工时校验_获取设备数据 / 报工或工时处理] +[type 11(当前通用存储过程查询/执行) / 工时校验_获取设备数据 / 报工或工时处理] --> [ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] +[ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [校验必填项/选中行/数量和状态] +[校验必填项/选中行/数量和状态] --> [type 11(当前通用存储过程查询/执行) / 工时校验_获取订单列表 / 报工或工时处理] +[type 11(当前通用存储过程查询/执行) / 工时校验_获取订单列表 / 报工或工时处理] --> [type 11(当前通用存储过程查询/执行) / 工时校验_保存校验记录 / 更新/保存业务数据] +[type 11(当前通用存储过程查询/执行) / 工时校验_保存校验记录 / 更新/保存业务数据] --> [type 11(当前通用存储过程查询/执行) / 工时校验_新增操作记录 / 新增业务数据] +[type 11(当前通用存储过程查询/执行) / 工时校验_新增操作记录 / 新增业务数据] --> [后端写入/更新完成 / 返回成功/失败消息] +[后端写入/更新完成 / 返回成功/失败消息] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [主要数据对象 / 登录基础数据_管理人员权限视图 / MES_接口_生产计划 / View_生产订单_MES / View_生产工时视图 / 历史_工位设备状态每分钟记录] +[主要数据对象 / 登录基础数据_管理人员权限视图 / MES_接口_生产计划 / View_生产订单_MES / View_生产工时视图 / 历史_工位设备状态每分钟记录] --> [用户继续查询/维护或转入下一业务页] +``` + +| 环节 | 页面调用/过程 | 用途 | 依赖线索 | +|---|---|---|---| +| 1 | `人员管理_人员信息查询_质检部门_查询` | 查询/读取数据 | 视图:登录基础数据_管理人员权限视图 | +| 2 | `系统管理_人员管理_所有有效人员查询` | 查询/读取数据 | 视图:登录基础数据_管理人员权限视图 | +| 3 | `工时校验_获取订单列表` | 报工或工时处理 | 表:MES_接口_生产计划 | +| 4 | `工时校验_获取订单工序` | 报工或工时处理 | 视图:View_生产订单_MES | +| 5 | `工时校验_获取操作记录列表` | 报工或工时处理 | 视图:View_生产工时视图 | +| 6 | `工时校验_获取设备数据` | 报工或工时处理 | 表:历史_工位设备状态每分钟记录 | +| 7 | `工时校验_保存校验记录` | 更新/保存业务数据 | 表:生产管理_工时校验_校验工时表、YL_加工中心_操作记录表 | +| 8 | `工时校验_新增操作记录` | 新增业务数据 | 表:YL_加工中心_操作记录表 | + +#### 47. `src/views/ProductionManagement/Workhours/index.vue` + +页面要点:该页面用于工时查询,按工序、人员、设备、时间等条件查看工序工时。 页面可见的操作/字段包括 “查询”、“工序工时”、“任务描述”、“报工次数”、“报工数量”、“工位名称”、“实际工时”、“辅助工时”、“平均程序工时”、“平均实际工时”,这些是判断页面业务范围的主要线索。 后端主要围绕 生产管理_工时查询_工序工时_查询 取数或提交业务动作 +过程覆盖:`生产管理_工时查询_工序工时_查询` + +```text +[进入页面 / src/views/ProductionManagement/Workhours/index.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [组装查询条件 / 分页/时间/订单/工位] +[组装查询条件 / 分页/时间/订单/工位] --> [type 11(当前通用存储过程查询/执行) / 生产管理_工时查询_工序工时_查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 生产管理_工时查询_工序工时_查询 / 查询/读取数据] --> [ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] +[ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [本页主要为查询/展示或容器组件 / 无明确写入动作] +[本页主要为查询/展示或容器组件 / 无明确写入动作] --> [保持当前数据或跳转其他页面] +[保持当前数据或跳转其他页面] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [页面状态/路由/展示数据] +[页面状态/路由/展示数据] --> [用户继续查询/维护或转入下一业务页] +``` + +| 环节 | 页面调用/过程 | 用途 | 依赖线索 | +|---|---|---|---| +| 1 | `生产管理_工时查询_工序工时_查询` | 查询/读取数据 | 未在 SQL 中解析到明确依赖 | + +### 17.9 质量管理(QualityManagement) + +#### 48. `src/views/QualityManagement/CheckTask/OtherInbound.vue` + +页面要点:该页面处理其他入库检验。用户查询其他入库待检任务,录入检验结果并更新质检记录。 页面可见的操作/字段包括 “查询”、“取 消”、“合格”、“不合格”、“item.label”、“序号”、“生产订单”、“物料名称”、“物料编码”、“采购数”,这些是判断页面业务范围的主要线索。 后端主要围绕 查询字典、人员管理_人员信息查询_质检部门_查询、 +过程覆盖:`查询字典`、`人员管理_人员信息查询_质检部门_查询`、`质量管理_其他入库_查询`、`质量管理_其他入库检验_更新` + +```text +[进入页面 / src/views/QualityManagement/CheckTask/OtherInbound.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [组装查询条件 / 分页/时间/订单/工位] +[组装查询条件 / 分页/时间/订单/工位] --> [type 11(当前通用存储过程查询/执行) / 查询字典 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 查询字典 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 人员管理_人员信息查询_质检部门_查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 人员管理_人员信息查询_质检部门_查询 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 质量管理_其他入库_查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 质量管理_其他入库_查询 / 查询/读取数据] --> [ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] +[ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [校验必填项/选中行/数量和状态] +[校验必填项/选中行/数量和状态] --> [type 12(当前通用存储过程写入/业务动作) / 质量管理_其他入库检验_更新 / 更新/保存业务数据] +[type 12(当前通用存储过程写入/业务动作) / 质量管理_其他入库检验_更新 / 更新/保存业务数据] --> [后端写入/更新完成 / 返回成功/失败消息] +[后端写入/更新完成 / 返回成功/失败消息] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [主要数据对象 / YL_基础表_数据字典 / 登录基础数据_管理人员权限视图 / 质量检验_质检任务_SAP / YL_质量检验_质检记录] +[主要数据对象 / YL_基础表_数据字典 / 登录基础数据_管理人员权限视图 / 质量检验_质检任务_SAP / YL_质量检验_质检记录] --> [用户继续查询/维护或转入下一业务页] +``` + +| 环节 | 页面调用/过程 | 用途 | 依赖线索 | +|---|---|---|---| +| 1 | `查询字典` | 查询/读取数据 | 表:YL_基础表_数据字典 | +| 2 | `人员管理_人员信息查询_质检部门_查询` | 查询/读取数据 | 视图:登录基础数据_管理人员权限视图 | +| 3 | `质量管理_其他入库_查询` | 查询/读取数据 | 表:质量检验_质检任务_SAP | +| 4 | `质量管理_其他入库检验_更新` | 更新/保存业务数据 | 表:YL_质量检验_质检记录、质量检验_质检任务_SAP | + +#### 49. `src/views/QualityManagement/CheckTask/final.vue` + +页面要点:该页面处理终检任务。质检人员查询终检任务,录入终检结果,并预留 SAP 生产订单状态回写。 页面可见的操作/字段包括 “查询”、“导出 --> -->”、“取 消”、“关闭”、“装配”、“机加”、“全部”、“合格”、“不合格”、“已完成”,这些是判断页面业务范围的主要线索。 后端主要围绕 加急订单_加急明细查询、查询字典、人员管理_人员信 +过程覆盖:`加急订单_加急明细查询`、`查询字典`、`人员管理_人员信息查询_质检部门_查询`、`质量管理_质量检验_终检数据_查询`、`质量管理_质量检验_终检记录_查询`、`MES_QulityInspection_FinalCheck`、`工时校验_获取工序和指派对象` + +```text +[进入页面 / src/views/QualityManagement/CheckTask/final.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [组装查询条件 / 分页/时间/订单/工位] +[组装查询条件 / 分页/时间/订单/工位] --> [type 11(当前通用存储过程查询/执行) / 查询字典 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 查询字典 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 人员管理_人员信息查询_质检部门_查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 人员管理_人员信息查询_质检部门_查询 / 查询/读取数据] --> [ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] +[ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [校验必填项/选中行/数量和状态] +[校验必填项/选中行/数量和状态] --> [type 11(当前通用存储过程查询/执行) / 加急订单_加急明细查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 加急订单_加急明细查询 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 质量管理_质量检验_终检数据_查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 质量管理_质量检验_终检数据_查询 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 质量管理_质量检验_终检记录_查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 质量管理_质量检验_终检记录_查询 / 查询/读取数据] --> [type 12(当前通用存储过程写入/业务动作) / MES_QulityInspection_FinalCheck / 质量检验处理] +[type 12(当前通用存储过程写入/业务动作) / MES_QulityInspection_FinalCheck / 质量检验处理] --> [type 11(当前通用存储过程查询/执行) / 工时校验_获取工序和指派对象 / 报工或工时处理] +[type 11(当前通用存储过程查询/执行) / 工时校验_获取工序和指派对象 / 报工或工时处理] --> [后端写入/更新完成 / 返回成功/失败消息] +[后端写入/更新完成 / 返回成功/失败消息] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [主要数据对象 / MES_接口_生产计划 / SAP/链接库:SAP.SBO_YL.dbo.ubt_OPKL_UrgentMaterials_ALL / YL_基础表_数据字典 / 登录基础数据_管理人员权限视图 / MES_接口_生产计划_生产] +[主要数据对象 / MES_接口_生产计划 / SAP/链接库:SAP.SBO_YL.dbo.ubt_OPKL_UrgentMaterials_ALL / YL_基础表_数据字典 / 登录基础数据_管理人员权限视图 / MES_接口_生产计划_生产] --> [用户继续查询/维护或转入下一业务页] +``` + +| 环节 | 页面调用/过程 | 用途 | 依赖线索 | +|---|---|---|---| +| 1 | `加急订单_加急明细查询` | 查询/读取数据 | 表:MES_接口_生产计划;SAP/链接库:SAP.SBO_YL.dbo.ubt_OPKL_UrgentMaterials_ALL | +| 2 | `查询字典` | 查询/读取数据 | 表:YL_基础表_数据字典 | +| 3 | `人员管理_人员信息查询_质检部门_查询` | 查询/读取数据 | 视图:登录基础数据_管理人员权限视图 | +| 4 | `质量管理_质量检验_终检数据_查询` | 查询/读取数据 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务、YL_加工中心_操作记录表、YL_质量检验_质检记录;视图:View_生产订单_MES | +| 5 | `质量管理_质量检验_终检记录_查询` | 查询/读取数据 | 表:YL_质量检验_质检记录 | +| 6 | `MES_QulityInspection_FinalCheck` | 质量检验处理 | 表:YL_质量检验_质检记录 | +| 7 | `工时校验_获取工序和指派对象` | 报工或工时处理 | 表:MES_接口_生产计划 | + +#### 50. `src/views/QualityManagement/CheckTask/firstSpecial.vue` + +页面要点:该页面处理首检/特殊首件检验。用户按工序和工位选择任务,录入首检数据。 页面可见的操作/字段包括 “item.label”、“序号”、“工位编号”、“工序名称”、“操作类别”、“操作人”、“销售订单”、“生产订单”、“物料编号”、“物料名称”,这些是判断页面业务范围的主要线索。 后端主要围绕 Prog_MES_LoadProcess、Pr +过程覆盖:`Prog_MES_LoadProcess`、`Prog_MES_LoadStations`、`MES_QulityInspection_FirstCheckRecords` + +```text +[进入页面 / src/views/QualityManagement/CheckTask/firstSpecial.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [组装查询条件 / 分页/时间/订单/工位] +[组装查询条件 / 分页/时间/订单/工位] --> [type 11(当前通用存储过程查询/执行) / Prog_MES_LoadProcess / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / Prog_MES_LoadProcess / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / Prog_MES_LoadStations / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / Prog_MES_LoadStations / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / MES_QulityInspection_FirstCheckRecords / 质量检验处理] +[type 11(当前通用存储过程查询/执行) / MES_QulityInspection_FirstCheckRecords / 质量检验处理] --> [ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] +[ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [本页主要为查询/展示或容器组件 / 无明确写入动作] +[本页主要为查询/展示或容器组件 / 无明确写入动作] --> [保持当前数据或跳转其他页面] +[保持当前数据或跳转其他页面] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [主要数据对象 / 基础表_工序 / MES_资源主数据 / YL_加工中心_操作记录表] +[主要数据对象 / 基础表_工序 / MES_资源主数据 / YL_加工中心_操作记录表] --> [用户继续查询/维护或转入下一业务页] +``` + +| 环节 | 页面调用/过程 | 用途 | 依赖线索 | +|---|---|---|---| +| 1 | `Prog_MES_LoadProcess` | 查询/读取数据 | 表:基础表_工序 | +| 2 | `Prog_MES_LoadStations` | 查询/读取数据 | 表:MES_资源主数据 | +| 3 | `MES_QulityInspection_FirstCheckRecords` | 质量检验处理 | 表:YL_加工中心_操作记录表 | + +#### 51. `src/views/QualityManagement/CheckTask/materialReturn.vue` + +页面要点:该页面处理原材料退库检验。用户查询退库检验任务,读取 SAP 生产订单辅助信息,录入并更新检验结果。 页面可见的操作/字段包括 “查询”、“扫码”、“取 消”、“合格”、“不合格”、“已完成”、“未完成”、“item.label”、“序号”、“单据码”,这些是判断页面业务范围的主要线索。 后端主要围绕 查询字典、人员管理_人员信息查询_质 +过程覆盖:`查询字典`、`人员管理_人员信息查询_质检部门_查询`、`质量管理_原材料退库_查询`、`质量管理_原材料退库检验_更新` +WMS/条码任务:页面涉及 `stocktask` 出库/入库任务接口。 + +```text +[进入页面 / src/views/QualityManagement/CheckTask/materialReturn.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [组装查询条件 / 分页/时间/订单/工位] +[组装查询条件 / 分页/时间/订单/工位] --> [type 11(当前通用存储过程查询/执行) / 查询字典 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 查询字典 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 人员管理_人员信息查询_质检部门_查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 人员管理_人员信息查询_质检部门_查询 / 查询/读取数据] --> [ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] +[ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [校验必填项/选中行/数量和状态] +[校验必填项/选中行/数量和状态] --> [type 11(当前通用存储过程查询/执行) / 质量管理_原材料退库_查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 质量管理_原材料退库_查询 / 查询/读取数据] --> [type 12(当前通用存储过程写入/业务动作) / 质量管理_原材料退库检验_更新 / 更新/保存业务数据] +[type 12(当前通用存储过程写入/业务动作) / 质量管理_原材料退库检验_更新 / 更新/保存业务数据] --> [后端写入/更新完成 / 返回成功/失败消息] +[后端写入/更新完成 / 返回成功/失败消息] --> [是否需要外部系统同步?] +[是否需要外部系统同步?] -- WMS/条码 --> [stocktask 入库/出库任务 / 物料/条码/数量同步] +[是否需要外部系统同步?] -- 否 --> [MES 本地状态生效] +[stocktask 入库/出库任务 / 物料/条码/数量同步] --> [外部返回成功?] +[MES 本地状态生效] --> [刷新列表/明细/看板数据] +[外部返回成功?] -- 是 --> [刷新列表/明细/看板数据] +[外部返回成功?] -- 否 --> [记录失败原因 / 保留待重试/待处理状态] +[记录失败原因 / 保留待重试/待处理状态] --> [刷新列表/明细/看板数据] +[用户是否发起业务动作?] -- 否 --> [刷新列表/明细/看板数据] +[刷新列表/明细/看板数据] --> [主要数据对象 / YL_基础表_数据字典 / 登录基础数据_管理人员权限视图 / 质量检验_质检任务_SAP / YL_质量检验_质检记录] +[主要数据对象 / YL_基础表_数据字典 / 登录基础数据_管理人员权限视图 / 质量检验_质检任务_SAP / YL_质量检验_质检记录] --> [用户继续查询/维护或转入下一业务页] +``` + +| 环节 | 页面调用/过程 | 用途 | 依赖线索 | +|---|---|---|---| +| 1 | `查询字典` | 查询/读取数据 | 表:YL_基础表_数据字典 | +| 2 | `人员管理_人员信息查询_质检部门_查询` | 查询/读取数据 | 视图:登录基础数据_管理人员权限视图 | +| 3 | `质量管理_原材料退库_查询` | 查询/读取数据 | 表:质量检验_质检任务_SAP | +| 4 | `质量管理_原材料退库检验_更新` | 更新/保存业务数据 | 表:YL_质量检验_质检记录、质量检验_质检任务_SAP | + +#### 52. `src/views/QualityManagement/CheckTask/processReceive.vue` + +页面要点:该页面处理序检收检。质检人员接收工序检验任务,查询加急和字典信息,读取 SAP 工序状态,新增序检收检记录。 页面可见的操作/字段包括 “查询”、“导出 -->”、“取 消”、“关闭”、“装配”、“机加”、“全部”、“合格”、“不合格”、“item.label”,这些是判断页面业务范围的主要线索。 后端主要围绕 工艺管理_图纸维护_查看图 +过程覆盖:`工艺管理_图纸维护_查看图纸`、`加急订单_加急明细查询`、`查询字典`、`人员管理_人员信息查询_质检部门_查询`、`质量管理_质量检验_收检记录_查询`、`质量管理_序检收检_新增` + +```text +[进入页面 / src/views/QualityManagement/CheckTask/processReceive.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [组装查询条件 / 分页/时间/订单/工位] +[组装查询条件 / 分页/时间/订单/工位] --> [type 11(当前通用存储过程查询/执行) / 工艺管理_图纸维护_查看图纸 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 工艺管理_图纸维护_查看图纸 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 查询字典 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 查询字典 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 人员管理_人员信息查询_质检部门_查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 人员管理_人员信息查询_质检部门_查询 / 查询/读取数据] --> [ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] +[ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [校验必填项/选中行/数量和状态] +[校验必填项/选中行/数量和状态] --> [type 11(当前通用存储过程查询/执行) / 加急订单_加急明细查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 加急订单_加急明细查询 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 质量管理_质量检验_收检记录_查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 质量管理_质量检验_收检记录_查询 / 查询/读取数据] --> [type 12(当前通用存储过程写入/业务动作) / 质量管理_序检收检_新增 / 新增业务数据] +[type 12(当前通用存储过程写入/业务动作) / 质量管理_序检收检_新增 / 新增业务数据] --> [后端写入/更新完成 / 返回成功/失败消息] +[后端写入/更新完成 / 返回成功/失败消息] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [主要数据对象 / 物料基础数据_零件图纸 / MES_接口_生产计划 / SAP/链接库:SAP.SBO_YL.dbo.ubt_OPKL_UrgentMaterials_ALL / YL_基础表_数据字典 / 登录基础数据_管理人员权限视图] +[主要数据对象 / 物料基础数据_零件图纸 / MES_接口_生产计划 / SAP/链接库:SAP.SBO_YL.dbo.ubt_OPKL_UrgentMaterials_ALL / YL_基础表_数据字典 / 登录基础数据_管理人员权限视图] --> [用户继续查询/维护或转入下一业务页] +``` + +| 环节 | 页面调用/过程 | 用途 | 依赖线索 | +|---|---|---|---| +| 1 | `工艺管理_图纸维护_查看图纸` | 查询/读取数据 | 表:物料基础数据_零件图纸 | +| 2 | `加急订单_加急明细查询` | 查询/读取数据 | 表:MES_接口_生产计划;SAP/链接库:SAP.SBO_YL.dbo.ubt_OPKL_UrgentMaterials_ALL | +| 3 | `查询字典` | 查询/读取数据 | 表:YL_基础表_数据字典 | +| 4 | `人员管理_人员信息查询_质检部门_查询` | 查询/读取数据 | 视图:登录基础数据_管理人员权限视图 | +| 5 | `质量管理_质量检验_收检记录_查询` | 查询/读取数据 | 表:YL_加工中心_操作记录表、YL_质量检验_质检记录;视图:View_生产订单_MES | +| 6 | `质量管理_序检收检_新增` | 新增业务数据 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务、YL_质量检验_质检记录 | + +#### 53. `src/views/QualityManagement/CheckTask/processSpecial.vue` + +页面要点:该页面处理过程/特殊检验。用户按工序任务录入特殊检验结果和检测明细。 + +```text +[进入页面 / src/views/QualityManagement/CheckTask/processSpecial.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [页面绘制/路由容器展示 / 未识别到页面级存储过程] +[页面绘制/路由容器展示 / 未识别到页面级存储过程] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [本页主要为查询/展示或容器组件 / 无明确写入动作] +[本页主要为查询/展示或容器组件 / 无明确写入动作] --> [保持当前数据或跳转其他页面] +[保持当前数据或跳转其他页面] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [页面状态/路由/展示数据] +[页面状态/路由/展示数据] --> [用户继续查询/维护或转入下一业务页] +``` + +#### 54. `src/views/QualityManagement/CheckTask/purchaseIncoming.vue` + +页面要点:该页面处理采购/来料检验。质检人员查询待检任务,查看图纸、字典和检验人员,录入合格数、不合格数、检测数据,调用过程更新来料检验结果。 页面可见的操作/字段包括 “查询”、“取 消”、“关闭”、“合格”、“不合格”、“已完成”、“未完成”、“item.label”、“序号”、“单据码”,这些是判断页面业务范围的主要线索。 后端主要围绕 加急 +过程覆盖:`加急订单_加急明细查询`、`工艺管理_图纸维护_查看图纸`、`查询字典`、`人员管理_人员信息查询_质检部门_查询`、`质量管理_质量检验_入库质检任务_查询`、`质量管理_来料检验_更新` + +```text +[进入页面 / src/views/QualityManagement/CheckTask/purchaseIncoming.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [组装查询条件 / 分页/时间/订单/工位] +[组装查询条件 / 分页/时间/订单/工位] --> [type 11(当前通用存储过程查询/执行) / 工艺管理_图纸维护_查看图纸 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 工艺管理_图纸维护_查看图纸 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 查询字典 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 查询字典 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 人员管理_人员信息查询_质检部门_查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 人员管理_人员信息查询_质检部门_查询 / 查询/读取数据] --> [ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] +[ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [校验必填项/选中行/数量和状态] +[校验必填项/选中行/数量和状态] --> [type 11(当前通用存储过程查询/执行) / 加急订单_加急明细查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 加急订单_加急明细查询 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 质量管理_质量检验_入库质检任务_查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 质量管理_质量检验_入库质检任务_查询 / 查询/读取数据] --> [type 12(当前通用存储过程写入/业务动作) / 质量管理_来料检验_更新 / 更新/保存业务数据] +[type 12(当前通用存储过程写入/业务动作) / 质量管理_来料检验_更新 / 更新/保存业务数据] --> [后端写入/更新完成 / 返回成功/失败消息] +[后端写入/更新完成 / 返回成功/失败消息] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [主要数据对象 / MES_接口_生产计划 / SAP/链接库:SAP.SBO_YL.dbo.ubt_OPKL_UrgentMaterials_ALL / 物料基础数据_零件图纸 / YL_基础表_数据字典 / 登录基础数据_管理人员权限视图] +[主要数据对象 / MES_接口_生产计划 / SAP/链接库:SAP.SBO_YL.dbo.ubt_OPKL_UrgentMaterials_ALL / 物料基础数据_零件图纸 / YL_基础表_数据字典 / 登录基础数据_管理人员权限视图] --> [用户继续查询/维护或转入下一业务页] +``` + +| 环节 | 页面调用/过程 | 用途 | 依赖线索 | +|---|---|---|---| +| 1 | `加急订单_加急明细查询` | 查询/读取数据 | 表:MES_接口_生产计划;SAP/链接库:SAP.SBO_YL.dbo.ubt_OPKL_UrgentMaterials_ALL | +| 2 | `工艺管理_图纸维护_查看图纸` | 查询/读取数据 | 表:物料基础数据_零件图纸 | +| 3 | `查询字典` | 查询/读取数据 | 表:YL_基础表_数据字典 | +| 4 | `人员管理_人员信息查询_质检部门_查询` | 查询/读取数据 | 视图:登录基础数据_管理人员权限视图 | +| 5 | `质量管理_质量检验_入库质检任务_查询` | 查询/读取数据 | 表:YL_质量检验_质检记录、质量检验_质检任务_SAP | +| 6 | `质量管理_来料检验_更新` | 更新/保存业务数据 | 表:YL_质量检验_质检记录、质量检验_质检任务_SAP | + +#### 55. `src/views/QualityManagement/CheckTask/salesReturn.vue` + +页面要点:该页面处理销售退货检验。用户查询销售退货待检任务,录入检验结果并更新质检记录。 页面可见的操作/字段包括 “查询”、“取 消”、“合格”、“不合格”、“item.label”、“序号”、“生产订单”、“物料名称”、“物料编码”、“采购数”,这些是判断页面业务范围的主要线索。 后端主要围绕 查询字典、人员管理_人员信息查询_质检部门_查询、 +过程覆盖:`查询字典`、`人员管理_人员信息查询_质检部门_查询`、`质量管理_质量检验_退货质检任务_查询`、`质量管理_销售退货检_更新` +WMS/条码任务:页面涉及 `stocktask` 出库/入库任务接口。 + +```text +[进入页面 / src/views/QualityManagement/CheckTask/salesReturn.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [组装查询条件 / 分页/时间/订单/工位] +[组装查询条件 / 分页/时间/订单/工位] --> [type 11(当前通用存储过程查询/执行) / 查询字典 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 查询字典 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 人员管理_人员信息查询_质检部门_查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 人员管理_人员信息查询_质检部门_查询 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 质量管理_质量检验_退货质检任务_查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 质量管理_质量检验_退货质检任务_查询 / 查询/读取数据] --> [ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] +[ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [校验必填项/选中行/数量和状态] +[校验必填项/选中行/数量和状态] --> [type 12(当前通用存储过程写入/业务动作) / 质量管理_销售退货检_更新 / 更新/保存业务数据] +[type 12(当前通用存储过程写入/业务动作) / 质量管理_销售退货检_更新 / 更新/保存业务数据] --> [后端写入/更新完成 / 返回成功/失败消息] +[后端写入/更新完成 / 返回成功/失败消息] --> [是否需要外部系统同步?] +[是否需要外部系统同步?] -- WMS/条码 --> [stocktask 入库/出库任务 / 物料/条码/数量同步] +[是否需要外部系统同步?] -- 否 --> [MES 本地状态生效] +[stocktask 入库/出库任务 / 物料/条码/数量同步] --> [外部返回成功?] +[MES 本地状态生效] --> [刷新列表/明细/看板数据] +[外部返回成功?] -- 是 --> [刷新列表/明细/看板数据] +[外部返回成功?] -- 否 --> [记录失败原因 / 保留待重试/待处理状态] +[记录失败原因 / 保留待重试/待处理状态] --> [刷新列表/明细/看板数据] +[用户是否发起业务动作?] -- 否 --> [刷新列表/明细/看板数据] +[刷新列表/明细/看板数据] --> [主要数据对象 / YL_基础表_数据字典 / 登录基础数据_管理人员权限视图 / 质量检验_质检任务_SAP / YL_质量检验_质检记录] +[主要数据对象 / YL_基础表_数据字典 / 登录基础数据_管理人员权限视图 / 质量检验_质检任务_SAP / YL_质量检验_质检记录] --> [用户继续查询/维护或转入下一业务页] +``` + +| 环节 | 页面调用/过程 | 用途 | 依赖线索 | +|---|---|---|---| +| 1 | `查询字典` | 查询/读取数据 | 表:YL_基础表_数据字典 | +| 2 | `人员管理_人员信息查询_质检部门_查询` | 查询/读取数据 | 视图:登录基础数据_管理人员权限视图 | +| 3 | `质量管理_质量检验_退货质检任务_查询` | 查询/读取数据 | 表:质量检验_质检任务_SAP | +| 4 | `质量管理_销售退货检_更新` | 更新/保存业务数据 | 表:YL_质量检验_质检记录、质量检验_质检任务_SAP | + +#### 56. `src/views/QualityManagement/QualityCenter/index.vue` + +页面要点:该页面是质量综合处理中心。用户集中查询质检任务、收检记录、终检/入库任务和质检明细,录入检测数据、不合格处理,并读取 SAP 生产订单信息辅助校验。 页面可见的操作/字段包括 “查询 --> --> 缺料”、“上一个 下一个”、“删除当前记录 关闭”、“上一个 下一个 保存当前记录 删除当前记录 关闭”、“确定 关闭”、“取 消”、“确 +过程覆盖:`生产管理_获取人员绑定`、`加急订单_加急明细查询`、`MES_人员工时记录_获取进行中任务2`、`MES_人员工时记录_获取进行中任务`、`工时校验_获取订单列表`、`异常工时_新增操作记录`、`工时校验_获取订单工序`、`MES_登录_工位与名称_查询`、`Prog_MES_LoadProcess`、`质量管理_质检报工_任务查询`、... +WMS/条码任务:页面涉及 `stocktask` 出库/入库任务接口。 + +```text +[进入页面 / src/views/QualityManagement/QualityCenter/index.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [组装查询条件 / 分页/时间/订单/工位] +[组装查询条件 / 分页/时间/订单/工位] --> [type 11(当前通用存储过程查询/执行) / 生产管理_获取人员绑定 / 基础权限/人员数据处理] +[type 11(当前通用存储过程查询/执行) / 生产管理_获取人员绑定 / 基础权限/人员数据处理] --> [type 11(当前通用存储过程查询/执行) / 工时校验_获取订单工序 / 报工或工时处理] +[type 11(当前通用存储过程查询/执行) / 工时校验_获取订单工序 / 报工或工时处理] --> [type 11(当前通用存储过程查询/执行) / MES_登录_工位与名称_查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / MES_登录_工位与名称_查询 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / Prog_MES_LoadProcess / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / Prog_MES_LoadProcess / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 生产管理_装配中心_缺料查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 生产管理_装配中心_缺料查询 / 查询/读取数据] --> [ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] +[ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [校验必填项/选中行/数量和状态] +[校验必填项/选中行/数量和状态] --> [type 11(当前通用存储过程查询/执行) / 加急订单_加急明细查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 加急订单_加急明细查询 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / MES_人员工时记录_获取进行中任务2 / 报工或工时处理] +[type 11(当前通用存储过程查询/执行) / MES_人员工时记录_获取进行中任务2 / 报工或工时处理] --> [type 11(当前通用存储过程查询/执行) / MES_人员工时记录_获取进行中任务 / 报工或工时处理] +[type 11(当前通用存储过程查询/执行) / MES_人员工时记录_获取进行中任务 / 报工或工时处理] --> [type 11(当前通用存储过程查询/执行) / 工时校验_获取订单列表 / 报工或工时处理] +[type 11(当前通用存储过程查询/执行) / 工时校验_获取订单列表 / 报工或工时处理] --> [type 11(当前通用存储过程查询/执行) / 异常工时_新增操作记录 / 新增业务数据] +[type 11(当前通用存储过程查询/执行) / 异常工时_新增操作记录 / 新增业务数据] --> [type 11(当前通用存储过程查询/执行) / 质量管理_质检报工_任务查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 质量管理_质检报工_任务查询 / 查询/读取数据] --> [后端写入/更新完成 / 返回成功/失败消息] +[后端写入/更新完成 / 返回成功/失败消息] --> [是否需要外部系统同步?] +[是否需要外部系统同步?] -- WMS/条码 --> [stocktask 入库/出库任务 / 物料/条码/数量同步] +[是否需要外部系统同步?] -- 否 --> [MES 本地状态生效] +[stocktask 入库/出库任务 / 物料/条码/数量同步] --> [外部返回成功?] +[MES 本地状态生效] --> [刷新列表/明细/看板数据] +[外部返回成功?] -- 是 --> [刷新列表/明细/看板数据] +[外部返回成功?] -- 否 --> [记录失败原因 / 保留待重试/待处理状态] +[记录失败原因 / 保留待重试/待处理状态] --> [刷新列表/明细/看板数据] +[用户是否发起业务动作?] -- 否 --> [刷新列表/明细/看板数据] +[刷新列表/明细/看板数据] --> [主要数据对象 / MES_资源主数据 / 工位人员绑定表 / MES_接口_生产计划 / SAP/链接库:SAP.SBO_YL.dbo.ubt_OPKL_UrgentMaterials_ALL / MES_接口_生产计划_生产任务] +[主要数据对象 / MES_资源主数据 / 工位人员绑定表 / MES_接口_生产计划 / SAP/链接库:SAP.SBO_YL.dbo.ubt_OPKL_UrgentMaterials_ALL / MES_接口_生产计划_生产任务] --> [用户继续查询/维护或转入下一业务页] +``` + +| 环节 | 页面调用/过程 | 用途 | 依赖线索 | +|---|---|---|---| +| 1 | `生产管理_获取人员绑定` | 基础权限/人员数据处理 | 表:MES_资源主数据、工位人员绑定表 | +| 2 | `加急订单_加急明细查询` | 查询/读取数据 | 表:MES_接口_生产计划;SAP/链接库:SAP.SBO_YL.dbo.ubt_OPKL_UrgentMaterials_ALL | +| 3 | `MES_人员工时记录_获取进行中任务2` | 报工或工时处理 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务、YL_加工中心_操作记录表 | +| 4 | `MES_人员工时记录_获取进行中任务` | 报工或工时处理 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务、YL_加工中心_操作记录表 | +| 5 | `工时校验_获取订单列表` | 报工或工时处理 | 表:MES_接口_生产计划 | +| 6 | `异常工时_新增操作记录` | 新增业务数据 | 表:YL_加工中心_操作记录表;视图:View_生产订单_MES | +| 7 | `工时校验_获取订单工序` | 报工或工时处理 | 视图:View_生产订单_MES | +| 8 | `MES_登录_工位与名称_查询` | 查询/读取数据 | 视图:View_基础数据_工位 | +| 9 | `Prog_MES_LoadProcess` | 查询/读取数据 | 表:基础表_工序 | +| 10 | `质量管理_质检报工_任务查询` | 查询/读取数据 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务、YL_质量检验_质检记录;视图:View_生产订单_MES | +| 11 | `MES_ProductTask_WorkTimeSum` | 报工或工时处理 | 未在 SQL 中解析到明确依赖 | +| 12 | `生产管理_装配中心_缺料查询` | 查询/读取数据 | SAP/链接库:SAP.SBO_YL.dbo.UBT_OPKL_MissQty | +| ... | ... | 共 28 个过程,此处仅列前 12 个 | 详见分析文档对应页面段落 | + +#### 57. `src/views/QualityManagement/QualityDetails/index.vue` + +页面要点:该页面查询质检明细。用户按订单、物料、检验类型、时间等条件查询和导出检测明细。 页面可见的操作/字段包括 “查询”、“Excel导出”、“全部”、“收检”、“终检”、“来料检验”、“退库检验”、“序号”、“质检类型”、“零件编码”,这些是判断页面业务范围的主要线索。 后端主要围绕 质量管理_质检明细_导出、质量管理_质检明细_查询 取数或 +过程覆盖:`质量管理_质检明细_导出`、`质量管理_质检明细_查询` + +```text +[进入页面 / src/views/QualityManagement/QualityDetails/index.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [页面绘制/路由容器展示 / 未识别到页面级存储过程] +[页面绘制/路由容器展示 / 未识别到页面级存储过程] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [校验必填项/选中行/数量和状态] +[校验必填项/选中行/数量和状态] --> [type 2001(导出/报表类过程) / 质量管理_质检明细_导出 / 质量检验处理] +[type 2001(导出/报表类过程) / 质量管理_质检明细_导出 / 质量检验处理] --> [type 11(当前通用存储过程查询/执行) / 质量管理_质检明细_查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 质量管理_质检明细_查询 / 查询/读取数据] --> [后端写入/更新完成 / 返回成功/失败消息] +[后端写入/更新完成 / 返回成功/失败消息] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [主要数据对象 / View_质检明细] +[主要数据对象 / View_质检明细] --> [用户继续查询/维护或转入下一业务页] +``` + +| 环节 | 页面调用/过程 | 用途 | 依赖线索 | +|---|---|---|---| +| 1 | `质量管理_质检明细_导出` | 质量检验处理 | 视图:View_质检明细 | +| 2 | `质量管理_质检明细_查询` | 查询/读取数据 | 视图:View_质检明细 | + +#### 58. `src/views/QualityManagement/QualityStandardQuery/index copy.vue` + +页面要点:该页面维护/查询检验标准。用户按物料、工序、检测项目维护理论值、上下限、量具和启用状态。 页面可见的操作/字段包括 “查询 新增标准 修改 删除 确定 取 消”、“确定 取 消”、“item.label”、“序号”、“零件号”、“工序”、“类型”、“检验项目”、“检验内容”、“上限值”,这些是判断页面业务范围的主要线索。 后端主要围绕 P +过程覆盖:`Prog_MES_LoadProcess`、`查询字典`、`质量管理_检验标准表_新增`、`质量管理_检验标准表_查询`、`质量管理_检验标准表_修改`、`质量管理_检验标准表_删除` + +```text +[进入页面 / src/views/QualityManagement/QualityStandardQuery/index copy.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [组装查询条件 / 分页/时间/订单/工位] +[组装查询条件 / 分页/时间/订单/工位] --> [type 11(当前通用存储过程查询/执行) / Prog_MES_LoadProcess / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / Prog_MES_LoadProcess / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 查询字典 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 查询字典 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 质量管理_检验标准表_查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 质量管理_检验标准表_查询 / 查询/读取数据] --> [ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] +[ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [校验必填项/选中行/数量和状态] +[校验必填项/选中行/数量和状态] --> [type 12(当前通用存储过程写入/业务动作) / 质量管理_检验标准表_新增 / 新增业务数据] +[type 12(当前通用存储过程写入/业务动作) / 质量管理_检验标准表_新增 / 新增业务数据] --> [type 12(当前通用存储过程写入/业务动作) / 质量管理_检验标准表_修改 / 更新/保存业务数据] +[type 12(当前通用存储过程写入/业务动作) / 质量管理_检验标准表_修改 / 更新/保存业务数据] --> [type 12(当前通用存储过程写入/业务动作) / 质量管理_检验标准表_删除 / 删除业务数据] +[type 12(当前通用存储过程写入/业务动作) / 质量管理_检验标准表_删除 / 删除业务数据] --> [后端写入/更新完成 / 返回成功/失败消息] +[后端写入/更新完成 / 返回成功/失败消息] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [主要数据对象 / 基础表_工序 / YL_基础表_数据字典] +[主要数据对象 / 基础表_工序 / YL_基础表_数据字典] --> [用户继续查询/维护或转入下一业务页] +``` + +| 环节 | 页面调用/过程 | 用途 | 依赖线索 | +|---|---|---|---| +| 1 | `Prog_MES_LoadProcess` | 查询/读取数据 | 表:基础表_工序 | +| 2 | `查询字典` | 查询/读取数据 | 表:YL_基础表_数据字典 | +| 3 | `质量管理_检验标准表_新增` | 新增业务数据 | 未在 SQL 中解析到明确依赖 | +| 4 | `质量管理_检验标准表_查询` | 查询/读取数据 | 未在 SQL 中解析到明确依赖 | +| 5 | `质量管理_检验标准表_修改` | 更新/保存业务数据 | 未在 SQL 中解析到明确依赖 | +| 6 | `质量管理_检验标准表_删除` | 删除业务数据 | 未在 SQL 中解析到明确依赖 | + +#### 59. `src/views/QualityManagement/QualityStandardQuery/index.vue` + +页面要点:该页面维护/查询检验标准。用户按物料、工序、检测项目维护理论值、上下限、量具和启用状态。 页面可见的操作/字段包括 “查询 新增标准 修改 删除 确定 取 消”、“确定 取 消”、“item.label”、“序号”、“物料编号”、“工序名称”、“检测类别”、“检测项目”、“上限值”、“下限值”,这些是判断页面业务范围的主要线索。 后端主要 +过程覆盖:`MES_ProcessManagement_PartGet`、`Prog_MES_LoadProcess`、`查询字典`、`质量管理_检验标准表_新增`、`质量管理_检验标准表_查询`、`质量管理_检验标准表_修改`、`质量管理_检验标准表_删除` + +```text +[进入页面 / src/views/QualityManagement/QualityStandardQuery/index.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [组装查询条件 / 分页/时间/订单/工位] +[组装查询条件 / 分页/时间/订单/工位] --> [type 11(当前通用存储过程查询/执行) / MES_ProcessManagement_PartGet / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / MES_ProcessManagement_PartGet / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / Prog_MES_LoadProcess / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / Prog_MES_LoadProcess / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 查询字典 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 查询字典 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 质量管理_检验标准表_查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 质量管理_检验标准表_查询 / 查询/读取数据] --> [ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] +[ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [校验必填项/选中行/数量和状态] +[校验必填项/选中行/数量和状态] --> [type 12(当前通用存储过程写入/业务动作) / 质量管理_检验标准表_新增 / 新增业务数据] +[type 12(当前通用存储过程写入/业务动作) / 质量管理_检验标准表_新增 / 新增业务数据] --> [type 12(当前通用存储过程写入/业务动作) / 质量管理_检验标准表_修改 / 更新/保存业务数据] +[type 12(当前通用存储过程写入/业务动作) / 质量管理_检验标准表_修改 / 更新/保存业务数据] --> [type 12(当前通用存储过程写入/业务动作) / 质量管理_检验标准表_删除 / 删除业务数据] +[type 12(当前通用存储过程写入/业务动作) / 质量管理_检验标准表_删除 / 删除业务数据] --> [后端写入/更新完成 / 返回成功/失败消息] +[后端写入/更新完成 / 返回成功/失败消息] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [主要数据对象 / SAP.SBO_YL.dbo.UBT_OITM / 基础表_工序 / YL_基础表_数据字典] +[主要数据对象 / SAP.SBO_YL.dbo.UBT_OITM / 基础表_工序 / YL_基础表_数据字典] --> [用户继续查询/维护或转入下一业务页] +``` + +| 环节 | 页面调用/过程 | 用途 | 依赖线索 | +|---|---|---|---| +| 1 | `MES_ProcessManagement_PartGet` | 查询/读取数据 | SAP/链接库:SAP.SBO_YL.dbo.UBT_OITM | +| 2 | `Prog_MES_LoadProcess` | 查询/读取数据 | 表:基础表_工序 | +| 3 | `查询字典` | 查询/读取数据 | 表:YL_基础表_数据字典 | +| 4 | `质量管理_检验标准表_新增` | 新增业务数据 | 未在 SQL 中解析到明确依赖 | +| 5 | `质量管理_检验标准表_查询` | 查询/读取数据 | 未在 SQL 中解析到明确依赖 | +| 6 | `质量管理_检验标准表_修改` | 更新/保存业务数据 | 未在 SQL 中解析到明确依赖 | +| 7 | `质量管理_检验标准表_删除` | 删除业务数据 | 未在 SQL 中解析到明确依赖 | + +#### 60. `src/views/QualityManagement/Unqualified/index.vue` + +页面要点:该页面处理不合格品。用户查询不合格记录,查看处置流程和节点,推进让步放行、返工、报废等处理。 页面可见的操作/字段包括 “查询”、“Excel导出”、“打印”、“item.label”、“全部”、“收检”、“终检”、“来料检验”、“退库检验”、“序号”,这些是判断页面业务范围的主要线索。 后端主要围绕 人员管理_人员信息查询_质检部门_查 +过程覆盖:`人员管理_人员信息查询_质检部门_查询`、`质量管理_不合格品处置_查询` + +```text +[进入页面 / src/views/QualityManagement/Unqualified/index.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [组装查询条件 / 分页/时间/订单/工位] +[组装查询条件 / 分页/时间/订单/工位] --> [type 11(当前通用存储过程查询/执行) / 人员管理_人员信息查询_质检部门_查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 人员管理_人员信息查询_质检部门_查询 / 查询/读取数据] --> [ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] +[ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [校验必填项/选中行/数量和状态] +[校验必填项/选中行/数量和状态] --> [type 11(当前通用存储过程查询/执行) / 质量管理_不合格品处置_查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 质量管理_不合格品处置_查询 / 查询/读取数据] --> [后端写入/更新完成 / 返回成功/失败消息] +[后端写入/更新完成 / 返回成功/失败消息] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [主要数据对象 / 登录基础数据_管理人员权限视图 / View_质检明细] +[主要数据对象 / 登录基础数据_管理人员权限视图 / View_质检明细] --> [用户继续查询/维护或转入下一业务页] +``` + +| 环节 | 页面调用/过程 | 用途 | 依赖线索 | +|---|---|---|---| +| 1 | `人员管理_人员信息查询_质检部门_查询` | 查询/读取数据 | 视图:登录基础数据_管理人员权限视图 | +| 2 | `质量管理_不合格品处置_查询` | 查询/读取数据 | 视图:View_质检明细 | + +### 17.10 销售管理(SaleManagement) + +#### 61. `src/views/SaleManagement/saleorderstatus/index.vue` + +页面要点:该页面查询销售订单状态。用户按销售订单、合同、物料等条件查看销售订单在 SAP/MES 中的履约、生产、发货或关闭状态。 页面可见的操作/字段包括 “查询”、“缺料”、“关闭”、“全部”、“已下达发货通知”、“未下达发货通知”、“机加”、“装配”、“是”、“否”,这些是判断页面业务范围的主要线索。 后端主要围绕 生产管理_装配中心_缺料查 +过程覆盖:`生产管理_装配中心_缺料查询`、`销售管理_销售订单状态`、`MES_OrderPlanned_DescriptionEdit`、`Prog_MES_LoadStations` + +```text +[进入页面 / src/views/SaleManagement/saleorderstatus/index.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [组装查询条件 / 分页/时间/订单/工位] +[组装查询条件 / 分页/时间/订单/工位] --> [type 11(当前通用存储过程查询/执行) / 生产管理_装配中心_缺料查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 生产管理_装配中心_缺料查询 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / Prog_MES_LoadStations / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / Prog_MES_LoadStations / 查询/读取数据] --> [ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] +[ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [校验必填项/选中行/数量和状态] +[校验必填项/选中行/数量和状态] --> [type 11(当前通用存储过程查询/执行) / 销售管理_销售订单状态 / 业务存储过程调用] +[type 11(当前通用存储过程查询/执行) / 销售管理_销售订单状态 / 业务存储过程调用] --> [type 12(当前通用存储过程写入/业务动作) / MES_OrderPlanned_DescriptionEdit / 更新/保存业务数据] +[type 12(当前通用存储过程写入/业务动作) / MES_OrderPlanned_DescriptionEdit / 更新/保存业务数据] --> [后端写入/更新完成 / 返回成功/失败消息] +[后端写入/更新完成 / 返回成功/失败消息] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [主要数据对象 / SAP.SBO_YL.dbo.UBT_OPKL_MissQty / View_生产订单_MES / MES_接口_生产计划 / MES_接口_生产计划_生产任务 / MES_资源主数据] +[主要数据对象 / SAP.SBO_YL.dbo.UBT_OPKL_MissQty / View_生产订单_MES / MES_接口_生产计划 / MES_接口_生产计划_生产任务 / MES_资源主数据] --> [用户继续查询/维护或转入下一业务页] +``` + +| 环节 | 页面调用/过程 | 用途 | 依赖线索 | +|---|---|---|---| +| 1 | `生产管理_装配中心_缺料查询` | 查询/读取数据 | SAP/链接库:SAP.SBO_YL.dbo.UBT_OPKL_MissQty | +| 2 | `销售管理_销售订单状态` | 业务存储过程调用 | 视图:View_生产订单_MES | +| 3 | `MES_OrderPlanned_DescriptionEdit` | 更新/保存业务数据 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务 | +| 4 | `Prog_MES_LoadStations` | 查询/读取数据 | 表:MES_资源主数据 | + +### 17.11 系统维护(SystemMaintenance) + +#### 62. `src/views/SystemMaintenance/MenuManagement/index.vue` + +页面要点:该页面维护菜单和权限。管理员查询、增加、修改、删除菜单/角色权限配置,用于动态路由和按钮权限。 页面可见的操作/字段包括 “取消”、“确定”、“item.label”、“模块名称”、“模块路径”、“请选择”、“输入关键字进行过滤”、“新增一级模块”,这些是判断页面业务范围的主要线索。 后端主要围绕 菜单系统模块_项目角色_查询数据_MES +过程覆盖:`菜单系统模块_项目角色_查询数据_MESWORK` + +```text +[进入页面 / src/views/SystemMaintenance/MenuManagement/index.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [组装查询条件 / 分页/时间/订单/工位] +[组装查询条件 / 分页/时间/订单/工位] --> [type 11(当前通用存储过程查询/执行) / 菜单系统模块_项目角色_查询数据_MESWORK / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 菜单系统模块_项目角色_查询数据_MESWORK / 查询/读取数据] --> [ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] +[ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [本页主要为查询/展示或容器组件 / 无明确写入动作] +[本页主要为查询/展示或容器组件 / 无明确写入动作] --> [保持当前数据或跳转其他页面] +[保持当前数据或跳转其他页面] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [页面状态/路由/展示数据] +[页面状态/路由/展示数据] --> [用户继续查询/维护或转入下一业务页] +``` + +| 环节 | 页面调用/过程 | 用途 | 依赖线索 | +|---|---|---|---| +| 1 | `菜单系统模块_项目角色_查询数据_MESWORK` | 查询/读取数据 | 未在 SQL 中解析到明确依赖 | + +#### 63. `src/views/SystemMaintenance/OperationLog/index.vue` + +页面要点:该页面查询操作日志或报工操作记录,用于审计用户操作和追踪异常。 页面可见的操作/字段包括 “查询”、“订单编号”、“操作人”、“序号”、“操作类别”、“工序名称”、“工位名称”、“合同号”、“物料编号”、“物料描述”,这些是判断页面业务范围的主要线索。 后端主要围绕 系统管理_报工操作记录_查询 取数或提交业务动作。 +过程覆盖:`系统管理_报工操作记录_查询` + +```text +[进入页面 / src/views/SystemMaintenance/OperationLog/index.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [组装查询条件 / 分页/时间/订单/工位] +[组装查询条件 / 分页/时间/订单/工位] --> [type 11(当前通用存储过程查询/执行) / 系统管理_报工操作记录_查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 系统管理_报工操作记录_查询 / 查询/读取数据] --> [ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] +[ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [本页主要为查询/展示或容器组件 / 无明确写入动作] +[本页主要为查询/展示或容器组件 / 无明确写入动作] --> [保持当前数据或跳转其他页面] +[保持当前数据或跳转其他页面] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [主要数据对象 / YL_加工中心_操作记录表] +[主要数据对象 / YL_加工中心_操作记录表] --> [用户继续查询/维护或转入下一业务页] +``` + +| 环节 | 页面调用/过程 | 用途 | 依赖线索 | +|---|---|---|---| +| 1 | `系统管理_报工操作记录_查询` | 查询/读取数据 | 表:YL_加工中心_操作记录表 | + +#### 64. `src/views/SystemMaintenance/OrgManagement/index.vue` + +页面要点:该页面维护组织/角色类基础数据,支持新增、修改、删除和查询。 页面可见的操作/字段包括 “查询”、“新增”、“编辑”、“删除”、“确 定”、“取消”、“部门名称”、“请输入部门名称”、“新增部门”、“编辑部门”,这些是判断页面业务范围的主要线索。 后端主要围绕 菜单系统模块_项目角色_查询数据_MESWORK、菜单系统模块_项目角色_修改 +过程覆盖:`菜单系统模块_项目角色_查询数据_MESWORK`、`菜单系统模块_项目角色_修改数据_MESWORK`、`菜单系统模块_项目角色_增加_MESWORK`、`菜单系统模块_项目角色_删除_MESWORK` + +```text +[进入页面 / src/views/SystemMaintenance/OrgManagement/index.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [组装查询条件 / 分页/时间/订单/工位] +[组装查询条件 / 分页/时间/订单/工位] --> [type 11(当前通用存储过程查询/执行) / 菜单系统模块_项目角色_查询数据_MESWORK / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 菜单系统模块_项目角色_查询数据_MESWORK / 查询/读取数据] --> [ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] +[ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [校验必填项/选中行/数量和状态] +[校验必填项/选中行/数量和状态] --> [type 11(当前通用存储过程查询/执行) / 菜单系统模块_项目角色_修改数据_MESWORK / 更新/保存业务数据] +[type 11(当前通用存储过程查询/执行) / 菜单系统模块_项目角色_修改数据_MESWORK / 更新/保存业务数据] --> [type 11(当前通用存储过程查询/执行) / 菜单系统模块_项目角色_增加_MESWORK / 新增业务数据] +[type 11(当前通用存储过程查询/执行) / 菜单系统模块_项目角色_增加_MESWORK / 新增业务数据] --> [type 11(当前通用存储过程查询/执行) / 菜单系统模块_项目角色_删除_MESWORK / 删除业务数据] +[type 11(当前通用存储过程查询/执行) / 菜单系统模块_项目角色_删除_MESWORK / 删除业务数据] --> [后端写入/更新完成 / 返回成功/失败消息] +[后端写入/更新完成 / 返回成功/失败消息] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [主要数据对象 / 登录基础数据_角色信息 / 登录基础数据_人员权限角色 / 登录基础数据_二级菜单] +[主要数据对象 / 登录基础数据_角色信息 / 登录基础数据_人员权限角色 / 登录基础数据_二级菜单] --> [用户继续查询/维护或转入下一业务页] +``` + +| 环节 | 页面调用/过程 | 用途 | 依赖线索 | +|---|---|---|---| +| 1 | `菜单系统模块_项目角色_查询数据_MESWORK` | 查询/读取数据 | 未在 SQL 中解析到明确依赖 | +| 2 | `菜单系统模块_项目角色_修改数据_MESWORK` | 更新/保存业务数据 | 表:登录基础数据_角色信息 | +| 3 | `菜单系统模块_项目角色_增加_MESWORK` | 新增业务数据 | 表:登录基础数据_角色信息 | +| 4 | `菜单系统模块_项目角色_删除_MESWORK` | 删除业务数据 | 表:登录基础数据_角色信息、登录基础数据_人员权限角色、登录基础数据_二级菜单 | + +#### 65. `src/views/SystemMaintenance/PersonnelManagement/index.vue` + +页面要点:该页面维护人员账号。管理员维护人员、部门、角色、启用状态等登录和权限基础数据。 页面可见的操作/字段包括 “查询”、“新增”、“重置密码”、“编辑”、“确 定”、“取消”、“item.label”、“姓名”、“工号”、“密码”,这些是判断页面业务范围的主要线索。 后端主要围绕 人员管理_角色信息初始化查询_查询、登录基础数据_人员信息_切 +过程覆盖:`人员管理_角色信息初始化查询_查询`、`登录基础数据_人员信息_切换是否用户`、`人员管理_人员信息查询_查询`、`人员管理_人员信息修改_编辑`、`人员管理_人员信息修改_删除`、`人员管理_人员信息新增_新增`、`WEB_摄像头查看权限_查询`、`WEB_登录基础数据_人员信息_重置密码`、`WEB_人员设备查看权限_查询`、`WEB_人员设备查看权限_权限切换`、... + +```text +[进入页面 / src/views/SystemMaintenance/PersonnelManagement/index.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [组装查询条件 / 分页/时间/订单/工位] +[组装查询条件 / 分页/时间/订单/工位] --> [type 11(当前通用存储过程查询/执行) / 人员管理_角色信息初始化查询_查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 人员管理_角色信息初始化查询_查询 / 查询/读取数据] --> [type 12(当前通用存储过程写入/业务动作) / 登录基础数据_人员信息_切换是否用户 / 基础权限/人员数据处理] +[type 12(当前通用存储过程写入/业务动作) / 登录基础数据_人员信息_切换是否用户 / 基础权限/人员数据处理] --> [type 11(当前通用存储过程查询/执行) / 人员管理_人员信息查询_查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 人员管理_人员信息查询_查询 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / WEB_摄像头查看权限_查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / WEB_摄像头查看权限_查询 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / WEB_人员设备查看权限_查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / WEB_人员设备查看权限_查询 / 查询/读取数据] --> [ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] +[ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [校验必填项/选中行/数量和状态] +[校验必填项/选中行/数量和状态] --> [type 12(当前通用存储过程写入/业务动作) / 人员管理_人员信息修改_编辑 / 更新/保存业务数据] +[type 12(当前通用存储过程写入/业务动作) / 人员管理_人员信息修改_编辑 / 更新/保存业务数据] --> [type 12(当前通用存储过程写入/业务动作) / 人员管理_人员信息修改_删除 / 更新/保存业务数据] +[type 12(当前通用存储过程写入/业务动作) / 人员管理_人员信息修改_删除 / 更新/保存业务数据] --> [type 11(当前通用存储过程查询/执行) / 人员管理_人员信息新增_新增 / 新增业务数据] +[type 11(当前通用存储过程查询/执行) / 人员管理_人员信息新增_新增 / 新增业务数据] --> [type 12(当前通用存储过程写入/业务动作) / WEB_登录基础数据_人员信息_重置密码 / 基础权限/人员数据处理] +[type 12(当前通用存储过程写入/业务动作) / WEB_登录基础数据_人员信息_重置密码 / 基础权限/人员数据处理] --> [后端写入/更新完成 / 返回成功/失败消息] +[后端写入/更新完成 / 返回成功/失败消息] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [主要数据对象 / 登录基础数据_人员信息 / 登录基础数据_人员权限角色] +[主要数据对象 / 登录基础数据_人员信息 / 登录基础数据_人员权限角色] --> [用户继续查询/维护或转入下一业务页] +``` + +| 环节 | 页面调用/过程 | 用途 | 依赖线索 | +|---|---|---|---| +| 1 | `人员管理_角色信息初始化查询_查询` | 查询/读取数据 | 未在 SQL 中解析到明确依赖 | +| 2 | `登录基础数据_人员信息_切换是否用户` | 基础权限/人员数据处理 | 未知 | +| 3 | `人员管理_人员信息查询_查询` | 查询/读取数据 | 未在 SQL 中解析到明确依赖 | +| 4 | `人员管理_人员信息修改_编辑` | 更新/保存业务数据 | 表:登录基础数据_人员信息、登录基础数据_人员权限角色 | +| 5 | `人员管理_人员信息修改_删除` | 更新/保存业务数据 | 表:登录基础数据_人员信息、登录基础数据_人员权限角色 | +| 6 | `人员管理_人员信息新增_新增` | 新增业务数据 | 表:登录基础数据_人员信息、登录基础数据_人员权限角色 | +| 7 | `WEB_摄像头查看权限_查询` | 查询/读取数据 | 未知 | +| 8 | `WEB_登录基础数据_人员信息_重置密码` | 基础权限/人员数据处理 | 表:登录基础数据_人员信息 | +| 9 | `WEB_人员设备查看权限_查询` | 查询/读取数据 | 未知 | +| 10 | `WEB_人员设备查看权限_权限切换` | 查询/读取数据 | 未知 | +| 11 | `WEB_人员摄像头查看权限_权限切换` | 查询/读取数据 | 未知 | + +#### 66. `src/views/SystemMaintenance/SystemRrolemaintenance/index.vue` + +页面要点:该页面维护系统角色。管理员查询、新增、修改、删除角色数据。 页面可见的操作/字段包括 “查询”、“新增”、“编辑”、“删除”、“确 定”、“取消”、“角色功能”、“角色名称”、“请输入角色功能”、“新增角色”,这些是判断页面业务范围的主要线索。 后端主要围绕 菜单系统模块_项目角色_查询数据_MESWORK、菜单系统模块_项目角色_修改数 +过程覆盖:`菜单系统模块_项目角色_查询数据_MESWORK`、`菜单系统模块_项目角色_修改数据_MESWORK`、`菜单系统模块_项目角色_增加_MESWORK`、`菜单系统模块_项目角色_删除_MESWORK` + +```text +[进入页面 / src/views/SystemMaintenance/SystemRrolemaintenance/index.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [组装查询条件 / 分页/时间/订单/工位] +[组装查询条件 / 分页/时间/订单/工位] --> [type 11(当前通用存储过程查询/执行) / 菜单系统模块_项目角色_查询数据_MESWORK / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 菜单系统模块_项目角色_查询数据_MESWORK / 查询/读取数据] --> [ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] +[ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [校验必填项/选中行/数量和状态] +[校验必填项/选中行/数量和状态] --> [type 11(当前通用存储过程查询/执行) / 菜单系统模块_项目角色_修改数据_MESWORK / 更新/保存业务数据] +[type 11(当前通用存储过程查询/执行) / 菜单系统模块_项目角色_修改数据_MESWORK / 更新/保存业务数据] --> [type 11(当前通用存储过程查询/执行) / 菜单系统模块_项目角色_增加_MESWORK / 新增业务数据] +[type 11(当前通用存储过程查询/执行) / 菜单系统模块_项目角色_增加_MESWORK / 新增业务数据] --> [type 11(当前通用存储过程查询/执行) / 菜单系统模块_项目角色_删除_MESWORK / 删除业务数据] +[type 11(当前通用存储过程查询/执行) / 菜单系统模块_项目角色_删除_MESWORK / 删除业务数据] --> [后端写入/更新完成 / 返回成功/失败消息] +[后端写入/更新完成 / 返回成功/失败消息] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [主要数据对象 / 登录基础数据_角色信息 / 登录基础数据_人员权限角色 / 登录基础数据_二级菜单] +[主要数据对象 / 登录基础数据_角色信息 / 登录基础数据_人员权限角色 / 登录基础数据_二级菜单] --> [用户继续查询/维护或转入下一业务页] +``` + +| 环节 | 页面调用/过程 | 用途 | 依赖线索 | +|---|---|---|---| +| 1 | `菜单系统模块_项目角色_查询数据_MESWORK` | 查询/读取数据 | 未在 SQL 中解析到明确依赖 | +| 2 | `菜单系统模块_项目角色_修改数据_MESWORK` | 更新/保存业务数据 | 表:登录基础数据_角色信息 | +| 3 | `菜单系统模块_项目角色_增加_MESWORK` | 新增业务数据 | 表:登录基础数据_角色信息 | +| 4 | `菜单系统模块_项目角色_删除_MESWORK` | 删除业务数据 | 表:登录基础数据_角色信息、登录基础数据_人员权限角色、登录基础数据_二级菜单 | + +#### 67. `src/views/SystemMaintenance/WorkstationManagement/index.vue` + +页面要点:该页面维护工位资源。管理员在 MES 侧新增、修改、删除工位,同时调用 SAP B1 Resources 新增或更新资源主数据。 页面可见的操作/字段包括 “查询”、“新增”、“编辑”、“删除”、“确 定”、“取消”、“工位名称”、“工位号”、“请输入工位名称”、“新增工位”,这些是判断页面业务范围的主要线索。 后端主要围绕 MES_登录 +过程覆盖:`MES_登录_工位与名称_查询`、`系统管理_工位管理_工位信息修改`、`系统管理_工位管理_工位信息增加`、`系统管理_工位管理_工位信息删除` + +```text +[进入页面 / src/views/SystemMaintenance/WorkstationManagement/index.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [组装查询条件 / 分页/时间/订单/工位] +[组装查询条件 / 分页/时间/订单/工位] --> [type 11(当前通用存储过程查询/执行) / MES_登录_工位与名称_查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / MES_登录_工位与名称_查询 / 查询/读取数据] --> [ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] +[ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [校验必填项/选中行/数量和状态] +[校验必填项/选中行/数量和状态] --> [type 11(当前通用存储过程查询/执行) / 系统管理_工位管理_工位信息修改 / 更新/保存业务数据] +[type 11(当前通用存储过程查询/执行) / 系统管理_工位管理_工位信息修改 / 更新/保存业务数据] --> [type 11(当前通用存储过程查询/执行) / 系统管理_工位管理_工位信息增加 / 新增业务数据] +[type 11(当前通用存储过程查询/执行) / 系统管理_工位管理_工位信息增加 / 新增业务数据] --> [type 11(当前通用存储过程查询/执行) / 系统管理_工位管理_工位信息删除 / 删除业务数据] +[type 11(当前通用存储过程查询/执行) / 系统管理_工位管理_工位信息删除 / 删除业务数据] --> [后端写入/更新完成 / 返回成功/失败消息] +[后端写入/更新完成 / 返回成功/失败消息] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [主要数据对象 / View_基础数据_工位 / MES_资源主数据 / 登录基础数据_人员权限角色 / 登录基础数据_二级菜单] +[主要数据对象 / View_基础数据_工位 / MES_资源主数据 / 登录基础数据_人员权限角色 / 登录基础数据_二级菜单] --> [用户继续查询/维护或转入下一业务页] +``` + +| 环节 | 页面调用/过程 | 用途 | 依赖线索 | +|---|---|---|---| +| 1 | `MES_登录_工位与名称_查询` | 查询/读取数据 | 视图:View_基础数据_工位 | +| 2 | `系统管理_工位管理_工位信息修改` | 更新/保存业务数据 | 表:MES_资源主数据 | +| 3 | `系统管理_工位管理_工位信息增加` | 新增业务数据 | 表:MES_资源主数据 | +| 4 | `系统管理_工位管理_工位信息删除` | 删除业务数据 | 表:MES_资源主数据、登录基础数据_人员权限角色、登录基础数据_二级菜单 | + +### 17.12 首页与看板入口(dashboard) + +#### 68. `src/views/dashboard/index.vue` + +页面要点:该页面是系统首页或欢迎页,用于承载看板入口或基础统计展示。 + +```text +[进入页面 / src/views/dashboard/index.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [页面绘制/路由容器展示 / 未识别到页面级存储过程] +[页面绘制/路由容器展示 / 未识别到页面级存储过程] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [本页主要为查询/展示或容器组件 / 无明确写入动作] +[本页主要为查询/展示或容器组件 / 无明确写入动作] --> [保持当前数据或跳转其他页面] +[保持当前数据或跳转其他页面] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [页面状态/路由/展示数据] +[页面状态/路由/展示数据] --> [用户继续查询/维护或转入下一业务页] +``` + +### 17.13 布局与导航(layout) + +#### 69. `src/views/layout/Layout.vue` + +页面要点:该文件属于系统布局组件,负责菜单、导航、标签页、内容承载或窗口自适应,不承载具体业务流程。 + +```text +[进入页面 / src/views/layout/Layout.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [页面绘制/路由容器展示 / 未识别到页面级存储过程] +[页面绘制/路由容器展示 / 未识别到页面级存储过程] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [本页主要为查询/展示或容器组件 / 无明确写入动作] +[本页主要为查询/展示或容器组件 / 无明确写入动作] --> [保持当前数据或跳转其他页面] +[保持当前数据或跳转其他页面] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [页面状态/路由/展示数据] +[页面状态/路由/展示数据] --> [用户继续查询/维护或转入下一业务页] +``` + +#### 70. `src/views/layout/components/AppMain.vue` + +页面要点:该文件属于系统布局组件,负责菜单、导航、标签页、内容承载或窗口自适应,不承载具体业务流程。 + +```text +[进入页面 / src/views/layout/components/AppMain.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [页面绘制/路由容器展示 / 未识别到页面级存储过程] +[页面绘制/路由容器展示 / 未识别到页面级存储过程] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [本页主要为查询/展示或容器组件 / 无明确写入动作] +[本页主要为查询/展示或容器组件 / 无明确写入动作] --> [保持当前数据或跳转其他页面] +[保持当前数据或跳转其他页面] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [页面状态/路由/展示数据] +[页面状态/路由/展示数据] --> [用户继续查询/维护或转入下一业务页] +``` + +#### 71. `src/views/layout/components/Navbar.vue` + +页面要点:该文件属于系统布局组件,负责菜单、导航、标签页、内容承载或窗口自适应,不承载具体业务流程。 页面可见的操作/字段包括 “[   登出   ]  --> Log Off”、“取 消”、“提 交”、“旧密码”、“新密码”、“确认密码”、“修改密码”,这些是判断页面业务范围的主要线索。 后端主要围绕 登录基础数据_人员信 +过程覆盖:`登录基础数据_人员信息_登陆检查密码`、`登录基础数据_人员信息_修改密码`、`WEB_报警查询_未读报警记录_查询`、`WEB_报警查询_未读报警记录_未读条数查询` + +```text +[进入页面 / src/views/layout/components/Navbar.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [组装查询条件 / 分页/时间/订单/工位] +[组装查询条件 / 分页/时间/订单/工位] --> [type 11(当前通用存储过程查询/执行) / 登录基础数据_人员信息_登陆检查密码 / 基础权限/人员数据处理] +[type 11(当前通用存储过程查询/执行) / 登录基础数据_人员信息_登陆检查密码 / 基础权限/人员数据处理] --> [type 11(当前通用存储过程查询/执行) / WEB_报警查询_未读报警记录_查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / WEB_报警查询_未读报警记录_查询 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / WEB_报警查询_未读报警记录_未读条数查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / WEB_报警查询_未读报警记录_未读条数查询 / 查询/读取数据] --> [ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] +[ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [校验必填项/选中行/数量和状态] +[校验必填项/选中行/数量和状态] --> [type 11(当前通用存储过程查询/执行) / 登录基础数据_人员信息_修改密码 / 更新/保存业务数据] +[type 11(当前通用存储过程查询/执行) / 登录基础数据_人员信息_修改密码 / 更新/保存业务数据] --> [后端写入/更新完成 / 返回成功/失败消息] +[后端写入/更新完成 / 返回成功/失败消息] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [页面状态/路由/展示数据] +[页面状态/路由/展示数据] --> [用户继续查询/维护或转入下一业务页] +``` + +| 环节 | 页面调用/过程 | 用途 | 依赖线索 | +|---|---|---|---| +| 1 | `登录基础数据_人员信息_登陆检查密码` | 基础权限/人员数据处理 | 未在 SQL 中解析到明确依赖 | +| 2 | `登录基础数据_人员信息_修改密码` | 更新/保存业务数据 | 未在 SQL 中解析到明确依赖 | +| 3 | `WEB_报警查询_未读报警记录_查询` | 查询/读取数据 | 未知 | +| 4 | `WEB_报警查询_未读报警记录_未读条数查询` | 查询/读取数据 | 未知 | + +#### 72. `src/views/layout/components/Sidebar/Item.vue` + +页面要点:该文件属于系统布局组件,负责菜单、导航、标签页、内容承载或窗口自适应,不承载具体业务流程。 + +```text +[进入页面 / src/views/layout/components/Sidebar/Item.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [页面绘制/路由容器展示 / 未识别到页面级存储过程] +[页面绘制/路由容器展示 / 未识别到页面级存储过程] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [本页主要为查询/展示或容器组件 / 无明确写入动作] +[本页主要为查询/展示或容器组件 / 无明确写入动作] --> [保持当前数据或跳转其他页面] +[保持当前数据或跳转其他页面] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [页面状态/路由/展示数据] +[页面状态/路由/展示数据] --> [用户继续查询/维护或转入下一业务页] +``` + +#### 73. `src/views/layout/components/Sidebar/SidebarItem.vue` + +页面要点:该文件属于系统布局组件,负责菜单、导航、标签页、内容承载或窗口自适应,不承载具体业务流程。 页面可见的操作/字段包括 “onlyOneChild.meta.title”、“item.meta.title”、“child.meta.title”,这些是判断页面业务范围的主要线索。 + +```text +[进入页面 / src/views/layout/components/Sidebar/SidebarItem.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [页面绘制/路由容器展示 / 未识别到页面级存储过程] +[页面绘制/路由容器展示 / 未识别到页面级存储过程] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [本页主要为查询/展示或容器组件 / 无明确写入动作] +[本页主要为查询/展示或容器组件 / 无明确写入动作] --> [保持当前数据或跳转其他页面] +[保持当前数据或跳转其他页面] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [页面状态/路由/展示数据] +[页面状态/路由/展示数据] --> [用户继续查询/维护或转入下一业务页] +``` + +#### 74. `src/views/layout/components/Sidebar/index.vue` + +页面要点:该文件属于系统布局组件,负责菜单、导航、标签页、内容承载或窗口自适应,不承载具体业务流程。 + +```text +[进入页面 / src/views/layout/components/Sidebar/index.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [页面绘制/路由容器展示 / 未识别到页面级存储过程] +[页面绘制/路由容器展示 / 未识别到页面级存储过程] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [本页主要为查询/展示或容器组件 / 无明确写入动作] +[本页主要为查询/展示或容器组件 / 无明确写入动作] --> [保持当前数据或跳转其他页面] +[保持当前数据或跳转其他页面] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [页面状态/路由/展示数据] +[页面状态/路由/展示数据] --> [用户继续查询/维护或转入下一业务页] +``` + +#### 75. `src/views/layout/components/TagsView.vue` + +页面要点:该文件属于系统布局组件,负责菜单、导航、标签页、内容承载或窗口自适应,不承载具体业务流程。 + +```text +[进入页面 / src/views/layout/components/TagsView.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [页面绘制/路由容器展示 / 未识别到页面级存储过程] +[页面绘制/路由容器展示 / 未识别到页面级存储过程] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [本页主要为查询/展示或容器组件 / 无明确写入动作] +[本页主要为查询/展示或容器组件 / 无明确写入动作] --> [保持当前数据或跳转其他页面] +[保持当前数据或跳转其他页面] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [页面状态/路由/展示数据] +[页面状态/路由/展示数据] --> [用户继续查询/维护或转入下一业务页] +``` + +#### 76. `src/views/layout/components/index.js` + +页面要点:该文件属于系统布局组件,负责菜单、导航、标签页、内容承载或窗口自适应,不承载具体业务流程。 + +```text +[进入页面 / src/views/layout/components/index.js] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [页面绘制/路由容器展示 / 未识别到页面级存储过程] +[页面绘制/路由容器展示 / 未识别到页面级存储过程] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [本页主要为查询/展示或容器组件 / 无明确写入动作] +[本页主要为查询/展示或容器组件 / 无明确写入动作] --> [保持当前数据或跳转其他页面] +[保持当前数据或跳转其他页面] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [页面状态/路由/展示数据] +[页面状态/路由/展示数据] --> [用户继续查询/维护或转入下一业务页] +``` + +#### 77. `src/views/layout/mixin/ResizeHandler.js` + +页面要点:该文件属于系统布局组件,负责菜单、导航、标签页、内容承载或窗口自适应,不承载具体业务流程。 + +```text +[进入页面 / src/views/layout/mixin/ResizeHandler.js] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [页面绘制/路由容器展示 / 未识别到页面级存储过程] +[页面绘制/路由容器展示 / 未识别到页面级存储过程] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [本页主要为查询/展示或容器组件 / 无明确写入动作] +[本页主要为查询/展示或容器组件 / 无明确写入动作] --> [保持当前数据或跳转其他页面] +[保持当前数据或跳转其他页面] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [页面状态/路由/展示数据] +[页面状态/路由/展示数据] --> [用户继续查询/维护或转入下一业务页] +``` + +### 17.14 登录(login) + +#### 78. `src/views/login/index.vue` + +页面要点:该页面是登录入口,负责账号密码登录、角色选择、Token/Cookie 写入、路由权限初始化和密码修改入口。 页面可见的操作/字段包括 “修改密码”、“登录”、“取消”、“确定”、“角色名称”、“工号”、“原始密码”、“新密码”、“确认密码”、“请输入用户名”,这些是判断页面业务范围的主要线索。 + +```text +[进入页面 / src/views/login/index.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [页面绘制/路由容器展示 / 未识别到页面级存储过程] +[页面绘制/路由容器展示 / 未识别到页面级存储过程] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [本页主要为查询/展示或容器组件 / 无明确写入动作] +[本页主要为查询/展示或容器组件 / 无明确写入动作] --> [保持当前数据或跳转其他页面] +[保持当前数据或跳转其他页面] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [页面状态/路由/展示数据] +[页面状态/路由/展示数据] --> [用户继续查询/维护或转入下一业务页] +``` diff --git a/MES_Manage_View_V20/元利项目详细用户使用说明书.md b/MES_Manage_View_V20/元利项目详细用户使用说明书.md index 29cdcdc..eafa154 100644 --- a/MES_Manage_View_V20/元利项目详细用户使用说明书.md +++ b/MES_Manage_View_V20/元利项目详细用户使用说明书.md @@ -337,21 +337,46 @@ - `PlanManagement/SelfMakePlandone` 用途: -- 查看已排产任务。 -- 调整部分排产信息。 -- 查看任务状态、工艺、计划时间、SAP 同步结果。 +- 查看机加/自制件待排产和已排产任务。 +- 按订单、销售订单、物料、工序、计划时间、工位筛选任务。 +- 在表单页直接维护指派对象、指派数量、计划开始、计划完成、最晚开始、外协分组、优先级和派工备注。 +- 在日程页拖拽任务调整计划开始和计划完成时间。 +- 通过指派数量进行部分派工/拆分派工,通过二次派工追加人员。 +- 查看原料状态、零件图纸、工艺图纸,确认任务是否具备开工条件。 操作步骤: -1. 进入已排产页面。 -2. 按生产订单、物料、计划开始日期、计划完成日期查询。 -3. 查看任务状态和加工状态。 -4. 如需调整,点击编辑。 -5. 如需查看历史工时,点击总工时或工时明细入口。 +1. 进入 `PlanManagement/SelfMakePlandone` 查看已排产任务;需要处理待排产任务时进入 `PlanManagement/SelfMakePlando`。 +2. 在查询区输入 `生产订单`、`销售订单`、`物料编码`、`物料名称`、`工序名称`,按需要选择 `排产状态`。 +3. 选择 `要求完工日期`、`计划开始`、`计划完成` 的起止日期,点击 `查询` 刷新列表。 +4. 在工位复选框中勾选要查看的工位,系统按勾选工位过滤任务;不勾选时按全部工位查询。 +5. 在 `表单` 页查看任务基本信息:生产订单、物料编码、物料名称、计划数、要求完工日期、标准工时、工序名称、指派对象、指派数量、计划开始、计划完成、外协分组、原料状态、优先级、备注、占用情况、销售订单、最后编辑人和最后编辑时间。 +6. 表格中红色行表示优先级为 `是` 或加急状态为 `加急` 的任务,这类任务会优先显示;处理时应先核对是否需要插单或提前安排。 +7. 修改指派对象时,先单击目标行,再单击 `指派对象` 单元格,选择工位后系统立即保存。 +8. 修改指派数量时,先单击目标行,再单击 `指派数量` 单元格,输入数量后点击该单元格内的 `确定`。数量必须大于等于 1,且不能超过计划数量;小于计划数量时表示只派出部分数量,剩余数量按拆分/未派部分继续保留。 +9. 修改计划开始时,在 `计划开始` 列选择日期,系统保存该任务新的计划开始时间。 +10. 修改计划完成时,在 `计划完成` 列选择日期,系统保存该任务新的计划完成时间。 +11. 修改最晚开始时,在 `最晚开始` 列选择日期,用于提醒任务最迟必须开工的控制时间。 +12. 维护外协分组时,在 `外协分组` 输入框填写分组编号或分组值,离开输入框后系统保存,后续外协任务可按该分组识别。 +13. 查看原料状态时,点击 `原料状态` 列的 `查看`,在弹窗中核对子件编码、子件名称、基本数量、待出数量、拣配数量、计划数量、库存量、材质。 +14. 查看图纸时,在 `SelfMakePlando` 点击 `零件图纸` 或 `工艺图纸`,在弹窗中查看对应图纸;若提示未上传图纸,需要先维护图纸资料。 +15. 维护优先级和说明时,点击 `编辑`,在弹窗中选择 `优先级` 为 `是` 或 `否`,填写 `未完成说明`、`派工特殊备注`,点击 `确定` 保存。 +16. 需要追加人员时,在 `二次派工` 列多选人员,选择完成后系统立即保存二次派工人员。 +17. 需要批量排产时,在 `SelfMakePlando` 勾选同一生产订单的多道工序,先补齐第一道工序的指派对象和计划开始时间,再点击 `批量排产`。系统按订单行号排序,并把上一道工序的指派对象、计划开始、计划完成带给后续未填写工序。 +18. 批量排产确认无误后,点击 `排产完成`。系统校验每行是否有指派对象、指派数量、计划开始和计划完成;通过后写入派工结果,并按同一生产订单汇总最早开始、最晚完成,同步更新 SAP 生产订单开始/完成日期。 +19. 切换到 `日程` 页查看日历排程。蓝色任务为普通任务,红色任务为优先/加急任务;事件标题包含生产订单、物料名称、指派对象和计划数量。 +20. 在日程页单击任务,可查看订单号、指派对象、计划数量、开始时间、结束时间。 +21. 在日程页拖拽任务到其他日期,系统会弹出 `确认修改计划时间?`;点击 `确定` 后保存新的计划开始和计划完成,点击 `取消` 后恢复原位置。 +22. 在日程页拖动任务边缘拉长或缩短任务跨度,系统会同步调整计划完成时间;保存失败时日程会自动恢复原时间。 +23. 调整完成后回到 `表单` 页或重新点击 `查询`,确认列表中的计划开始、计划完成、最晚开始、指派对象、指派数量和备注已经更新。 注意: - 日期筛选按自然日时,应查询 `00:00:00` 至 `23:59:59`。 -- 总工时是汇总值,明细需要按设备、日期、任务查看。 +- 日程页拖拽会直接修改任务计划时间,拖拽前应确认不是已开工、已报工或已经锁定的任务。 +- 指派数量小于计划数量时要特别核对剩余数量是否还需要继续派工,避免漏派。 +- 二次派工只是补充人员,不等同于变更主指派工位。 +- `排产完成` 会影响生产看板、及时开工统计,并回写 SAP 生产订单日期,提交前必须核对同一订单的最早开始和最晚完成。 +- 红色任务表示优先或加急,默认排序靠前,不能只按订单号顺序处理。 ### 6.3 装配排产 @@ -1064,3 +1089,6323 @@ 8. 异常:报异常、处理异常、关闭异常。 9. 看板:生产、装配、质检、机加、综合大屏。 10. 新增需求页面:手续确认、及时检验、装配已排产需求、齐套跟踪等。 + +## 二十一、逐页详细操作说明(按 src/views 页面) + +本章按源码页面逐页编写。每个页面都从实际 `v-model`、表格列、按钮、弹窗、页签、存储过程和 SAP/WMS 调用中提取操作线索,转换成用户可执行的步骤。 + +通用阅读方法: +- `查询条件/输入项` 是用户进入页面后可以填写、选择或用于筛选的字段。 +- `结果表重点列` 是查询后需要核对的表格列,表格可横向滚动时应继续向右查看。 +- `页面按钮/状态/页签` 是页面上能触发查询、查看、编辑、提交、导出、状态切换或页面切换的入口。 +- `后台处理/外部接口` 用于说明保存后可能调用的存储过程、SAP 或 WMS 接口,业务人员主要关注成功/失败提示。 +- 涉及排产、报工、质检、外协、SAP/WMS 的操作,提交前必须核对订单、物料、数量、人员、工位和日期。 + +## 21-1 错误页 + +### 21.1 404 页面 + +页面路径:`src/views/404.vue` +所属模块:错误页 +建议使用人员:系统管理员/相关用户 + +页面用途:该页面用于路由不存在或无效地址访问时展示 404 提示,帮助用户返回首页或重新选择菜单。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 该页没有识别到固定查询区,按页面提示直接查看信息或使用菜单/按钮进入下一步。 + +**查询条件/输入项** +- 未识别到固定输入项,按现场页面提示操作。 + +**结果表重点列** +- 未识别到固定表格列,以页面实际显示为准。 + +**页面按钮/状态/页签** +- 未识别到明确按钮,以页面实际显示为准。 + +**弹窗/表单重点项** +- 未识别到固定弹窗或表单项。 + +**后台处理/外部接口** +- 未发现页面级后台提交动作。 + +**操作注意事项** +- 操作后建议重新查询页面,确认列表、状态和明细已经刷新。 + +## 21-2 异常管理 + +### 21.2 及时开工异常 + +页面路径:`src/views/AnomalousManagement/PunctualWork/index.vue` +所属模块:异常管理 +建议使用人员:班组长/生产主管/计划员 + +页面用途:该页面用于查看未及时开工、待执行、可执行、已开工和已完成任务,帮助班组长或计划员催办生产开工。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 在查询区按需要填写筛选条件:`订单号`、`零件编号`、`计划开工_Start`、`计划开工_End`、`生产状态`、`工位名称`、`用户ID`、`计划号`、`销售订单`、`TaskAID`、`orderNo2`、`productCode2`。 +3. 如果仍查不到数据,继续补充条件:`plannum`、`salenum`、`completion时间`、`productionStatus2`、`Doing`、`任务ID`、`生产订单`、`零件编码`、`时间`、`开始时间`,或清空过窄条件后重新查询。 +4. 点击 `查询` 刷新列表;状态按钮会切换任务范围。 +5. 查询后先核对关键列:`指派对象`、`生产订单`、`销售订单`、`物料名称`、`物料编码`、`顺序`、`工序名称`、`分配数`、`上序合格数`、`加工状态`、`收料状态`、`加急数量`。 +6. 继续横向滚动或展开表格,核对:`下序名称`、`加急`、`优先`、`首检`、`序检`、`内码`、`完成数`、`任务状态`、`计划号`、`计划开始`、`计划完成`、`开工时间`、`备注`、`收料数`。 +7. 保存或提交成功后重新点击查询,确认页面数据已通过 `异常提醒_及时开工_查询`、`MES_登录_工位与名称_查询`、`Prog_MES_LoadProcess`、`查询字典` 等后台过程更新。 + +**查询条件/输入项** +- `订单号` +- `零件编号` +- `计划开工_Start` +- `计划开工_End` +- `生产状态` +- `工位名称` +- `用户ID` +- `计划号` +- `销售订单` +- `TaskAID` +- `orderNo2` +- `productCode2` +- `plannum` +- `salenum` +- `completion时间` +- `productionStatus2` +- `Doing` +- `任务ID` +- `生产订单` +- `零件编码` +- `时间` +- `开始时间` + +**结果表重点列** +- `指派对象` +- `生产订单` +- `销售订单` +- `物料名称` +- `物料编码` +- `顺序` +- `工序名称` +- `分配数` +- `上序合格数` +- `加工状态` +- `收料状态` +- `加急数量` +- `下序名称` +- `加急` +- `优先` +- `首检` +- `序检` +- `内码` +- `完成数` +- `任务状态` +- `计划号` +- `计划开始` +- `计划完成` +- `开工时间` +- `备注` +- `收料数` + +**页面按钮/状态/页签** +- `查询` + +**弹窗/表单重点项** +- 未识别到固定弹窗或表单项。 + +**后台处理/外部接口** +- `存储过程:异常提醒_及时开工_查询` +- `存储过程:MES_登录_工位与名称_查询` +- `存储过程:Prog_MES_LoadProcess` +- `存储过程:查询字典` + +**操作注意事项** +- 操作后建议重新查询页面,确认列表、状态和明细已经刷新。 + +## 21-3 产品结构维护 + +### 21.3 产品结构维护 + +页面路径:`src/views/CraftManagement/CraftMaintain/index.vue` +所属模块:产品结构维护 +建议使用人员:工艺员/技术人员 + +页面用途:该页面用于维护产品结构树,支持新增、编辑、删除产品结构节点,为工艺、BOM 和生产任务提供层级基础资料。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 在查询区按需要填写筛选条件:`父节点`、`节点名称`、`节点类型`、`子节点`、`PartType`。 +3. 点击页面上的查询或刷新类按钮获取最新数据;如果页面自动加载,则先核对默认列表是否符合当前业务范围。 +4. 如果页面左侧或上方有树形结构,先选中组织、物料、菜单或产品节点,再查看右侧列表;新增子节点前确认父节点选中正确。 +5. 需要新增时点击 `新增`,在弹窗中逐项填写必填字段,确认编码、名称、状态等基础信息后保存。 +6. 需要维护已有记录时先选中目标行,再点击或触发表格内 `编辑`,修改字段后保存并等待成功提示。 +7. 需要删除时先确认该记录没有正在使用的业务数据,再点击 `删除`,按确认提示执行。 +8. 按业务需要点击 `展开`,操作前先确认选中行和输入内容。 +9. 保存或提交成功后重新点击查询,确认页面数据已通过 `WEB_基本表_产品结构_新增`、`WEB_基本表_产品结构_查询`、`WEB_基本表_产品结构_删除`、`WEB_基本表_产品结构_修改`、`产品关系_变更节点排序` 等后台过程更新。 + +**查询条件/输入项** +- `父节点` +- `节点名称` +- `节点类型` +- `子节点` +- `PartType` + +**结果表重点列** +- 未识别到固定表格列,以页面实际显示为准。 + +**页面按钮/状态/页签** +- `新增` +- `编辑` +- `删除` +- `展开` + +**弹窗/表单重点项** +- 未识别到固定弹窗或表单项。 + +**后台处理/外部接口** +- `存储过程:WEB_基本表_产品结构_新增` +- `存储过程:WEB_基本表_产品结构_查询` +- `存储过程:WEB_基本表_产品结构_删除` +- `存储过程:WEB_基本表_产品结构_修改` +- `存储过程:产品关系_变更节点排序` + +**操作注意事项** +- 工艺、图纸和结构资料会被排产、生产、质检引用,版本错误会直接影响现场执行。 + +## 21-4 设备管理 + +### 21.4 设备采集数据 + +页面路径:`src/views/DeviceManagement/Devicedata/index.vue` +所属模块:设备管理 +建议使用人员:设备管理员/生产主管 + +页面用途:该页面用于查看设备实时数据或采集缓存数据,判断设备当前运行、报警和参数状态。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 在查询区按需要填写筛选条件:`PageCurrent`、`PageSize`、`PageCount`、`ItemCount`、`设备名称`、`参数名称`、`equipmentType`、`dataname`、`设备`。 +3. 点击 `查询` 刷新列表;状态按钮会切换任务范围。 +4. 列表较多时使用分页区切换页码或调整每页条数,避免只检查第一页。 +5. 查询后先核对关键列:`设备名称`、`参数名称`、`设备编号`、`数值`、`单位`、`更新时间`。 +6. 保存或提交成功后重新点击查询,确认页面数据已通过 `MES_登录_工位与名称_查询`、`设备管理_设备数据查询` 等后台过程更新。 + +**查询条件/输入项** +- `PageCurrent` +- `PageSize` +- `PageCount` +- `ItemCount` +- `设备名称` +- `参数名称` +- `equipmentType` +- `dataname` +- `设备` + +**结果表重点列** +- `设备名称` +- `参数名称` +- `设备编号` +- `数值` +- `单位` +- `更新时间` + +**页面按钮/状态/页签** +- `查询` + +**弹窗/表单重点项** +- 未识别到固定弹窗或表单项。 + +**后台处理/外部接口** +- `存储过程:MES_登录_工位与名称_查询` +- `存储过程:设备管理_设备数据查询` + +**操作注意事项** +- 设备和采集数据用于看板、OEE 和报工分析,发现异常时应先确认设备编码和采集点位。 + +### 21.5 设备历史数据 + +页面路径:`src/views/DeviceManagement/DeviceDataHistory/index.vue` +所属模块:设备管理 +建议使用人员:设备管理员/生产主管 + +页面用途:该页面用于查询设备历史采集数据,按工位、设备、参数和时间追溯设备运行记录。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 在查询区按需要填写筛选条件:`PageCurrent`、`PageSize`、`PageCount`、`ItemCount`、`开始时间`、`结束时间`、`设备名称`、`参数名称`、`completion时间`、`equipmentType`、`dataname`、`日期`。 +3. 如果仍查不到数据,继续补充条件:`开始日期`、`设备`,或清空过窄条件后重新查询。 +4. 点击 `查询` 刷新列表;状态按钮会切换任务范围。 +5. 列表较多时使用分页区切换页码或调整每页条数,避免只检查第一页。 +6. 查询后先核对关键列:`设备名称`、`参数名称`、`设备编号`、`数值`、`单位`、`采集时间`。 +7. 保存或提交成功后重新点击查询,确认页面数据已通过 `MES_登录_工位与名称_查询`、`设备管理_设备数据_历史查询` 等后台过程更新。 + +**查询条件/输入项** +- `PageCurrent` +- `PageSize` +- `PageCount` +- `ItemCount` +- `开始时间` +- `结束时间` +- `设备名称` +- `参数名称` +- `completion时间` +- `equipmentType` +- `dataname` +- `日期` +- `开始日期` +- `设备` + +**结果表重点列** +- `设备名称` +- `参数名称` +- `设备编号` +- `数值` +- `单位` +- `采集时间` + +**页面按钮/状态/页签** +- `查询` + +**弹窗/表单重点项** +- 未识别到固定弹窗或表单项。 + +**后台处理/外部接口** +- `存储过程:MES_登录_工位与名称_查询` +- `存储过程:设备管理_设备数据_历史查询` + +**操作注意事项** +- 设备和采集数据用于看板、OEE 和报工分析,发现异常时应先确认设备编码和采集点位。 + +### 21.6 设备信息维护 + +页面路径:`src/views/DeviceManagement/DeviceInformation/index.vue` +所属模块:设备管理 +建议使用人员:设备管理员/生产主管 + +页面用途:该页面用于维护设备台账、设备属性、维修/工时/点检相关信息。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 在查询区按需要填写筛选条件:`equipmentName`、`equipmentType`、`opName`、`设备名称`、`设备型号`、`设备类型`、`加工工艺`、`工位号`、`工时单价`、`月设备加工能力`、`点检类型`、`工位`。 +3. 如果仍查不到数据,继续补充条件:`选择点检类型`,或清空过窄条件后重新查询。 +4. 点击 `查询` 刷新列表;状态按钮会切换任务范围。 +5. 列表较多时使用分页区切换页码或调整每页条数,避免只检查第一页。 +6. 查询后先核对关键列:`设备名称`、`设备型号`、`设备类型`、`加工工艺`、`工位`、`工时单价(元/小时)`、`月设备加工能力`、`点检类型名称`、`操作`。 +7. 按业务需要点击 `设备`,操作前先确认选中行和输入内容。 +8. 需要维护已有记录时先选中目标行,再点击或触发表格内 `确定`,修改字段后保存并等待成功提示。 +9. 需要维护已有记录时先选中目标行,再点击或触发表格内 `确定`,修改字段后保存并等待成功提示。 +10. 出现弹窗时按弹窗标题处理:`title`;弹窗关闭前确认必填项已保存。 +11. 弹窗或表单内重点填写:`设备名称`、`设备型号`、`设备类型`、`加工工艺`、`工位号`、`工时单价`、`月设备加工能力`、`点检类型`,提交前逐项核对。 +12. 保存或提交成功后重新点击查询,确认页面数据已通过 `点检类型_查询`、`工艺名称_查询`、`查询字典`、`设备管理_设备信息_查询`、`设备管理_设备信息_验证工位号是否重复` 等后台过程更新。 + +**查询条件/输入项** +- `equipmentName` +- `equipmentType` +- `opName` +- `设备名称` +- `设备型号` +- `设备类型` +- `加工工艺` +- `工位号` +- `工时单价` +- `月设备加工能力` +- `点检类型` +- `工位` +- `选择点检类型` + +**结果表重点列** +- `设备名称` +- `设备型号` +- `设备类型` +- `加工工艺` +- `工位` +- `工时单价(元/小时)` +- `月设备加工能力` +- `点检类型名称` +- `操作` + +**页面按钮/状态/页签** +- `查询` +- `设备` +- `取消` +- `确定` + +**弹窗/表单重点项** +- `title` +- `设备名称` +- `设备型号` +- `设备类型` +- `加工工艺` +- `工位号` +- `工时单价` +- `月设备加工能力` +- `点检类型` + +**后台处理/外部接口** +- `存储过程:点检类型_查询` +- `存储过程:工艺名称_查询` +- `存储过程:查询字典` +- `存储过程:设备管理_设备信息_查询` +- `存储过程:设备管理_设备信息_验证工位号是否重复` +- `存储过程:设备管理_设备信息_增加` +- `存储过程:设备管理_设备信息_编辑` +- `存储过程:设备管理_设备信息_删除` + +**操作注意事项** +- 设备和采集数据用于看板、OEE 和报工分析,发现异常时应先确认设备编码和采集点位。 + +### 21.7 设备实时数据 + +页面路径:`src/views/DeviceManagement/DeviceRealData/index.vue` +所属模块:设备管理 +建议使用人员:设备管理员/生产主管 + +页面用途:该页面用于查看设备实时数据或采集缓存数据,判断设备当前运行、报警和参数状态。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 在查询区按需要填写筛选条件:`PageCurrent`、`PageSize`、`PageCount`、`ItemCount`、`开始时间`、`结束时间`、`设备名称`、`参数名称`、`数据类型`、`completion时间`、`equipmentType`、`日期`。 +3. 如果仍查不到数据,继续补充条件:`开始日期`、`设备`,或清空过窄条件后重新查询。 +4. 点击 `查询` 刷新列表;状态按钮会切换任务范围。 +5. 列表较多时使用分页区切换页码或调整每页条数,避免只检查第一页。 +6. 查询后先核对关键列:`设备名称`、`参数名称`、`参数值`、`操作`、`开始时间`、`结束时间`、`状态`、`时长(m)`、`订单编号`、`加工时长`、`采集时间`。 +7. 保存或提交成功后重新点击查询,确认页面数据已通过 `设备管理_设备数据_工位信息_查询`、`设备管理_设备数据_统计数据查询`、`设备管理_设备数据_统计数据查询_通过类型` 等后台过程更新。 + +**查询条件/输入项** +- `PageCurrent` +- `PageSize` +- `PageCount` +- `ItemCount` +- `开始时间` +- `结束时间` +- `设备名称` +- `参数名称` +- `数据类型` +- `completion时间` +- `equipmentType` +- `日期` +- `开始日期` +- `设备` + +**结果表重点列** +- `设备名称` +- `参数名称` +- `参数值` +- `操作` +- `开始时间` +- `结束时间` +- `状态` +- `时长(m)` +- `订单编号` +- `加工时长` +- `采集时间` + +**页面按钮/状态/页签** +- `查询` + +**弹窗/表单重点项** +- 未识别到固定弹窗或表单项。 + +**后台处理/外部接口** +- `存储过程:设备管理_设备数据_工位信息_查询` +- `存储过程:设备管理_设备数据_统计数据查询` +- `存储过程:设备管理_设备数据_统计数据查询_通过类型` + +**操作注意事项** +- 设备和采集数据用于看板、OEE 和报工分析,发现异常时应先确认设备编码和采集点位。 + +## 21-5 计划排产 + +### 21.8 装配排产 + +页面路径:`src/views/PlanManagement/InstallMakePlan/index.vue` +所属模块:计划排产 +建议使用人员:计划员/生产主管 + +页面用途:该页面用于装配件排产,维护装配工位、人员、计划开始/完成、优先级、说明,并在排产完成时同步 SAP 或生成相关请求。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 先查看页签:`表单`、`日程`;需要表格处理时进入表单/列表页签,需要看时间排布时进入日程/看板页签。 +3. 在查询区按需要填写筛选条件:`订单号`、`物料类型`、`合同号`、`产品编码`、`产品名称`、`工序名称`、`性质`、`要求完工日期1`、`要求完工日期2`、`计划开始1`、`计划开始2`、`计划完成1`。 +4. 如果仍查不到数据,继续补充条件:`计划完成2`、`排产状态`、`指派对象`、`订单行号`、`订单拆分内码`、`派工特殊说明`、`指派对象编号`、`指派数量`、`计划开始时间`、`计划完成时间`,或清空过窄条件后重新查询。 +5. 点击 `查询` 刷新列表;状态按钮会切换任务范围。 +6. 列表较多时使用分页区切换页码或调整每页条数,避免只检查第一页。 +7. 查询后先核对关键列:`selection`、`序号`、`生产订单`、`计划号`、`物料编码`、`物料名称`、`计划数`、`要求完工日期`、`工序名称`、`性质`、`总工时`、`排产时间`。 +8. 继续横向滚动或展开表格,核对:`工序计划数`、`指派对象`、`指派数量`、`销售订单`、`计划开始`、`计划完成`、`最晚开始`、`派工`、`二次派工`、`排产`、`派工状态`、`优先级`、`未完成说明`、`派工特殊备注`。 +9. 需要推进业务时先选中目标行并核对数量、时间、人员、工位、物料和备注,再点击 `批量排产` 提交。 +10. 需要推进业务时先选中目标行并核对数量、时间、人员、工位、物料和备注,再点击 `排产完成` 提交。 +11. 需要维护已有记录时先选中目标行,再点击或触发表格内 `确定`,修改字段后保存并等待成功提示。 +12. 需要推进业务时先选中目标行并核对数量、时间、人员、工位、物料和备注,再点击 `派工` 提交。 +13. 需要推进业务时先选中目标行并核对数量、时间、人员、工位、物料和备注,再点击 `计划排产` 提交。 +14. 需要维护已有记录时先选中目标行,再点击或触发表格内 `编辑`,修改字段后保存并等待成功提示。 +15. 需要维护已有记录时先选中目标行,再点击或触发表格内 `确定`,修改字段后保存并等待成功提示。 +16. 需要推进业务时先选中目标行并核对数量、时间、人员、工位、物料和备注,再点击 `派工` 提交。 +17. 需要维护已有记录时先选中目标行,再点击或触发表格内 `编辑`,修改字段后保存并等待成功提示。 +18. 按业务需要点击 `取 消`,操作前先确认选中行和输入内容。 +19. 出现弹窗时按弹窗标题处理:`编辑备注信息`;弹窗关闭前确认必填项已保存。 +20. 弹窗或表单内重点填写:`优先级`、`未完成说明`、`派工特殊备注`,提交前逐项核对。 +21. 进入日程页后,单击任务查看详情;拖拽任务可调整计划开始时间,拉伸任务可调整计划完成时间,系统提示确认后才会保存。 +22. 日程保存失败或取消时任务会恢复原日期;保存成功后回到表单页重新查询,核对计划开始和计划完成是否同步。 +23. 保存或提交成功后重新点击查询,确认页面数据已通过 `计划排产_生产订单_已排产订单查询`、`MES_登录_工位与名称_查询`、`MES_OrderPlanned_Queryzp`、`Prog_MES_LoadStations`、`系统管理_人员管理_所有有效人员查询` 等后台过程更新。 +24. 涉及 SAP/WMS 接口时,必须查看页面成功或失败提示;失败时先记录错误信息,不要连续重复提交同一单据。 + +**查询条件/输入项** +- `订单号` +- `物料类型` +- `合同号` +- `产品编码` +- `产品名称` +- `工序名称` +- `性质` +- `要求完工日期1` +- `要求完工日期2` +- `计划开始1` +- `计划开始2` +- `计划完成1` +- `计划完成2` +- `排产状态` +- `指派对象` +- `订单行号` +- `订单拆分内码` +- `派工特殊说明` +- `指派对象编号` +- `指派数量` +- `计划开始时间` +- `计划完成时间` + +**结果表重点列** +- `selection` +- `序号` +- `生产订单` +- `计划号` +- `物料编码` +- `物料名称` +- `计划数` +- `要求完工日期` +- `工序名称` +- `性质` +- `总工时` +- `排产时间` +- `工序计划数` +- `指派对象` +- `指派数量` +- `销售订单` +- `计划开始` +- `计划完成` +- `最晚开始` +- `派工` +- `二次派工` +- `排产` +- `派工状态` +- `优先级` +- `未完成说明` +- `派工特殊备注` +- `编辑` +- `占用情况` +- `最后编辑人` +- `最后编辑时间` + +**页面按钮/状态/页签** +- `查询` +- `批量排产` +- `排产完成` +- `确定` +- `派工` +- `计划排产` +- `编辑` +- `取 消` +- `确 定` +- `表单` +- `日程` + +**弹窗/表单重点项** +- `编辑备注信息` +- `优先级` +- `未完成说明` +- `派工特殊备注` + +**后台处理/外部接口** +- `存储过程:计划排产_生产订单_已排产订单查询` +- `存储过程:MES_登录_工位与名称_查询` +- `存储过程:MES_OrderPlanned_Queryzp` +- `存储过程:Prog_MES_LoadStations` +- `存储过程:系统管理_人员管理_所有有效人员查询` +- `存储过程:MES_OrderPlanned_EditTaskPlanned` +- `存储过程:计划排产_二次派工` +- `存储过程:计划排产_派工` +- `存储过程:MES_OrderPlanned_SingleTaskPlanned` +- `存储过程:MES_OrderPlanned_Finish` +- `存储过程:MES_OrderPlanned_DescriptionEdit` +- `存储过程:计划排产_自制件_日程时间修改` +- `接口:postB1 /PurchaseRequests` +- `接口:patchB1 /ProductionOrders(` + +**操作注意事项** +- 排产、派工和计划时间会影响生产看板、及时开工统计和 SAP 生产订单日期,提交前必须核对。 +- 该页存在 SAP/WMS 调用,失败时应记录返回提示并确认是否已经生成外部单据。 +- 日程拖拽属于直接改计划时间的操作,拖拽前应确认任务未被现场执行锁定。 + +### 21.9 装配已排产 + +页面路径:`src/views/PlanManagement/InstallMakePlanDo/index.vue` +所属模块:计划排产 +建议使用人员:计划员/生产主管 + +页面用途:该页面用于装配件排产,维护装配工位、人员、计划开始/完成、优先级、说明,并在排产完成时同步 SAP 或生成相关请求。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 先查看页签:`表单`、`日程`;需要表格处理时进入表单/列表页签,需要看时间排布时进入日程/看板页签。 +3. 在查询区按需要填写筛选条件:`订单号`、`物料类型`、`合同号`、`产品编码`、`产品名称`、`工序名称`、`性质`、`要求完工日期1`、`要求完工日期2`、`计划开始1`、`计划开始2`、`计划完成1`。 +4. 如果仍查不到数据,继续补充条件:`计划完成2`、`排产状态`、`指派对象`、`订单行号`、`订单拆分内码`、`派工特殊说明`、`指派对象编号`、`指派数量`、`计划开始时间`、`计划完成时间`,或清空过窄条件后重新查询。 +5. 点击 `查询` 刷新列表;状态按钮会切换任务范围。 +6. 列表较多时使用分页区切换页码或调整每页条数,避免只检查第一页。 +7. 查询后先核对关键列:`selection`、`序号`、`生产订单`、`计划号`、`物料编码`、`物料名称`、`计划数`、`要求完工日期`、`工序名称`、`性质`、`总工时`、`排产时间`。 +8. 继续横向滚动或展开表格,核对:`工序计划数`、`指派对象`、`指派数量`、`销售订单`、`计划开始`、`计划完成`、`最晚开始`、`派工`、`二次派工`、`排产`、`派工状态`、`优先级`、`未完成说明`、`派工特殊备注`。 +9. 需要推进业务时先选中目标行并核对数量、时间、人员、工位、物料和备注,再点击 `批量排产` 提交。 +10. 需要推进业务时先选中目标行并核对数量、时间、人员、工位、物料和备注,再点击 `排产完成` 提交。 +11. 需要维护已有记录时先选中目标行,再点击或触发表格内 `确定`,修改字段后保存并等待成功提示。 +12. 需要推进业务时先选中目标行并核对数量、时间、人员、工位、物料和备注,再点击 `派工` 提交。 +13. 需要推进业务时先选中目标行并核对数量、时间、人员、工位、物料和备注,再点击 `计划排产` 提交。 +14. 需要维护已有记录时先选中目标行,再点击或触发表格内 `编辑`,修改字段后保存并等待成功提示。 +15. 需要维护已有记录时先选中目标行,再点击或触发表格内 `确定`,修改字段后保存并等待成功提示。 +16. 需要推进业务时先选中目标行并核对数量、时间、人员、工位、物料和备注,再点击 `派工` 提交。 +17. 需要维护已有记录时先选中目标行,再点击或触发表格内 `编辑`,修改字段后保存并等待成功提示。 +18. 按业务需要点击 `取 消`,操作前先确认选中行和输入内容。 +19. 出现弹窗时按弹窗标题处理:`编辑备注信息`;弹窗关闭前确认必填项已保存。 +20. 弹窗或表单内重点填写:`优先级`、`未完成说明`、`派工特殊备注`,提交前逐项核对。 +21. 进入日程页后,单击任务查看详情;拖拽任务可调整计划开始时间,拉伸任务可调整计划完成时间,系统提示确认后才会保存。 +22. 日程保存失败或取消时任务会恢复原日期;保存成功后回到表单页重新查询,核对计划开始和计划完成是否同步。 +23. 保存或提交成功后重新点击查询,确认页面数据已通过 `计划排产_生产订单_已排产订单查询`、`MES_登录_工位与名称_查询`、`MES_OrderPlanned_Queryzp`、`Prog_MES_LoadStations`、`系统管理_人员管理_所有有效人员查询` 等后台过程更新。 +24. 涉及 SAP/WMS 接口时,必须查看页面成功或失败提示;失败时先记录错误信息,不要连续重复提交同一单据。 + +**查询条件/输入项** +- `订单号` +- `物料类型` +- `合同号` +- `产品编码` +- `产品名称` +- `工序名称` +- `性质` +- `要求完工日期1` +- `要求完工日期2` +- `计划开始1` +- `计划开始2` +- `计划完成1` +- `计划完成2` +- `排产状态` +- `指派对象` +- `订单行号` +- `订单拆分内码` +- `派工特殊说明` +- `指派对象编号` +- `指派数量` +- `计划开始时间` +- `计划完成时间` + +**结果表重点列** +- `selection` +- `序号` +- `生产订单` +- `计划号` +- `物料编码` +- `物料名称` +- `计划数` +- `要求完工日期` +- `工序名称` +- `性质` +- `总工时` +- `排产时间` +- `工序计划数` +- `指派对象` +- `指派数量` +- `销售订单` +- `计划开始` +- `计划完成` +- `最晚开始` +- `派工` +- `二次派工` +- `排产` +- `派工状态` +- `优先级` +- `未完成说明` +- `派工特殊备注` +- `编辑` +- `占用情况` +- `最后编辑人` +- `最后编辑时间` + +**页面按钮/状态/页签** +- `查询` +- `批量排产` +- `排产完成` +- `确定` +- `派工` +- `计划排产` +- `编辑` +- `取 消` +- `确 定` +- `表单` +- `日程` + +**弹窗/表单重点项** +- `编辑备注信息` +- `优先级` +- `未完成说明` +- `派工特殊备注` + +**后台处理/外部接口** +- `存储过程:计划排产_生产订单_已排产订单查询` +- `存储过程:MES_登录_工位与名称_查询` +- `存储过程:MES_OrderPlanned_Queryzp` +- `存储过程:Prog_MES_LoadStations` +- `存储过程:系统管理_人员管理_所有有效人员查询` +- `存储过程:MES_OrderPlanned_EditTaskPlanned` +- `存储过程:计划排产_二次派工` +- `存储过程:计划排产_派工` +- `存储过程:MES_OrderPlanned_SingleTaskPlanned` +- `存储过程:MES_OrderPlanned_Finish` +- `存储过程:MES_OrderPlanned_DescriptionEdit` +- `存储过程:计划排产_自制件_日程时间修改` +- `接口:postB1 /PurchaseRequests` +- `接口:patchB1 /ProductionOrders(` + +**操作注意事项** +- 排产、派工和计划时间会影响生产看板、及时开工统计和 SAP 生产订单日期,提交前必须核对。 +- 该页存在 SAP/WMS 调用,失败时应记录返回提示并确认是否已经生成外部单据。 +- 日程拖拽属于直接改计划时间的操作,拖拽前应确认任务未被现场执行锁定。 + +### 21.10 生产订单关闭 + +页面路径:`src/views/PlanManagement/PlannOrderClose/index.vue` +所属模块:计划排产 +建议使用人员:计划员/生产主管 + +页面用途:该页面用于关闭生产订单,用户查询待关闭订单后执行 MES/SAP 关闭动作。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 在查询区按需要填写筛选条件:`订单号`、`单据状态`、`属性`、`equipmentName`、`equipmentType`、`orderType`、`opName`、`订单编号`、`工位`。 +3. 点击 `查询` 刷新列表;状态按钮会切换任务范围。 +4. 列表较多时使用分页区切换页码或调整每页条数,避免只检查第一页。 +5. 查询后先核对关键列:`订单编号`、`合同号`、`产品编码`、`产品名称`、`计划数量`、`入库数量`、`终检不合格`、`终检合格`、`收检合格`、`收检不合格`、`操作`。 +6. 按业务需要点击 `确认`,操作前先确认选中行和输入内容。 +7. 需要推进业务时先选中目标行并核对数量、时间、人员、工位、物料和备注,再点击 `关闭` 提交。 +8. 保存或提交成功后重新点击查询,确认页面数据已通过 `计划排产_生产订单关闭_查询全部订单`、`计划排产_生产订单关闭_关闭订单`、`计划排产_生产订单关闭_确认订单` 等后台过程更新。 +9. 涉及 SAP/WMS 接口时,必须查看页面成功或失败提示;失败时先记录错误信息,不要连续重复提交同一单据。 + +**查询条件/输入项** +- `订单号` +- `单据状态` +- `属性` +- `equipmentName` +- `equipmentType` +- `orderType` +- `opName` +- `订单编号` +- `工位` + +**结果表重点列** +- `订单编号` +- `合同号` +- `产品编码` +- `产品名称` +- `计划数量` +- `入库数量` +- `终检不合格` +- `终检合格` +- `收检合格` +- `收检不合格` +- `操作` + +**页面按钮/状态/页签** +- `查询` +- `确认` +- `关闭` + +**弹窗/表单重点项** +- 未识别到固定弹窗或表单项。 + +**后台处理/外部接口** +- `存储过程:计划排产_生产订单关闭_查询全部订单` +- `存储过程:计划排产_生产订单关闭_关闭订单` +- `存储过程:计划排产_生产订单关闭_确认订单` +- `接口:patchB1 /ProductionOrders(` + +**操作注意事项** +- 排产、派工和计划时间会影响生产看板、及时开工统计和 SAP 生产订单日期,提交前必须核对。 +- 该页存在 SAP/WMS 调用,失败时应记录返回提示并确认是否已经生成外部单据。 + +### 21.11 计划外壳跟踪 + +页面路径:`src/views/PlanManagement/PlanShell/index.vue` +所属模块:计划排产 +建议使用人员:计划员/生产主管 + +页面用途:该页面用于计划外壳和计划跟踪,集中查看订单计划、齐套、缺料、发货或关闭相关信息。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 在查询区按需要填写筛选条件:`ItemCode`、`订单号`、`物料类型`、`合同号`、`产品编码`、`产品名称`、`工序名称`、`计划开始`、`计划完成`、`排产状态`、`指派对象`、`计划号`。 +3. 如果仍查不到数据,继续补充条件:`发货状态`、`齐套`、`检验状态`、`发料状态`、`自制件属性`、`是否外协`、`订单行号`、`订单拆分内码`、`优先级`、`未完成说明`,或清空过窄条件后重新查询。 +4. 点击 `查询` 刷新列表;状态按钮会切换任务范围。 +5. 查询后先核对关键列:`expand`、`序号`、`工序名称`、`计划数量`、`指派对象`、`开始时间`、`结束时间`、`完成进度`、`完成数量`、`合格数`、`不良数`、`任务状态`。 +6. 继续横向滚动或展开表格,核对:`加工状态`、`操作`、`发货通知`、`销售订单`、`计划号`、`生产订单`、`产品名称`、`产品编码`、`入库数量`、`要求完工日`、`要求发货日`、`预计齐套时间`、`外协`、`齐套`。 +7. 按业务需要点击 `缺料`,操作前先确认选中行和输入内容。 +8. 需要推进业务时先选中目标行并核对数量、时间、人员、工位、物料和备注,再点击 `关闭` 提交。 +9. 出现弹窗时按弹窗标题处理:`缺料单`;弹窗关闭前确认必填项已保存。 +10. 保存或提交成功后重新点击查询,确认页面数据已通过 `生产管理_装配中心_缺料查询`、`计划排产_查询计划信息`、`MES_OrderPlanned_DescriptionEdit`、`Prog_MES_LoadStations` 等后台过程更新。 + +**查询条件/输入项** +- `ItemCode` +- `订单号` +- `物料类型` +- `合同号` +- `产品编码` +- `产品名称` +- `工序名称` +- `计划开始` +- `计划完成` +- `排产状态` +- `指派对象` +- `计划号` +- `发货状态` +- `齐套` +- `检验状态` +- `发料状态` +- `自制件属性` +- `是否外协` +- `订单行号` +- `订单拆分内码` +- `优先级` +- `未完成说明` + +**结果表重点列** +- `expand` +- `序号` +- `工序名称` +- `计划数量` +- `指派对象` +- `开始时间` +- `结束时间` +- `完成进度` +- `完成数量` +- `合格数` +- `不良数` +- `任务状态` +- `加工状态` +- `操作` +- `发货通知` +- `销售订单` +- `计划号` +- `生产订单` +- `产品名称` +- `产品编码` +- `入库数量` +- `要求完工日` +- `要求发货日` +- `预计齐套时间` +- `外协` +- `齐套` +- `拣配状态` +- `发料状态` +- `装配开工` +- `送检数量` +- `终检` +- `工艺` +- `排产` +- `优先级` + +**页面按钮/状态/页签** +- `查询` +- `缺料` +- `关闭` + +**弹窗/表单重点项** +- `缺料单` + +**后台处理/外部接口** +- `存储过程:生产管理_装配中心_缺料查询` +- `存储过程:计划排产_查询计划信息` +- `存储过程:MES_OrderPlanned_DescriptionEdit` +- `存储过程:Prog_MES_LoadStations` + +**操作注意事项** +- 排产、派工和计划时间会影响生产看板、及时开工统计和 SAP 生产订单日期,提交前必须核对。 + +### 21.12 装配优先级调整 + +页面路径:`src/views/PlanManagement/priorityinstall/index.vue` +所属模块:计划排产 +建议使用人员:计划员/生产主管 + +页面用途:该页面用于装配计划优先级和日程调整,支持表单和日程方式查看重点任务。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 先查看页签:`表单`、`日程`;需要表格处理时进入表单/列表页签,需要看时间排布时进入日程/看板页签。 +3. 在查询区按需要填写筛选条件:`订单号`、`物料类型`、`合同号`、`产品编码`、`产品名称`、`工序名称`、`计划开始1`、`计划开始2`、`排产状态`、`指派对象`、`订单行号`、`订单拆分内码`。 +4. 如果仍查不到数据,继续补充条件:`doneorder编号`、`donecontract编号`、`doneproductCode`、`doneproductName`、`doneprocessName`、`planStart时间`、`生产订单`、`销售订单`、`物料编码`、`物料名称`,或清空过窄条件后重新查询。 +5. 点击 `查询` 刷新列表;状态按钮会切换任务范围。 +6. 列表较多时使用分页区切换页码或调整每页条数,避免只检查第一页。 +7. 查询后先核对关键列:`selection`、`生产订单`、`计划号`、`物料编码`、`物料名称`、`计划数`、`要求完工日期`、`工时`、`工序名称`、`指派对象`、`指派数量`、`计划开始`。 +8. 继续横向滚动或展开表格,核对:`计划完成`。 +9. 按业务需要点击 `月`,操作前先确认选中行和输入内容。 +10. 按业务需要点击 `周`,操作前先确认选中行和输入内容。 +11. 按业务需要点击 `日`,操作前先确认选中行和输入内容。 +12. 按业务需要点击 `今天`,操作前先确认选中行和输入内容。 +13. 进入日程页后,单击任务查看详情;拖拽任务可调整计划开始时间,拉伸任务可调整计划完成时间,系统提示确认后才会保存。 +14. 日程保存失败或取消时任务会恢复原日期;保存成功后回到表单页重新查询,核对计划开始和计划完成是否同步。 +15. 保存或提交成功后重新点击查询,确认页面数据已通过 `MES_OrderPlanned_Queryzp`、`MES_OrderPlanned_EditTaskPlanned` 等后台过程更新。 + +**查询条件/输入项** +- `订单号` +- `物料类型` +- `合同号` +- `产品编码` +- `产品名称` +- `工序名称` +- `计划开始1` +- `计划开始2` +- `排产状态` +- `指派对象` +- `订单行号` +- `订单拆分内码` +- `doneorder编号` +- `donecontract编号` +- `doneproductCode` +- `doneproductName` +- `doneprocessName` +- `planStart时间` +- `生产订单` +- `销售订单` +- `物料编码` +- `物料名称` + +**结果表重点列** +- `selection` +- `生产订单` +- `计划号` +- `物料编码` +- `物料名称` +- `计划数` +- `要求完工日期` +- `工时` +- `工序名称` +- `指派对象` +- `指派数量` +- `计划开始` +- `计划完成` + +**页面按钮/状态/页签** +- `查询` +- `月` +- `周` +- `日` +- `今天` +- `表单` +- `日程` + +**弹窗/表单重点项** +- 未识别到固定弹窗或表单项。 + +**后台处理/外部接口** +- `存储过程:MES_OrderPlanned_Queryzp` +- `存储过程:MES_OrderPlanned_EditTaskPlanned` + +**操作注意事项** +- 排产、派工和计划时间会影响生产看板、及时开工统计和 SAP 生产订单日期,提交前必须核对。 +- 日程拖拽属于直接改计划时间的操作,拖拽前应确认任务未被现场执行锁定。 + +### 21.13 机加排产 + +页面路径:`src/views/PlanManagement/SelfMakePlan/index.vue` +所属模块:计划排产 +建议使用人员:计划员/生产主管 + +页面用途:该页面用于机加/自制件排产前准备,查询生产订单工序任务并维护计划、工位、数量和说明后确认排产。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 先查看页签:`表单`、`日程`;需要表格处理时进入表单/列表页签,需要看时间排布时进入日程/看板页签。 +3. 在查询区按需要填写筛选条件:`订单号`、`物料类型`、`合同号`、`产品编码`、`产品名称`、`工序名称`、`性质`、`要求完工日期1`、`要求完工日期2`、`计划开始1`、`计划开始2`、`计划完成1`。 +4. 如果仍查不到数据,继续补充条件:`计划完成2`、`排产状态`、`指派对象`、`订单行号`、`订单拆分内码`、`派工特殊说明`、`指派对象编号`、`指派数量`、`计划开始时间`、`计划完成时间`,或清空过窄条件后重新查询。 +5. 点击 `查询` 刷新列表;状态按钮会切换任务范围。 +6. 列表较多时使用分页区切换页码或调整每页条数,避免只检查第一页。 +7. 查询后先核对关键列:`selection`、`序号`、`生产订单`、`计划号`、`物料编码`、`物料名称`、`计划数`、`要求完工日期`、`工序名称`、`性质`、`总工时`、`排产时间`。 +8. 继续横向滚动或展开表格,核对:`工序计划数`、`指派对象`、`指派数量`、`计划开始`、`计划完成`、`最晚开始`、`派工`、`二次派工`、`排产`、`派工状态`、`优先级`、`未完成说明`、`派工特殊备注`、`编辑`。 +9. 需要推进业务时先选中目标行并核对数量、时间、人员、工位、物料和备注,再点击 `批量排产` 提交。 +10. 需要推进业务时先选中目标行并核对数量、时间、人员、工位、物料和备注,再点击 `排产完成` 提交。 +11. 需要维护已有记录时先选中目标行,再点击或触发表格内 `确定`,修改字段后保存并等待成功提示。 +12. 需要推进业务时先选中目标行并核对数量、时间、人员、工位、物料和备注,再点击 `派工` 提交。 +13. 需要推进业务时先选中目标行并核对数量、时间、人员、工位、物料和备注,再点击 `计划排产` 提交。 +14. 需要维护已有记录时先选中目标行,再点击或触发表格内 `编辑`,修改字段后保存并等待成功提示。 +15. 需要维护已有记录时先选中目标行,再点击或触发表格内 `确定`,修改字段后保存并等待成功提示。 +16. 需要推进业务时先选中目标行并核对数量、时间、人员、工位、物料和备注,再点击 `派工` 提交。 +17. 需要维护已有记录时先选中目标行,再点击或触发表格内 `编辑`,修改字段后保存并等待成功提示。 +18. 按业务需要点击 `取 消`,操作前先确认选中行和输入内容。 +19. 出现弹窗时按弹窗标题处理:`编辑备注信息`;弹窗关闭前确认必填项已保存。 +20. 弹窗或表单内重点填写:`优先级`、`未完成说明`、`派工特殊备注`,提交前逐项核对。 +21. 进入日程页后,单击任务查看详情;拖拽任务可调整计划开始时间,拉伸任务可调整计划完成时间,系统提示确认后才会保存。 +22. 日程保存失败或取消时任务会恢复原日期;保存成功后回到表单页重新查询,核对计划开始和计划完成是否同步。 +23. 保存或提交成功后重新点击查询,确认页面数据已通过 `计划排产_生产订单_已排产订单查询`、`MES_登录_工位与名称_查询`、`MES_OrderPlanned_Query`、`Prog_MES_LoadStations`、`系统管理_人员管理_所有有效人员查询` 等后台过程更新。 +24. 涉及 SAP/WMS 接口时,必须查看页面成功或失败提示;失败时先记录错误信息,不要连续重复提交同一单据。 + +**查询条件/输入项** +- `订单号` +- `物料类型` +- `合同号` +- `产品编码` +- `产品名称` +- `工序名称` +- `性质` +- `要求完工日期1` +- `要求完工日期2` +- `计划开始1` +- `计划开始2` +- `计划完成1` +- `计划完成2` +- `排产状态` +- `指派对象` +- `订单行号` +- `订单拆分内码` +- `派工特殊说明` +- `指派对象编号` +- `指派数量` +- `计划开始时间` +- `计划完成时间` + +**结果表重点列** +- `selection` +- `序号` +- `生产订单` +- `计划号` +- `物料编码` +- `物料名称` +- `计划数` +- `要求完工日期` +- `工序名称` +- `性质` +- `总工时` +- `排产时间` +- `工序计划数` +- `指派对象` +- `指派数量` +- `计划开始` +- `计划完成` +- `最晚开始` +- `派工` +- `二次派工` +- `排产` +- `派工状态` +- `优先级` +- `未完成说明` +- `派工特殊备注` +- `编辑` +- `占用情况` +- `销售订单` +- `最后编辑人` +- `最后编辑时间` + +**页面按钮/状态/页签** +- `查询` +- `批量排产` +- `排产完成` +- `确定` +- `派工` +- `计划排产` +- `编辑` +- `取 消` +- `确 定` +- `表单` +- `日程` + +**弹窗/表单重点项** +- `编辑备注信息` +- `优先级` +- `未完成说明` +- `派工特殊备注` + +**后台处理/外部接口** +- `存储过程:计划排产_生产订单_已排产订单查询` +- `存储过程:MES_登录_工位与名称_查询` +- `存储过程:MES_OrderPlanned_Query` +- `存储过程:Prog_MES_LoadStations` +- `存储过程:系统管理_人员管理_所有有效人员查询` +- `存储过程:MES_OrderPlanned_EditTaskPlanned` +- `存储过程:计划排产_二次派工` +- `存储过程:计划排产_派工` +- `存储过程:MES_OrderPlanned_SingleTaskPlanned` +- `存储过程:MES_OrderPlanned_Finish` +- `存储过程:MES_OrderPlanned_DescriptionEdit` +- `存储过程:计划排产_自制件_日程时间修改` +- `接口:patchB1 /ProductionOrders(` + +**操作注意事项** +- 排产、派工和计划时间会影响生产看板、及时开工统计和 SAP 生产订单日期,提交前必须核对。 +- 该页存在 SAP/WMS 调用,失败时应记录返回提示并确认是否已经生成外部单据。 +- 日程拖拽属于直接改计划时间的操作,拖拽前应确认任务未被现场执行锁定。 + +### 21.14 机加待排产 + +页面路径:`src/views/PlanManagement/SelfMakePlando/index.vue` +所属模块:计划排产 +建议使用人员:计划员/生产主管 + +页面用途:该页面用于机加/自制件待排产任务处理,支持表单排产、日程拖拽调整、部分派工、批量排产、二次派工、原料状态和图纸查看。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 先查看页签:`表单`、`日程`;需要表格处理时进入表单/列表页签,需要看时间排布时进入日程/看板页签。 +3. 在查询区按需要填写筛选条件:`订单编号`、`订单号`、`物料类型`、`合同号`、`产品编码`、`产品名称`、`工序名称`、`性质`、`要求完工日期1`、`要求完工日期2`、`计划开始1`、`计划开始2`。 +4. 如果仍查不到数据,继续补充条件:`计划完成1`、`计划完成2`、`排产状态`、`指派对象`、`订单行号`、`订单拆分内码`、`派工特殊说明`、`指派对象编号`、`指派数量`、`计划开始时间`,或清空过窄条件后重新查询。 +5. 点击 `查询` 刷新列表;状态按钮会切换任务范围。 +6. 列表较多时使用分页区切换页码或调整每页条数,避免只检查第一页。 +7. 查询后先核对关键列:`selection`、`序号`、`生产订单`、`计划号`、`物料编码`、`物料名称`、`计划数`、`要求完工日期`、`工时`、`工序名称`、`性质`、`排产时间`。 +8. 继续横向滚动或展开表格,核对:`工序计划数`、`指派对象`、`指派数量`、`计划开始`、`计划完成`、`外协分组`、`原料状态`、`图纸`、`备注`、`未完成说明`、`派工特殊备注`、`编辑`、`二次派工`、`最晚开始`。 +9. 需要推进业务时先选中目标行并核对数量、时间、人员、工位、物料和备注,再点击 `批量排产` 提交。 +10. 需要推进业务时先选中目标行并核对数量、时间、人员、工位、物料和备注,再点击 `排产完成` 提交。 +11. 需要维护已有记录时先选中目标行,再点击或触发表格内 `确定`,修改字段后保存并等待成功提示。 +12. 需要查看明细时点击 `查看`,在弹窗或新区域核对图纸、明细、进度、记录或关联单据。 +13. 需要查看明细时点击 `零件图纸`,在弹窗或新区域核对图纸、明细、进度、记录或关联单据。 +14. 需要查看明细时点击 `工艺图纸`,在弹窗或新区域核对图纸、明细、进度、记录或关联单据。 +15. 需要维护已有记录时先选中目标行,再点击或触发表格内 `编辑`,修改字段后保存并等待成功提示。 +16. 需要推进业务时先选中目标行并核对数量、时间、人员、工位、物料和备注,再点击 `计划排产` 提交。 +17. 需要维护已有记录时先选中目标行,再点击或触发表格内 `编辑`,修改字段后保存并等待成功提示。 +18. 按业务需要点击 `取 消`,操作前先确认选中行和输入内容。 +19. 出现弹窗时按弹窗标题处理:`编辑备注信息`、`原料信息`、`图纸`;弹窗关闭前确认必填项已保存。 +20. 弹窗或表单内重点填写:`优先级`、`未完成说明`、`派工特殊备注`,提交前逐项核对。 +21. 涉及上传时先选择正确文件,再点击上传/保存;上传后重新查询,确认文件名、版本、上传时间或预览内容已显示。 +22. 进入日程页后,单击任务查看详情;拖拽任务可调整计划开始时间,拉伸任务可调整计划完成时间,系统提示确认后才会保存。 +23. 日程保存失败或取消时任务会恢复原日期;保存成功后回到表单页重新查询,核对计划开始和计划完成是否同步。 +24. 保存或提交成功后重新点击查询,确认页面数据已通过 `工艺管理_图纸维护_查看图纸`、`工艺管理_工艺维护_查看图纸`、`工艺管理_获取物料原料信息`、`计划排产_生产订单_已排产订单查询`、`MES_登录_工位与名称_查询` 等后台过程更新。 +25. 涉及 SAP/WMS 接口时,必须查看页面成功或失败提示;失败时先记录错误信息,不要连续重复提交同一单据。 +26. 在 `指派数量` 中输入小于计划数的数量时,表示本次只派出部分数量,剩余数量需要继续跟踪和后续派工。 +27. 点击 `批量排产` 前应选择同一生产订单的多道工序,系统会按订单行号排序并继承上一道工序的部分计划信息。 +28. 点击 `排产完成` 后,系统校验指派对象、指派数量、计划开始、计划完成,并同步生产订单最早开始和最晚完成。 + +**查询条件/输入项** +- `订单编号` +- `订单号` +- `物料类型` +- `合同号` +- `产品编码` +- `产品名称` +- `工序名称` +- `性质` +- `要求完工日期1` +- `要求完工日期2` +- `计划开始1` +- `计划开始2` +- `计划完成1` +- `计划完成2` +- `排产状态` +- `指派对象` +- `订单行号` +- `订单拆分内码` +- `派工特殊说明` +- `指派对象编号` +- `指派数量` +- `计划开始时间` + +**结果表重点列** +- `selection` +- `序号` +- `生产订单` +- `计划号` +- `物料编码` +- `物料名称` +- `计划数` +- `要求完工日期` +- `工时` +- `工序名称` +- `性质` +- `排产时间` +- `工序计划数` +- `指派对象` +- `指派数量` +- `计划开始` +- `计划完成` +- `外协分组` +- `原料状态` +- `图纸` +- `备注` +- `未完成说明` +- `派工特殊备注` +- `编辑` +- `二次派工` +- `最晚开始` +- `排产` +- `派工状态` +- `优先级` +- `占用情况` +- `销售订单` +- `最后编辑人` +- `最后编辑时间` +- `基本数量` + +**页面按钮/状态/页签** +- `查询` +- `批量排产` +- `排产完成` +- `确定` +- `查看` +- `零件图纸` +- `工艺图纸` +- `编辑` +- `计划排产` +- `取 消` +- `确 定` +- `关闭` +- `表单` +- `日程` + +**弹窗/表单重点项** +- `编辑备注信息` +- `原料信息` +- `图纸` +- `优先级` +- `未完成说明` +- `派工特殊备注` + +**后台处理/外部接口** +- `存储过程:工艺管理_图纸维护_查看图纸` +- `存储过程:工艺管理_工艺维护_查看图纸` +- `存储过程:工艺管理_获取物料原料信息` +- `存储过程:计划排产_生产订单_已排产订单查询` +- `存储过程:MES_登录_工位与名称_查询` +- `存储过程:MES_OrderPlanned_Query` +- `存储过程:Prog_MES_LoadStations` +- `存储过程:系统管理_人员管理_所有有效人员查询` +- `存储过程:MES_OrderPlanned_EditTaskPlanned` +- `存储过程:计划排产_二次派工` +- `存储过程:计划排产_派工` +- `存储过程:MES_OrderPlanned_SingleTaskPlanned` +- `存储过程:计划排产_外协分组` +- `存储过程:MES_OrderPlanned_Finish` +- `存储过程:MES_OrderPlanned_DescriptionEdit` +- `存储过程:计划排产_自制件_日程时间修改` +- `接口:patchB1 /ProductionOrders(` + +**操作注意事项** +- 排产、派工和计划时间会影响生产看板、及时开工统计和 SAP 生产订单日期,提交前必须核对。 +- 该页存在 SAP/WMS 调用,失败时应记录返回提示并确认是否已经生成外部单据。 +- 日程拖拽属于直接改计划时间的操作,拖拽前应确认任务未被现场执行锁定。 + +### 21.15 机加已排产 + +页面路径:`src/views/PlanManagement/SelfMakePlandone/index.vue` +所属模块:计划排产 +建议使用人员:计划员/生产主管 + +页面用途:该页面用于机加/自制件已排产任务查看和调整,支持计划时间、指派对象、指派数量、最晚开始、二次派工和备注维护。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 先查看页签:`表单`、`日程`;需要表格处理时进入表单/列表页签,需要看时间排布时进入日程/看板页签。 +3. 在查询区按需要填写筛选条件:`订单编号`、`订单号`、`物料类型`、`合同号`、`产品编码`、`产品名称`、`工序名称`、`性质`、`要求完工日期1`、`要求完工日期2`、`计划开始1`、`计划开始2`。 +4. 如果仍查不到数据,继续补充条件:`计划完成1`、`计划完成2`、`排产状态`、`指派对象`、`订单行号`、`订单拆分内码`、`派工特殊说明`、`指派对象编号`、`指派数量`、`计划开始时间`,或清空过窄条件后重新查询。 +5. 点击 `查询` 刷新列表;状态按钮会切换任务范围。 +6. 列表较多时使用分页区切换页码或调整每页条数,避免只检查第一页。 +7. 查询后先核对关键列:`selection`、`生产订单`、`计划号`、`物料编码`、`物料名称`、`计划数`、`要求完工日期`、`工时`、`工序名称`、`指派对象`、`指派数量`、`计划开始`。 +8. 继续横向滚动或展开表格,核对:`计划完成`、`外协分组`、`原料状态`、`备注`、`最晚开始`、`派工`、`二次派工`、`优先级`、`未完成说明`、`派工特殊备注`、`编辑`、`占用情况`、`销售订单`、`最后编辑人`。 +9. 需要维护已有记录时先选中目标行,再点击或触发表格内 `确定`,修改字段后保存并等待成功提示。 +10. 需要查看明细时点击 `查看`,在弹窗或新区域核对图纸、明细、进度、记录或关联单据。 +11. 需要推进业务时先选中目标行并核对数量、时间、人员、工位、物料和备注,再点击 `派工` 提交。 +12. 需要维护已有记录时先选中目标行,再点击或触发表格内 `编辑`,修改字段后保存并等待成功提示。 +13. 按业务需要点击 `取 消`,操作前先确认选中行和输入内容。 +14. 需要维护已有记录时先选中目标行,再点击或触发表格内 `确 定`,修改字段后保存并等待成功提示。 +15. 出现弹窗时按弹窗标题处理:`编辑备注信息`、`原料信息`;弹窗关闭前确认必填项已保存。 +16. 弹窗或表单内重点填写:`优先级`、`未完成说明`、`派工特殊备注`,提交前逐项核对。 +17. 进入日程页后,单击任务查看详情;拖拽任务可调整计划开始时间,拉伸任务可调整计划完成时间,系统提示确认后才会保存。 +18. 日程保存失败或取消时任务会恢复原日期;保存成功后回到表单页重新查询,核对计划开始和计划完成是否同步。 +19. 保存或提交成功后重新点击查询,确认页面数据已通过 `工艺管理_获取物料原料信息`、`计划排产_生产订单_已排产订单查询`、`MES_登录_工位与名称_查询`、`MES_OrderPlanned_Query`、`Prog_MES_LoadStations` 等后台过程更新。 +20. 涉及 SAP/WMS 接口时,必须查看页面成功或失败提示;失败时先记录错误信息,不要连续重复提交同一单据。 +21. 已排产列表中仍可调整指派对象、指派数量、计划开始、计划完成、外协分组、最晚开始和二次派工;调整后要重新查询确认。 + +**查询条件/输入项** +- `订单编号` +- `订单号` +- `物料类型` +- `合同号` +- `产品编码` +- `产品名称` +- `工序名称` +- `性质` +- `要求完工日期1` +- `要求完工日期2` +- `计划开始1` +- `计划开始2` +- `计划完成1` +- `计划完成2` +- `排产状态` +- `指派对象` +- `订单行号` +- `订单拆分内码` +- `派工特殊说明` +- `指派对象编号` +- `指派数量` +- `计划开始时间` + +**结果表重点列** +- `selection` +- `生产订单` +- `计划号` +- `物料编码` +- `物料名称` +- `计划数` +- `要求完工日期` +- `工时` +- `工序名称` +- `指派对象` +- `指派数量` +- `计划开始` +- `计划完成` +- `外协分组` +- `原料状态` +- `备注` +- `最晚开始` +- `派工` +- `二次派工` +- `优先级` +- `未完成说明` +- `派工特殊备注` +- `编辑` +- `占用情况` +- `销售订单` +- `最后编辑人` +- `最后编辑时间` +- `序号` +- `基本数量` +- `待出数量` +- `拣配数量` +- `计划数量` +- `存货量` +- `材质` + +**页面按钮/状态/页签** +- `查询` +- `确定` +- `查看` +- `派工` +- `编辑` +- `取 消` +- `确 定` +- `表单` +- `日程` + +**弹窗/表单重点项** +- `编辑备注信息` +- `原料信息` +- `优先级` +- `未完成说明` +- `派工特殊备注` + +**后台处理/外部接口** +- `存储过程:工艺管理_获取物料原料信息` +- `存储过程:计划排产_生产订单_已排产订单查询` +- `存储过程:MES_登录_工位与名称_查询` +- `存储过程:MES_OrderPlanned_Query` +- `存储过程:Prog_MES_LoadStations` +- `存储过程:系统管理_人员管理_所有有效人员查询` +- `存储过程:MES_OrderPlanned_EditTaskPlanned` +- `存储过程:计划排产_二次派工` +- `存储过程:计划排产_派工` +- `存储过程:MES_OrderPlanned_SingleTaskPlanned` +- `存储过程:计划排产_外协分组` +- `存储过程:MES_OrderPlanned_Finish` +- `存储过程:MES_OrderPlanned_DescriptionEdit` +- `存储过程:计划排产_自制件_日程时间修改` +- `接口:patchB1 /ProductionOrders(` + +**操作注意事项** +- 排产、派工和计划时间会影响生产看板、及时开工统计和 SAP 生产订单日期,提交前必须核对。 +- 该页存在 SAP/WMS 调用,失败时应记录返回提示并确认是否已经生成外部单据。 +- 日程拖拽属于直接改计划时间的操作,拖拽前应确认任务未被现场执行锁定。 + +## 21-6 工艺与图纸管理 + +### 21.16 零件图纸维护 + +页面路径:`src/views/ProcessManagement/PartDrawing/index.vue` +所属模块:工艺与图纸管理 +建议使用人员:工艺员/技术人员 + +页面用途:该页面用于维护零件图纸,支持按物料查询、查看、上传/验证和删除图纸。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 在查询区按需要填写筛选条件:`物料编码`、`过滤`、`stationNumberValues`、`selectedMaterials`、`itemnum`、`物料(可多选)`、`物料`。 +3. 点击 `查询` 刷新列表;状态按钮会切换任务范围。 +4. 查询后先核对关键列:`序号`、`物料编号`、`物料名称`、`文件名称`、`导入人`、`导入时间`、`操作`、`操作人`、`删除时间`、`备注`、`物料编码`、`现有图纸导入人`。 +5. 按业务需要点击 `零件图`,操作前先确认选中行和输入内容。 +6. 需要推进业务时先选中目标行并核对数量、时间、人员、工位、物料和备注,再点击 `选零件上传零件图` 提交。 +7. 需要删除时先确认该记录没有正在使用的业务数据,再点击 `查看删除记录`,按确认提示执行。 +8. 需要查看明细时点击 `查看`,在弹窗或新区域核对图纸、明细、进度、记录或关联单据。 +9. 需要删除时先确认该记录没有正在使用的业务数据,再点击 `删除`,按确认提示执行。 +10. 需要维护已有记录时先选中目标行,再点击或触发表格内 `确定`,修改字段后保存并等待成功提示。 +11. 需要维护已有记录时先选中目标行,再点击或触发表格内 `确定`,修改字段后保存并等待成功提示。 +12. 需要推进业务时先选中目标行并核对数量、时间、人员、工位、物料和备注,再点击 `关闭` 提交。 +13. 需要查看明细时点击 `查看信息`,在弹窗或新区域核对图纸、明细、进度、记录或关联单据。 +14. 按业务需要点击 `关 闭`,操作前先确认选中行和输入内容。 +15. 出现弹窗时按弹窗标题处理:`上传零件图`、`选零件上传零件图`、`删除记录`、`上传冲突提示`、`图纸`;弹窗关闭前确认必填项已保存。 +16. 涉及上传时先选择正确文件,再点击上传/保存;上传后重新查询,确认文件名、版本、上传时间或预览内容已显示。 +17. 保存或提交成功后重新点击查询,确认页面数据已通过 `工艺管理_图纸维护_查询删除记录`、`工艺管理_图纸维护_零件图查询`、`工艺管理_图纸维护_物料查询`、`工艺管理_图纸维护_验证名称`、`工艺管理_图纸维护_查看图纸` 等后台过程更新。 + +**查询条件/输入项** +- `物料编码` +- `过滤` +- `stationNumberValues` +- `selectedMaterials` +- `itemnum` +- `物料(可多选)` +- `物料` + +**结果表重点列** +- `序号` +- `物料编号` +- `物料名称` +- `文件名称` +- `导入人` +- `导入时间` +- `操作` +- `操作人` +- `删除时间` +- `备注` +- `物料编码` +- `现有图纸导入人` + +**页面按钮/状态/页签** +- `查询` +- `零件图` +- `选零件上传零件图` +- `查看删除记录` +- `查看` +- `删除` +- `取消` +- `确定` +- `关闭` +- `查看信息` +- `关 闭` + +**弹窗/表单重点项** +- `上传零件图` +- `选零件上传零件图` +- `删除记录` +- `上传冲突提示` +- `图纸` + +**后台处理/外部接口** +- `存储过程:工艺管理_图纸维护_查询删除记录` +- `存储过程:工艺管理_图纸维护_零件图查询` +- `存储过程:工艺管理_图纸维护_物料查询` +- `存储过程:工艺管理_图纸维护_验证名称` +- `存储过程:工艺管理_图纸维护_查看图纸` +- `存储过程:工艺管理_图纸维护_删除图纸` + +**操作注意事项** +- 工艺、图纸和结构资料会被排产、生产、质检引用,版本错误会直接影响现场执行。 + +### 21.17 零件图纸查看 + +页面路径:`src/views/ProcessManagement/PartDrawlook/index.vue` +所属模块:工艺与图纸管理 +建议使用人员:工艺员/技术人员 + +页面用途:该页面用于按物料查看零件图纸,供生产、采购、外协或质检快速查阅技术文件。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 在查询区按需要填写筛选条件:`物料编码`、`过滤`、`stationNumberValue`、`uploadValue`、`itemnum`、`物料`。 +3. 点击 `查询` 刷新列表;状态按钮会切换任务范围。 +4. 查询后先核对关键列:`序号`、`物料编号`、`物料名称`、`文件名称`、`导入人`、`导入时间`、`操作`、`操作人`、`删除时间`、`备注`。 +5. 需要查看明细时点击 `查看`,在弹窗或新区域核对图纸、明细、进度、记录或关联单据。 +6. 需要删除时先确认该记录没有正在使用的业务数据,再点击 `删除`,按确认提示执行。 +7. 需要维护已有记录时先选中目标行,再点击或触发表格内 `确定`,修改字段后保存并等待成功提示。 +8. 需要推进业务时先选中目标行并核对数量、时间、人员、工位、物料和备注,再点击 `关闭` 提交。 +9. 出现弹窗时按弹窗标题处理:`上传指导文件`、`删除记录`;弹窗关闭前确认必填项已保存。 +10. 涉及上传时先选择正确文件,再点击上传/保存;上传后重新查询,确认文件名、版本、上传时间或预览内容已显示。 +11. 保存或提交成功后重新点击查询,确认页面数据已通过 `工艺管理_图纸维护_查询删除记录`、`工艺管理_图纸维护_零件图查询全部`、`工艺管理_图纸维护_物料查询`、`工艺管理_图纸维护_验证名称`、`工艺管理_图纸维护_查看图纸` 等后台过程更新。 + +**查询条件/输入项** +- `物料编码` +- `过滤` +- `stationNumberValue` +- `uploadValue` +- `itemnum` +- `物料` + +**结果表重点列** +- `序号` +- `物料编号` +- `物料名称` +- `文件名称` +- `导入人` +- `导入时间` +- `操作` +- `操作人` +- `删除时间` +- `备注` + +**页面按钮/状态/页签** +- `查询` +- `查看` +- `删除` +- `取消` +- `确定` +- `关闭` + +**弹窗/表单重点项** +- `上传指导文件` +- `删除记录` + +**后台处理/外部接口** +- `存储过程:工艺管理_图纸维护_查询删除记录` +- `存储过程:工艺管理_图纸维护_零件图查询全部` +- `存储过程:工艺管理_图纸维护_物料查询` +- `存储过程:工艺管理_图纸维护_验证名称` +- `存储过程:工艺管理_图纸维护_查看图纸` +- `存储过程:工艺管理_图纸维护_删除图纸` + +**操作注意事项** +- 工艺、图纸和结构资料会被排产、生产、质检引用,版本错误会直接影响现场执行。 + +### 21.18 工序维护 + +页面路径:`src/views/ProcessManagement/ProcedureManagement/index.vue` +所属模块:工艺与图纸管理 +建议使用人员:工艺员/技术人员 + +页面用途:该页面用于维护工序/路线阶段主数据,并与 SAP B1 RouteStages 保持一致。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 在查询区按需要填写筛选条件:`searchName`、`ProcessClassification`、`工艺名称`。 +3. 点击页面上的查询或刷新类按钮获取最新数据;如果页面自动加载,则先核对默认列表是否符合当前业务范围。 +4. 查询后先核对关键列:`序号`、`工艺名称`、`操作`。 +5. 需要新增时点击 `新增工艺`,在弹窗中逐项填写必填字段,确认编码、名称、状态等基础信息后保存。 +6. 按业务需要点击 `取 消`,操作前先确认选中行和输入内容。 +7. 需要维护已有记录时先选中目标行,再点击或触发表格内 `确 定`,修改字段后保存并等待成功提示。 +8. 需要维护已有记录时先选中目标行,再点击或触发表格内 `确 定`,修改字段后保存并等待成功提示。 +9. 出现弹窗时按弹窗标题处理:`title`;弹窗关闭前确认必填项已保存。 +10. 弹窗或表单内重点填写:`工艺名称`,提交前逐项核对。 +11. 保存或提交成功后重新点击查询,确认页面数据已通过 `MES_ProcessManagement_ProcessGet`、`MES_ProcessManagement_ProcessAdd`、`MES_ProcessManagement_ProcessEdit`、`MES_ProcessManagement_Processdel` 等后台过程更新。 +12. 涉及 SAP/WMS 接口时,必须查看页面成功或失败提示;失败时先记录错误信息,不要连续重复提交同一单据。 + +**查询条件/输入项** +- `searchName` +- `ProcessClassification` +- `工艺名称` + +**结果表重点列** +- `序号` +- `工艺名称` +- `操作` + +**页面按钮/状态/页签** +- `新增工艺` +- `取 消` +- `确 定` + +**弹窗/表单重点项** +- `title` +- `工艺名称` + +**后台处理/外部接口** +- `存储过程:MES_ProcessManagement_ProcessGet` +- `存储过程:MES_ProcessManagement_ProcessAdd` +- `存储过程:MES_ProcessManagement_ProcessEdit` +- `存储过程:MES_ProcessManagement_Processdel` +- `接口:postB1 /RouteStages` +- `接口:getB1 /RouteStages` +- `接口:patchB1 /RouteStages(` + +**操作注意事项** +- 工艺、图纸和结构资料会被排产、生产、质检引用,版本错误会直接影响现场执行。 +- 该页存在 SAP/WMS 调用,失败时应记录返回提示并确认是否已经生成外部单据。 + +### 21.19 工艺图纸维护 + +页面路径:`src/views/ProcessManagement/ProcessDrawing/index.vue` +所属模块:工艺与图纸管理 +建议使用人员:工艺员/技术人员 + +页面用途:该页面用于维护工艺图纸,支持查询、查看、上传/验证和删除工艺图纸。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 在查询区按需要填写筛选条件:`过滤`、`stationNumberValue`、`uploadValue`、`物料`。 +3. 点击 `查询` 刷新列表;状态按钮会切换任务范围。 +4. 查询后先核对关键列:`序号`、`物料编号`、`物料名称`、`文件名称`、`导入人`、`导入时间`、`操作`。 +5. 按业务需要点击 `工艺图`,操作前先确认选中行和输入内容。 +6. 需要推进业务时先选中目标行并核对数量、时间、人员、工位、物料和备注,再点击 `选零件上传工艺图` 提交。 +7. 需要推进业务时先选中目标行并核对数量、时间、人员、工位、物料和备注,再点击 `选订单上传工艺图` 提交。 +8. 需要查看明细时点击 `查看`,在弹窗或新区域核对图纸、明细、进度、记录或关联单据。 +9. 需要删除时先确认该记录没有正在使用的业务数据,再点击 `删除`,按确认提示执行。 +10. 需要维护已有记录时先选中目标行,再点击或触发表格内 `确定`,修改字段后保存并等待成功提示。 +11. 出现弹窗时按弹窗标题处理:`上传指导文件`;弹窗关闭前确认必填项已保存。 +12. 涉及上传时先选择正确文件,再点击上传/保存;上传后重新查询,确认文件名、版本、上传时间或预览内容已显示。 +13. 保存或提交成功后重新点击查询,确认页面数据已通过 `工艺管理_工艺维护_工艺图查询`、`工艺管理_图纸维护_物料查询`、`工艺管理_工艺维护_验证名称`、`工艺管理_工艺维护_查看图纸`、`工艺管理_工艺维护_删除图纸` 等后台过程更新。 + +**查询条件/输入项** +- `过滤` +- `stationNumberValue` +- `uploadValue` +- `物料` + +**结果表重点列** +- `序号` +- `物料编号` +- `物料名称` +- `文件名称` +- `导入人` +- `导入时间` +- `操作` + +**页面按钮/状态/页签** +- `查询` +- `工艺图` +- `选零件上传工艺图` +- `选订单上传工艺图` +- `查看` +- `删除` +- `取消` +- `确定` + +**弹窗/表单重点项** +- `上传指导文件` + +**后台处理/外部接口** +- `存储过程:工艺管理_工艺维护_工艺图查询` +- `存储过程:工艺管理_图纸维护_物料查询` +- `存储过程:工艺管理_工艺维护_验证名称` +- `存储过程:工艺管理_工艺维护_查看图纸` +- `存储过程:工艺管理_工艺维护_删除图纸` +- `存储过程:工艺管理_图纸维护_查看图纸` + +**操作注意事项** +- 工艺、图纸和结构资料会被排产、生产、质检引用,版本错误会直接影响现场执行。 + +### 21.20 工艺开发 + +页面路径:`src/views/ProcessManagement/ProcessesDevelop/index.vue` +所属模块:工艺与图纸管理 +建议使用人员:工艺员/技术人员 + +页面用途:该页面用于维护产品工艺资料、工序路线、参数和图纸关系。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 在查询区按需要填写筛选条件:`订单编号`、`过滤`、`partNameValue3`、`processSearchName`、`processprodutc`、`partNameValue2`、`物料名称`、`工序名称`、`工装量具`、`指定机床`、`车间`、`生产工艺物料名称`。 +3. 点击 `查询` 刷新列表;状态按钮会切换任务范围。 +4. 列表较多时使用分页区切换页码或调整每页条数,避免只检查第一页。 +5. 查询后先核对关键列:`工序`、`序号`、`工序名称`、`准备工时`、`标准工时`、`工时合计`、`工装量具`、`指定机床`、`车间`、`工序说明`、`备注`、`操作`。 +6. 按业务需要点击 `拷贝`,操作前先确认选中行和输入内容。 +7. 需要查看明细时点击 `图纸`,在弹窗或新区域核对图纸、明细、进度、记录或关联单据。 +8. 需要维护已有记录时先选中目标行,再点击或触发表格内 `已保存`,修改字段后保存并等待成功提示。 +9. 需要维护已有记录时先选中目标行,再点击或触发表格内 `保存`,修改字段后保存并等待成功提示。 +10. 需要维护已有记录时先选中目标行,再点击或触发表格内 `保存`,修改字段后保存并等待成功提示。 +11. 需要留存或流转时点击 `导出`,导出/打印前确认当前查询条件和选中记录正确。 +12. 需要维护已有记录时先选中目标行,再点击或触发表格内 `确定`,修改字段后保存并等待成功提示。 +13. 出现弹窗时按弹窗标题处理:`工艺拷贝`;弹窗关闭前确认必填项已保存。 +14. 涉及上传时先选择正确文件,再点击上传/保存;上传后重新查询,确认文件名、版本、上传时间或预览内容已显示。 +15. 保存或提交成功后重新点击查询,确认页面数据已通过 `工艺管理_获取物料原料信息`、`设备管理_设备信息_查询`、`工艺管理_生产计划物料查询`、`工艺管理_生产工艺_生产工艺拷贝`、`工艺管理_生产工艺_标准工艺拷贝` 等后台过程更新。 + +**查询条件/输入项** +- `订单编号` +- `过滤` +- `partNameValue3` +- `processSearchName` +- `processprodutc` +- `partNameValue2` +- `物料名称` +- `工序名称` +- `工装量具` +- `指定机床` +- `车间` +- `生产工艺物料名称` + +**结果表重点列** +- `工序` +- `序号` +- `工序名称` +- `准备工时` +- `标准工时` +- `工时合计` +- `工装量具` +- `指定机床` +- `车间` +- `工序说明` +- `备注` +- `操作` + +**页面按钮/状态/页签** +- `查询` +- `拷贝` +- `图纸` +- `已保存` +- `保存` +- `导出` +- `生产工艺 取消` +- `确定` + +**弹窗/表单重点项** +- `工艺拷贝` + +**后台处理/外部接口** +- `存储过程:工艺管理_获取物料原料信息` +- `存储过程:设备管理_设备信息_查询` +- `存储过程:工艺管理_生产计划物料查询` +- `存储过程:工艺管理_生产工艺_生产工艺拷贝` +- `存储过程:工艺管理_生产工艺_标准工艺拷贝` +- `存储过程:MES_ProcessManagement_ProcessBindGet` +- `存储过程:工艺管理_制定标准工艺_拷贝生产工艺` +- `存储过程:MES_ProcessManagement_ProcessGet` +- `存储过程:工艺管理_制定标准工艺_拷贝工艺保存` +- `存储过程:工艺管理_工艺维护_查看图纸` +- `存储过程:车间生产管理工艺_零件工序_修改数据_工艺库` +- `存储过程:车间生产管理工艺_零件工序_查询工序信息_工艺库` +- `存储过程:车间生产管理工艺_零件工序_编辑_工艺库` +- `存储过程:车间生产管理工艺_零件工序_编辑插入行` +- `存储过程:车间生产管理工艺_零件工序_删除工序_工艺库` +- `存储过程:车间生产管理工艺_零件工序_上移工序_工艺库` +- `存储过程:车间生产管理工艺_零件工序_下移工序_工艺库` +- `存储过程:车间生产管理工艺_零件工序_插入工序_工艺库` +- `存储过程:车间生产管理工艺_零件工序_启用` + +**操作注意事项** +- 工艺、图纸和结构资料会被排产、生产、质检引用,版本错误会直接影响现场执行。 + +### 21.21 工艺查询 + +页面路径:`src/views/ProcessManagement/ProcessInquiry/index.vue` +所属模块:工艺与图纸管理 +建议使用人员:工艺员/技术人员 + +页面用途:该页面用于查询标准工艺或生产工艺,供排产、生产、质检核对工序路线。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 在查询区按需要填写筛选条件:`partNameValue3`、`order编号`、`plannum`、`taskstatus`、`pickingstatus`、`orderstatus`、`生产工艺物料名称`、`物料名称`、`生产订单`、`计划号`。 +3. 点击 `查询` 刷新列表;状态按钮会切换任务范围。 +4. 列表较多时使用分页区切换页码或调整每页条数,避免只检查第一页。 +5. 查询后先核对关键列:`selection`、`序号`、`生产订单`、`计划号`、`物料名称`、`物料编码`、`加工数量`、`打印次数`。 +6. 需要留存或流转时点击 `打印`,导出/打印前确认当前查询条件和选中记录正确。 +7. 保存或提交成功后重新点击查询,确认页面数据已通过 `MES_ProcessManagement_PartGet`、`工艺管理_工艺查询_查询生产工艺`、`工艺管理_工艺查询_更新打印次数` 等后台过程更新。 + +**查询条件/输入项** +- `partNameValue3` +- `order编号` +- `plannum` +- `taskstatus` +- `pickingstatus` +- `orderstatus` +- `生产工艺物料名称` +- `物料名称` +- `生产订单` +- `计划号` + +**结果表重点列** +- `selection` +- `序号` +- `生产订单` +- `计划号` +- `物料名称` +- `物料编码` +- `加工数量` +- `打印次数` + +**页面按钮/状态/页签** +- `查询` +- `打印` + +**弹窗/表单重点项** +- 未识别到固定弹窗或表单项。 + +**后台处理/外部接口** +- `存储过程:MES_ProcessManagement_PartGet` +- `存储过程:工艺管理_工艺查询_查询生产工艺` +- `存储过程:工艺管理_工艺查询_更新打印次数` + +**操作注意事项** +- 工艺、图纸和结构资料会被排产、生产、质检引用,版本错误会直接影响现场执行。 + +### 21.22 生产工艺维护 + +页面路径:`src/views/ProcessManagement/ProcessProduct/index.vue` +所属模块:工艺与图纸管理 +建议使用人员:工艺员/技术人员 + +页面用途:该页面用于维护产品工艺资料、工序路线、参数和图纸关系。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 在查询区按需要填写筛选条件:`订单编号`、`订单号`、`合同号`、`产品编码`、`产品名称`、`下达日期1`、`下达日期2`、`任务状态`、`订单状态`、`工艺状态`、`计划号`、`PageCurrent`。 +3. 如果仍查不到数据,继续补充条件:`PageSize`、`PageCount`、`ItemCount`、`物料编号`、`计划数量`、`工艺顺序`、`零件图号`、`order编号`、`contract编号`、`productCode`,或清空过窄条件后重新查询。 +4. 点击 `查询` 刷新列表;状态按钮会切换任务范围。 +5. 列表较多时使用分页区切换页码或调整每页条数,避免只检查第一页。 +6. 查询后先核对关键列:`selection`、`序号`、`销售订单`、`计划号`、`生产订单`、`物料编码`、`物料名称`、`属性`、`计划数`、`下达日期`、`计划开始`、`计划完成`。 +7. 继续横向滚动或展开表格,核对:`加急状态`、`标准工艺`、`生产工艺`、`图纸`、`备注`、`操作`、`工序`、`工序名称`、`准备工时`、`标准工时`、`工时合计`、`工装量具`、`指定机床`、`车间`。 +8. 按业务需要点击 `批量生成生产工艺`,操作前先确认选中行和输入内容。 +9. 需要维护已有记录时先选中目标行,再点击或触发表格内 `编辑工艺`,修改字段后保存并等待成功提示。 +10. 按业务需要点击 `拷贝`,操作前先确认选中行和输入内容。 +11. 需要查看明细时点击 `零件图纸`,在弹窗或新区域核对图纸、明细、进度、记录或关联单据。 +12. 需要查看明细时点击 `工艺图纸`,在弹窗或新区域核对图纸、明细、进度、记录或关联单据。 +13. 需要维护已有记录时先选中目标行,再点击或触发表格内 `保存为标准工艺`,修改字段后保存并等待成功提示。 +14. 按业务需要点击 `下发任务`,操作前先确认选中行和输入内容。 +15. 需要维护已有记录时先选中目标行,再点击或触发表格内 `已保存`,修改字段后保存并等待成功提示。 +16. 需要维护已有记录时先选中目标行,再点击或触发表格内 `保存`,修改字段后保存并等待成功提示。 +17. 按业务需要点击 `下发任务`,操作前先确认选中行和输入内容。 +18. 出现弹窗时按弹窗标题处理:`编辑生产工艺`、`生产工艺拷贝`、`图纸`;弹窗关闭前确认必填项已保存。 +19. 涉及上传时先选择正确文件,再点击上传/保存;上传后重新查询,确认文件名、版本、上传时间或预览内容已显示。 +20. 保存或提交成功后重新点击查询,确认页面数据已通过 `工艺管理_获取物料原料信息`、`工艺管理_生产工艺_查询生产工艺`、`工艺管理_生产工艺_工艺拷贝`、`工艺管理_生产工艺_生产工艺拷贝`、`工艺管理_生产工艺_标准工艺拷贝` 等后台过程更新。 + +**查询条件/输入项** +- `订单编号` +- `订单号` +- `合同号` +- `产品编码` +- `产品名称` +- `下达日期1` +- `下达日期2` +- `任务状态` +- `订单状态` +- `工艺状态` +- `计划号` +- `PageCurrent` +- `PageSize` +- `PageCount` +- `ItemCount` +- `物料编号` +- `计划数量` +- `工艺顺序` +- `零件图号` +- `order编号` +- `contract编号` +- `productCode` + +**结果表重点列** +- `selection` +- `序号` +- `销售订单` +- `计划号` +- `生产订单` +- `物料编码` +- `物料名称` +- `属性` +- `计划数` +- `下达日期` +- `计划开始` +- `计划完成` +- `加急状态` +- `标准工艺` +- `生产工艺` +- `图纸` +- `备注` +- `操作` +- `工序` +- `工序名称` +- `准备工时` +- `标准工时` +- `工时合计` +- `工装量具` +- `指定机床` +- `车间` +- `工序说明` + +**页面按钮/状态/页签** +- `查询` +- `批量生成生产工艺` +- `编辑工艺` +- `拷贝` +- `零件图纸` +- `工艺图纸` +- `保存为标准工艺` +- `下发任务` +- `已保存` +- `保存` +- `取消` +- `确定` +- `关闭` + +**弹窗/表单重点项** +- `编辑生产工艺` +- `生产工艺拷贝` +- `图纸` + +**后台处理/外部接口** +- `存储过程:工艺管理_获取物料原料信息` +- `存储过程:工艺管理_生产工艺_查询生产工艺` +- `存储过程:工艺管理_生产工艺_工艺拷贝` +- `存储过程:工艺管理_生产工艺_生产工艺拷贝` +- `存储过程:工艺管理_生产工艺_标准工艺拷贝` +- `存储过程:计划排产_生产订单_订单查询` +- `存储过程:计划排产_生产订单_订单任务_生产工艺任务下发` +- `存储过程:计划排产_生产订单_订单任务_单条生产工艺任务下发` +- `存储过程:工艺管理_零件工序_生产工艺_批量生成生产工艺` +- `存储过程:设备管理_设备信息_查询` +- `存储过程:MES_ProcessManagement_ProcessBindGet` +- `存储过程:工艺管理_制定标准工艺_拷贝生产工艺` +- `存储过程:MES_ProcessManagement_ProcessGet` +- `存储过程:车间生产管理工艺_零件工序_保存为标准工艺` +- `存储过程:工艺管理_图纸维护_查看图纸` +- `存储过程:工艺管理_工艺维护_查看图纸` +- `存储过程:工艺管理_零件工序_生产工艺_修改数据` +- `存储过程:工艺管理_零件工序_生产工艺_编辑` +- `存储过程:工艺管理_零件工序_生产工艺_编辑插入工序` +- `存储过程:工艺管理_零件工序_生产工艺_删除工序` + +**操作注意事项** +- 工艺、图纸和结构资料会被排产、生产、质检引用,版本错误会直接影响现场执行。 + +### 21.23 采购图纸查看 + +页面路径:`src/views/ProcessManagement/ProcurementDrawlook/index.vue` +所属模块:工艺与图纸管理 +建议使用人员:工艺员/技术人员 + +页面用途:该页面用于按物料查看零件图纸,供生产、采购、外协或质检快速查阅技术文件。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 在查询区按需要填写筛选条件:`物料编码`、`过滤`、`stationNumberValue`、`uploadValue`、`itemnum`、`物料`。 +3. 点击 `查询` 刷新列表;状态按钮会切换任务范围。 +4. 查询后先核对关键列:`序号`、`物料编号`、`物料名称`、`文件名称`、`导入人`、`导入时间`、`操作`、`操作人`、`删除时间`、`备注`。 +5. 需要查看明细时点击 `查看`,在弹窗或新区域核对图纸、明细、进度、记录或关联单据。 +6. 需要删除时先确认该记录没有正在使用的业务数据,再点击 `删除`,按确认提示执行。 +7. 需要维护已有记录时先选中目标行,再点击或触发表格内 `确定`,修改字段后保存并等待成功提示。 +8. 需要推进业务时先选中目标行并核对数量、时间、人员、工位、物料和备注,再点击 `关闭` 提交。 +9. 出现弹窗时按弹窗标题处理:`上传指导文件`、`删除记录`;弹窗关闭前确认必填项已保存。 +10. 涉及上传时先选择正确文件,再点击上传/保存;上传后重新查询,确认文件名、版本、上传时间或预览内容已显示。 +11. 保存或提交成功后重新点击查询,确认页面数据已通过 `工艺管理_图纸维护_查询删除记录`、`工艺管理_图纸维护_零件图查询采购`、`工艺管理_图纸维护_物料查询_采购`、`工艺管理_图纸维护_验证名称`、`工艺管理_图纸维护_查看图纸` 等后台过程更新。 + +**查询条件/输入项** +- `物料编码` +- `过滤` +- `stationNumberValue` +- `uploadValue` +- `itemnum` +- `物料` + +**结果表重点列** +- `序号` +- `物料编号` +- `物料名称` +- `文件名称` +- `导入人` +- `导入时间` +- `操作` +- `操作人` +- `删除时间` +- `备注` + +**页面按钮/状态/页签** +- `查询` +- `查看` +- `删除` +- `取消` +- `确定` +- `关闭` + +**弹窗/表单重点项** +- `上传指导文件` +- `删除记录` + +**后台处理/外部接口** +- `存储过程:工艺管理_图纸维护_查询删除记录` +- `存储过程:工艺管理_图纸维护_零件图查询采购` +- `存储过程:工艺管理_图纸维护_物料查询_采购` +- `存储过程:工艺管理_图纸维护_验证名称` +- `存储过程:工艺管理_图纸维护_查看图纸` +- `存储过程:工艺管理_图纸维护_删除图纸` + +**操作注意事项** +- 工艺、图纸和结构资料会被排产、生产、质检引用,版本错误会直接影响现场执行。 + +### 21.24 生产订单 + +页面路径:`src/views/ProcessManagement/ProductionOrder/index.vue` +所属模块:工艺与图纸管理 +建议使用人员:工艺员/技术人员 + +页面用途:该页面用于查询和同步生产订单,把 SAP/ERP 生产订单转成 MES 生产计划与工序任务。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 在查询区按需要填写筛选条件:`订单号`、`合同号`、`产品编码`、`产品名称`、`要求完工日期1`、`要求完工日期2`、`订单状态`、`任务状态`、`订单编号`、`order编号`、`contract编号`、`productCode`。 +3. 如果仍查不到数据,继续补充条件:`productName`、`taskstatus`、`orderstatus`、`completion时间`、`生产订单`、`销售订单`、`物料编码`、`物料名称`、`时间`、`开始时间`,或清空过窄条件后重新查询。 +4. 点击 `查询` 刷新列表;状态按钮会切换任务范围。 +5. 列表较多时使用分页区切换页码或调整每页条数,避免只检查第一页。 +6. 查询后先核对关键列:`selection`、`序号`、`销售订单`、`生产订单`、`物料编码`、`物料名称`、`属性`、`计划数`、`下达日期`、`计划开始`、`计划完成`、`加急状态`。 +7. 继续横向滚动或展开表格,核对:`标准工艺`、`生产工艺`、`操作`、`工序名称`、`工序说明`、`准备工时`、`标准工时`、`工时合计`、`工装量具`、`指定机床`、`车间`、`备注`。 +8. 按业务需要点击 `批量生成任务`,操作前先确认选中行和输入内容。 +9. 需要查看明细时点击 `查看生产工艺`,在弹窗或新区域核对图纸、明细、进度、记录或关联单据。 +10. 需要查看明细时点击 `查看标准工艺`,在弹窗或新区域核对图纸、明细、进度、记录或关联单据。 +11. 出现弹窗时按弹窗标题处理:`生产工艺详情`、`标准工艺详情`;弹窗关闭前确认必填项已保存。 +12. 保存或提交成功后重新点击查询,确认页面数据已通过 `设备管理_设备信息_查询`、`工艺管理_生产工艺_查询生产工艺`、`工艺管理_生产工艺_查询标准工艺`、`工艺管理_工艺任务_订单查询`、`计划排产_生产订单_订单任务` 等后台过程更新。 + +**查询条件/输入项** +- `订单号` +- `合同号` +- `产品编码` +- `产品名称` +- `要求完工日期1` +- `要求完工日期2` +- `订单状态` +- `任务状态` +- `订单编号` +- `order编号` +- `contract编号` +- `productCode` +- `productName` +- `taskstatus` +- `orderstatus` +- `completion时间` +- `生产订单` +- `销售订单` +- `物料编码` +- `物料名称` +- `时间` +- `开始时间` + +**结果表重点列** +- `selection` +- `序号` +- `销售订单` +- `生产订单` +- `物料编码` +- `物料名称` +- `属性` +- `计划数` +- `下达日期` +- `计划开始` +- `计划完成` +- `加急状态` +- `标准工艺` +- `生产工艺` +- `操作` +- `工序名称` +- `工序说明` +- `准备工时` +- `标准工时` +- `工时合计` +- `工装量具` +- `指定机床` +- `车间` +- `备注` + +**页面按钮/状态/页签** +- `查询` +- `批量生成任务` +- `查看生产工艺` +- `查看标准工艺` + +**弹窗/表单重点项** +- `生产工艺详情` +- `标准工艺详情` + +**后台处理/外部接口** +- `存储过程:设备管理_设备信息_查询` +- `存储过程:工艺管理_生产工艺_查询生产工艺` +- `存储过程:工艺管理_生产工艺_查询标准工艺` +- `存储过程:工艺管理_工艺任务_订单查询` +- `存储过程:计划排产_生产订单_订单任务` + +**操作注意事项** +- 工艺、图纸和结构资料会被排产、生产、质检引用,版本错误会直接影响现场执行。 + +## 21-7 生产执行管理 + +### 21.25 异常管控 + +页面路径:`src/views/ProductionManagement/AbnormalControl/index.vue` +所属模块:生产执行管理 +建议使用人员:操作工/班组长/生产主管 + +页面用途:该页面用于生产异常管理,查询异常、处理异常、转办、查看进度和关闭异常。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 先查看页签:`待我处理`、`我发起的`、`我已处理`;需要表格处理时进入表单/列表页签,需要看时间排布时进入日程/看板页签。 +3. 在查询区按需要填写筛选条件:`审批人ID`、`发起人ID`、`状态`、`订单号`、`物料类型`、`合同号`、`产品编码`、`产品名称`、`工序名称`、`性质`、`要求完工日期1`、`要求完工日期2`。 +4. 如果仍查不到数据,继续补充条件:`排产状态`、`工位`、`流程标题`、`流程描述`、`优先级`、`发起人姓名`、`审批人姓名`、`新流程ID`、`已关联计划号`、`零件名称`,或清空过窄条件后重新查询。 +5. 点击 `查询` 刷新列表;状态按钮会切换任务范围。 +6. 查询后先核对关键列:`流程名称`、`发起时间`、`当前节点`、`状态`、`操作`、`申请人`、`处理时间`、`处理结果`、`审批意见`、`序号`、`销售订单`、`生产订单`。 +7. 继续横向滚动或展开表格,核对:`零件编码`、`产品名称`、`计划数`、`工序名称`、`指派对象编号`、`指派对象`、`指派数量`、`计划开始时间`、`计划完成时间`、`最晚开始时间`、`要求完工日期`。 +8. 需要推进业务时先选中目标行并核对数量、时间、人员、工位、物料和备注,再点击 `处理` 提交。 +9. 需要推进业务时先选中目标行并核对数量、时间、人员、工位、物料和备注,再点击 `转办` 提交。 +10. 按业务需要点击 `发起新流程`,操作前先确认选中行和输入内容。 +11. 需要查看明细时点击 `查看进度`,在弹窗或新区域核对图纸、明细、进度、记录或关联单据。 +12. 需要推进业务时先选中目标行并核对数量、时间、人员、工位、物料和备注,再点击 `完结` 提交。 +13. 需要查看明细时点击 `查看详情`,在弹窗或新区域核对图纸、明细、进度、记录或关联单据。 +14. 需要推进业务时先选中目标行并核对数量、时间、人员、工位、物料和备注,再点击 `点击上传` 提交。 +15. 需要新增时点击 `添加审批人`,在弹窗中逐项填写必填字段,确认编码、名称、状态等基础信息后保存。 +16. 按业务需要点击 `取 消`,操作前先确认选中行和输入内容。 +17. 按业务需要点击 `提 交`,操作前先确认选中行和输入内容。 +18. 出现弹窗时按弹窗标题处理:`发起新流程`、`处理任务`、`流程进度详情`、`转办流程`、`完结流程`、`上传附件`;弹窗关闭前确认必填项已保存。 +19. 弹窗或表单内重点填写:`优先级`、`流程标题`、`流程描述`、`上传附件`、`审批人`、`已关联生产订单`、`物料名称`、`物料编号`、`工序名称`、`处理意见`、`审批意见`、`目标人员`、`转办原因`、`流程名称`,提交前逐项核对。 +20. 涉及上传时先选择正确文件,再点击上传/保存;上传后重新查询,确认文件名、版本、上传时间或预览内容已显示。 +21. 保存或提交成功后重新点击查询,确认页面数据已通过 `sp_获取最近处理任务`、`人员管理_人员信息查询`、`sp_获取我的流程`、`sp_获取待处理任务`、`MES_ProductAdmin_Query` 等后台过程更新。 + +**查询条件/输入项** +- `审批人ID` +- `发起人ID` +- `状态` +- `订单号` +- `物料类型` +- `合同号` +- `产品编码` +- `产品名称` +- `工序名称` +- `性质` +- `要求完工日期1` +- `要求完工日期2` +- `排产状态` +- `工位` +- `流程标题` +- `流程描述` +- `优先级` +- `发起人姓名` +- `审批人姓名` +- `新流程ID` +- `已关联计划号` +- `零件名称` + +**结果表重点列** +- `流程名称` +- `发起时间` +- `当前节点` +- `状态` +- `操作` +- `申请人` +- `处理时间` +- `处理结果` +- `审批意见` +- `序号` +- `销售订单` +- `生产订单` +- `零件编码` +- `产品名称` +- `计划数` +- `工序名称` +- `指派对象编号` +- `指派对象` +- `指派数量` +- `计划开始时间` +- `计划完成时间` +- `最晚开始时间` +- `要求完工日期` + +**页面按钮/状态/页签** +- `处理` +- `转办` +- `发起新流程` +- `查看进度` +- `完结` +- `查看详情` +- `点击上传` +- `添加审批人` +- `查询` +- `取 消` +- `提 交` +- `确 定` +- `确 认 完 结` +- `取消` +- `确定` +- `待我处理` +- `我发起的` +- `我已处理` + +**弹窗/表单重点项** +- `发起新流程` +- `处理任务` +- `流程进度详情` +- `转办流程` +- `完结流程` +- `上传附件` +- `优先级` +- `流程标题` +- `流程描述` +- `上传附件` +- `审批人` +- `已关联生产订单` +- `物料名称` +- `物料编号` +- `工序名称` +- `处理意见` +- `审批意见` +- `目标人员` +- `转办原因` +- `流程名称` +- `完结原因` +- `完结结果` + +**后台处理/外部接口** +- `存储过程:sp_获取最近处理任务` +- `存储过程:人员管理_人员信息查询` +- `存储过程:sp_获取我的流程` +- `存储过程:sp_获取待处理任务` +- `存储过程:MES_ProductAdmin_Query` +- `存储过程:sp_创建流程_简化版` +- `存储过程:sp_处理审批` +- `存储过程:sp_转办流程` +- `存储过程:sp_完成流程` +- `存储过程:sp_获取流程详情` + +**操作注意事项** +- 生产执行页面的数据会直接影响报工、工时、质检和库存任务,现场操作必须与实际加工进度一致。 + +### 21.26 装配计划跟踪 + +页面路径:`src/views/ProductionManagement/AssemblePlanTrack/index.vue` +所属模块:生产执行管理 +建议使用人员:操作工/班组长/生产主管 + +页面用途:该页面用于跟踪生产/装配计划执行进度,查看计划、完成、延期和异常情况。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 在查询区按需要填写筛选条件:`订单号`、`物料类型`、`合同号`、`产品编码`、`产品名称`、`工序名称`、`计划开始1`、`计划开始2`、`计划完成1`、`计划完成2`、`要求完工日期1`、`要求完工日期2`。 +3. 如果仍查不到数据,继续补充条件:`排产状态`、`指派对象`、`订单行号`、`订单拆分内码`、`优先级`、`未完成说明`、`派工特殊说明`、`order编号`、`contract编号`、`productCode`,或清空过窄条件后重新查询。 +4. 点击 `查询` 刷新列表;状态按钮会切换任务范围。 +5. 查询后先核对关键列:`expand`、`序号`、`工序名称`、`计划数量`、`指派对象`、`开始时间`、`结束时间`、`完成进度`、`拆分内码`、`销售订单`、`生产订单`、`产品编码`。 +6. 继续横向滚动或展开表格,核对:`产品名称`、`要求完工日`、`当前序`、`排产`、`开工`、`终检`、`加急`、`优先级`。 +7. 保存或提交成功后重新点击查询,确认页面数据已通过 `MES_OrderPlanned_Queryzp`、`MES_OrderPlanned_DescriptionEdit`、`Prog_MES_LoadStations` 等后台过程更新。 + +**查询条件/输入项** +- `订单号` +- `物料类型` +- `合同号` +- `产品编码` +- `产品名称` +- `工序名称` +- `计划开始1` +- `计划开始2` +- `计划完成1` +- `计划完成2` +- `要求完工日期1` +- `要求完工日期2` +- `排产状态` +- `指派对象` +- `订单行号` +- `订单拆分内码` +- `优先级` +- `未完成说明` +- `派工特殊说明` +- `order编号` +- `contract编号` +- `productCode` + +**结果表重点列** +- `expand` +- `序号` +- `工序名称` +- `计划数量` +- `指派对象` +- `开始时间` +- `结束时间` +- `完成进度` +- `拆分内码` +- `销售订单` +- `生产订单` +- `产品编码` +- `产品名称` +- `要求完工日` +- `当前序` +- `排产` +- `开工` +- `终检` +- `加急` +- `优先级` + +**页面按钮/状态/页签** +- `查询` + +**弹窗/表单重点项** +- 未识别到固定弹窗或表单项。 + +**后台处理/外部接口** +- `存储过程:MES_OrderPlanned_Queryzp` +- `存储过程:MES_OrderPlanned_DescriptionEdit` +- `存储过程:Prog_MES_LoadStations` + +**操作注意事项** +- 生产执行页面的数据会直接影响报工、工时、质检和库存任务,现场操作必须与实际加工进度一致。 + +### 21.27 装配状态 + +页面路径:`src/views/ProductionManagement/AssembleStatus/index.vue` +所属模块:生产执行管理 +建议使用人员:操作工/班组长/生产主管 + +页面用途:该页面用于查看现场状态,关注工位、设备、任务是否开工、进行中或完成。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 在查询区按需要填写筛选条件:`checker`、`检测人`。 +3. 点击 `查询` 刷新列表;状态按钮会切换任务范围。 +4. 列表较多时使用分页区切换页码或调整每页条数,避免只检查第一页。 +5. 查询后先核对关键列:`序号`、`人员名称`、`工位`、`生产订单`、`计划号`、`销售订单`、`物料名称`、`物料编码`、`顺序`、`工序名称`、`分配数`、`上序合格数`。 +6. 继续横向滚动或展开表格,核对:`加工状态`、`送检数`、`收检合格数`、`收检不合格数`、`入库数量`、`发料状态`、`拣配状态`、`齐套`、`开始时间`、`计划开始`、`计划完成`、`备注`。 +7. 保存或提交成功后重新点击查询,确认页面数据已通过 `人员管理_人员信息查询_质检部门_查询`、`MES_登录_工位与名称_查询`、`生产管理_装配状态_获取进行中任务` 等后台过程更新。 + +**查询条件/输入项** +- `checker` +- `检测人` + +**结果表重点列** +- `序号` +- `人员名称` +- `工位` +- `生产订单` +- `计划号` +- `销售订单` +- `物料名称` +- `物料编码` +- `顺序` +- `工序名称` +- `分配数` +- `上序合格数` +- `加工状态` +- `送检数` +- `收检合格数` +- `收检不合格数` +- `入库数量` +- `发料状态` +- `拣配状态` +- `齐套` +- `开始时间` +- `计划开始` +- `计划完成` +- `备注` + +**页面按钮/状态/页签** +- `查询` + +**弹窗/表单重点项** +- 未识别到固定弹窗或表单项。 + +**后台处理/外部接口** +- `存储过程:人员管理_人员信息查询_质检部门_查询` +- `存储过程:MES_登录_工位与名称_查询` +- `存储过程:生产管理_装配状态_获取进行中任务` + +**操作注意事项** +- 生产执行页面的数据会直接影响报工、工时、质检和库存任务,现场操作必须与实际加工进度一致。 + +### 21.28 装配任务管理 + +页面路径:`src/views/ProductionManagement/AssembleTaskManage/index.vue` +所属模块:生产执行管理 +建议使用人员:操作工/班组长/生产主管 + +页面用途:该页面用于生产/装配任务管理,查询任务、查看工时、维护派工和任务说明。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 先查看页签:`表单`、`日程`;需要表格处理时进入表单/列表页签,需要看时间排布时进入日程/看板页签。 +3. 在查询区按需要填写筛选条件:`订单号`、`任务描述`、`指派对象`、`指派对象编号`、`指派数量`、`计划开始时间`、`计划结束时间`、`最晚开始时间`、`物料类型`、`合同号`、`产品编码`、`产品名称`。 +4. 如果仍查不到数据,继续补充条件:`工序名称`、`性质`、`要求完工日期1`、`要求完工日期2`、`排产状态`、`订单行号`、`订单拆分内码`、`派工特殊说明`、`计划完成时间`、`优先级`,或清空过窄条件后重新查询。 +5. 点击 `查询` 刷新列表;状态按钮会切换任务范围。 +6. 查询后先核对关键列:`selection`、`序号`、`销售订单`、`生产订单`、`订单行号`、`拆分内码`、`零件编码`、`产品名称`、`计划数`、`预计齐套时间`、`是否齐套`、`齐套检测`。 +7. 继续横向滚动或展开表格,核对:`齐套锁料`、`备料日期`、`加急`、`总工时`、`排产状态`、`排产时间`、`工序计划数量`、`指派对象编号`、`指派对象`、`指派数量`、`计划开始`、`计划完成`、`最晚开始`、`优先级`。 +8. 需要推进业务时先选中目标行并核对数量、时间、人员、工位、物料和备注,再点击 `批量排产` 提交。 +9. 需要推进业务时先选中目标行并核对数量、时间、人员、工位、物料和备注,再点击 `排产完成` 提交。 +10. 需要维护已有记录时先选中目标行,再点击或触发表格内 `确认修改`,修改字段后保存并等待成功提示。 +11. 按业务需要点击 `拆分子任务`,操作前先确认选中行和输入内容。 +12. 需要维护已有记录时先选中目标行,再点击或触发表格内 `确定`,修改字段后保存并等待成功提示。 +13. 需要维护已有记录时先选中目标行,再点击或触发表格内 `编辑`,修改字段后保存并等待成功提示。 +14. 按业务需要点击 `取 消`,操作前先确认选中行和输入内容。 +15. 需要维护已有记录时先选中目标行,再点击或触发表格内 `确 定`,修改字段后保存并等待成功提示。 +16. 按业务需要点击 `取 消`,操作前先确认选中行和输入内容。 +17. 需要维护已有记录时先选中目标行,再点击或触发表格内 `确 定`,修改字段后保存并等待成功提示。 +18. 出现弹窗时按弹窗标题处理:`拆分子任务及派工`、`编辑备注信息`;弹窗关闭前确认必填项已保存。 +19. 弹窗或表单内重点填写:`指派对象`、`分配数量`、`计划开始时间`、`计划完成时间`、`最晚开始时间`、`装配任务概述`、`优先级`、`未完成说明`、`派工特殊备注`,提交前逐项核对。 +20. 进入日程页后,单击任务查看详情;拖拽任务可调整计划开始时间,拉伸任务可调整计划完成时间,系统提示确认后才会保存。 +21. 日程保存失败或取消时任务会恢复原日期;保存成功后回到表单页重新查询,核对计划开始和计划完成是否同步。 +22. 保存或提交成功后重新点击查询,确认页面数据已通过 `MES_登录_工位与名称_查询`、`MES_OrderPlanned_Finish`、`MES_OrderPlanned_ChildTask_Add`、`MES_OrderPlanned_ChildTask_Get`、`MES_OrderPlanned_Query` 等后台过程更新。 + +**查询条件/输入项** +- `订单号` +- `任务描述` +- `指派对象` +- `指派对象编号` +- `指派数量` +- `计划开始时间` +- `计划结束时间` +- `最晚开始时间` +- `物料类型` +- `合同号` +- `产品编码` +- `产品名称` +- `工序名称` +- `性质` +- `要求完工日期1` +- `要求完工日期2` +- `排产状态` +- `订单行号` +- `订单拆分内码` +- `派工特殊说明` +- `计划完成时间` +- `优先级` + +**结果表重点列** +- `selection` +- `序号` +- `销售订单` +- `生产订单` +- `订单行号` +- `拆分内码` +- `零件编码` +- `产品名称` +- `计划数` +- `预计齐套时间` +- `是否齐套` +- `齐套检测` +- `齐套锁料` +- `备料日期` +- `加急` +- `总工时` +- `排产状态` +- `排产时间` +- `工序计划数量` +- `指派对象编号` +- `指派对象` +- `指派数量` +- `计划开始` +- `计划完成` +- `最晚开始` +- `优先级` +- `未完成说明` +- `派工特殊备注` +- `最后编辑人` +- `最后编辑时间` +- `工序名称` +- `加急状态1` +- `性质` +- `总工时1` + +**页面按钮/状态/页签** +- `查询` +- `批量排产` +- `排产完成` +- `确认修改` +- `拆分子任务` +- `确定` +- `编辑` +- `取 消` +- `确 定` +- `表单` +- `日程` + +**弹窗/表单重点项** +- `拆分子任务及派工` +- `编辑备注信息` +- `指派对象` +- `分配数量` +- `计划开始时间` +- `计划完成时间` +- `最晚开始时间` +- `装配任务概述` +- `优先级` +- `未完成说明` +- `派工特殊备注` + +**后台处理/外部接口** +- `存储过程:MES_登录_工位与名称_查询` +- `存储过程:MES_OrderPlanned_Finish` +- `存储过程:MES_OrderPlanned_ChildTask_Add` +- `存储过程:MES_OrderPlanned_ChildTask_Get` +- `存储过程:MES_OrderPlanned_Query` +- `存储过程:Prog_MES_LoadStations` +- `存储过程:MES_OrderPlanned_EditTaskPlanned` +- `存储过程:MES_OrderPlanned_SingleTaskPlanned` +- `存储过程:MES_OrderPlanned_DescriptionEdit` + +**操作注意事项** +- 生产执行页面的数据会直接影响报工、工时、质检和库存任务,现场操作必须与实际加工进度一致。 +- 日程拖拽属于直接改计划时间的操作,拖拽前应确认任务未被现场执行锁定。 + +### 21.29 装配任务汇总 + +页面路径:`src/views/ProductionManagement/AssembleTasksSum/index.vue` +所属模块:生产执行管理 +建议使用人员:操作工/班组长/生产主管 + +页面用途:该页面用于生产/装配任务汇总,按订单、人员、工位、状态和时间统计任务执行情况。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 先查看页签:`表单`、`日程`;需要表格处理时进入表单/列表页签,需要看时间排布时进入日程/看板页签。 +3. 在查询区按需要填写筛选条件:`计划开工_Start`、`计划开工_End`、`订单号`、`物料类型`、`合同号`、`产品编码`、`产品名称`、`工序名称`、`性质`、`要求完工日期1`、`要求完工日期2`、`排产状态`。 +4. 如果仍查不到数据,继续补充条件:`工位`、`订单行号`、`订单拆分内码`、`优先级`、`未完成说明`、`派工特殊说明`、`计划开始时间`、`计划完成时间`、`contract编号`、`order编号`,或清空过窄条件后重新查询。 +5. 点击 `查询` 刷新列表;状态按钮会切换任务范围。 +6. 查询后先核对关键列:`序号`、`销售订单`、`生产订单`、`零件编码`、`产品名称`、`计划数`、`工序名称`、`总工时`、`占用情况`、`计划开始时间`、`计划完成时间`、`最晚开始时间`。 +7. 继续横向滚动或展开表格,核对:`要求完工日期`、`收料`、`进度`、`序检`、`优先级`、`未完成说明`、`派工特殊备注`、`编辑`、`最后编辑人`、`最后编辑时间`。 +8. 需要维护已有记录时先选中目标行,再点击或触发表格内 `编辑`,修改字段后保存并等待成功提示。 +9. 按业务需要点击 `取 消`,操作前先确认选中行和输入内容。 +10. 需要维护已有记录时先选中目标行,再点击或触发表格内 `确 定`,修改字段后保存并等待成功提示。 +11. 出现弹窗时按弹窗标题处理:`编辑任务信息`;弹窗关闭前确认必填项已保存。 +12. 弹窗或表单内重点填写:`优先级`、`未完成说明`、`派工特殊备注`,提交前逐项核对。 +13. 进入日程页后,单击任务查看详情;拖拽任务可调整计划开始时间,拉伸任务可调整计划完成时间,系统提示确认后才会保存。 +14. 日程保存失败或取消时任务会恢复原日期;保存成功后回到表单页重新查询,核对计划开始和计划完成是否同步。 +15. 保存或提交成功后重新点击查询,确认页面数据已通过 `MES_登录_工位与名称_查询`、`MES_ProductTask_WorkTimeSum`、`MES_ProductAdmin_Query`、`Prog_MES_LoadStations`、`MES_OrderPlanned_DescriptionEdit` 等后台过程更新。 + +**查询条件/输入项** +- `计划开工_Start` +- `计划开工_End` +- `订单号` +- `物料类型` +- `合同号` +- `产品编码` +- `产品名称` +- `工序名称` +- `性质` +- `要求完工日期1` +- `要求完工日期2` +- `排产状态` +- `工位` +- `订单行号` +- `订单拆分内码` +- `优先级` +- `未完成说明` +- `派工特殊说明` +- `计划开始时间` +- `计划完成时间` +- `contract编号` +- `order编号` + +**结果表重点列** +- `序号` +- `销售订单` +- `生产订单` +- `零件编码` +- `产品名称` +- `计划数` +- `工序名称` +- `总工时` +- `占用情况` +- `计划开始时间` +- `计划完成时间` +- `最晚开始时间` +- `要求完工日期` +- `收料` +- `进度` +- `序检` +- `优先级` +- `未完成说明` +- `派工特殊备注` +- `编辑` +- `最后编辑人` +- `最后编辑时间` + +**页面按钮/状态/页签** +- `查询` +- `编辑` +- `取 消` +- `确 定` +- `表单` +- `日程` + +**弹窗/表单重点项** +- `编辑任务信息` +- `优先级` +- `未完成说明` +- `派工特殊备注` + +**后台处理/外部接口** +- `存储过程:MES_登录_工位与名称_查询` +- `存储过程:MES_ProductTask_WorkTimeSum` +- `存储过程:MES_ProductAdmin_Query` +- `存储过程:Prog_MES_LoadStations` +- `存储过程:MES_OrderPlanned_DescriptionEdit` +- `存储过程:MES_OrderPlanned_EditTaskPlanned` + +**操作注意事项** +- 生产执行页面的数据会直接影响报工、工时、质检和库存任务,现场操作必须与实际加工进度一致。 +- 日程拖拽属于直接改计划时间的操作,拖拽前应确认任务未被现场执行锁定。 + +### 21.30 装配中心 + +页面路径:`src/views/ProductionManagement/AssemblyCenter/index.vue` +所属模块:生产执行管理 +建议使用人员:操作工/班组长/生产主管 + +页面用途:该页面是装配生产执行主界面,装配人员按工位执行开工、报工、送检、退库、缺料查询和图纸查看。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 在查询区按需要填写筛选条件:`物料编号`、`用户ID`、`订单编号`、`订单号`、`零件编号`、`生产状态`、`工位名称`、`计划号`、`销售订单`、`计划开工_Start`、`计划开工_End`、`ItemCode`。 +3. 如果仍查不到数据,继续补充条件:`用户名`、`备注`、`工序说明`、`异常说明`、`本次检数`、`是否加班`、`加班人员`、`特殊加班人员`、`是否休息日`、`是否法定休息日`,或清空过窄条件后重新查询。 +4. 点击 `查询 缺料` 刷新列表;状态按钮会切换任务范围。 +5. 查询后先核对关键列:`序号`、`生产订单`、`销售订单`、`计划号`、`物料编码`、`物料名称`、`齐套`、`发料状态`、`拣配`、`操作`、`加急数量`、`分配数`。 +6. 继续横向滚动或展开表格,核对:`送检数`、`任务状态`、`工序顺序`、`指派对象`、`计划开始`、`计划完成`、`二次派工`、`工序名称`、`开工时间`、`加工状态`、`收料数`、`优先`、`首检`、`序检`。 +7. 按业务需要点击 `上一个 下一个`,操作前先确认选中行和输入内容。 +8. 需要删除时先确认该记录没有正在使用的业务数据,再点击 `删除当前记录 关闭`,按确认提示执行。 +9. 需要维护已有记录时先选中目标行,再点击或触发表格内 `上一个 下一个 保存当前记录 删除当前记录 关闭`,修改字段后保存并等待成功提示。 +10. 需要维护已有记录时先选中目标行,再点击或触发表格内 `确定 关闭`,修改字段后保存并等待成功提示。 +11. 按业务需要点击 `取 消`,操作前先确认选中行和输入内容。 +12. 需要维护已有记录时先选中目标行,再点击或触发表格内 `确 定`,修改字段后保存并等待成功提示。 +13. 需要新增时点击 `新增异常工时`,在弹窗中逐项填写必填字段,确认编码、名称、状态等基础信息后保存。 +14. 需要维护已有记录时先选中目标行,再点击或触发表格内 `编辑`,修改字段后保存并等待成功提示。 +15. 按业务需要点击 `取 消`,操作前先确认选中行和输入内容。 +16. 需要维护已有记录时先选中目标行,再点击或触发表格内 `确 定`,修改字段后保存并等待成功提示。 +17. 出现弹窗时按弹窗标题处理:`首检自检`、`序检自检`、`收检`、`送检`、`异常工时`、`新增工时记录`、`编辑任务信息`、`退库单`;弹窗关闭前确认必填项已保存。 +18. 弹窗或表单内重点填写:`生产订单`、`零件编码`、`计划数量`、`当前时间`、`送检数`、`操作工位`、`操作人`、`操作类别`、`物料编码`、`物料名称`、`工序名称`、`指派对象`、`开始时间`、`结束时间`,提交前逐项核对。 +19. 涉及上传时先选择正确文件,再点击上传/保存;上传后重新查询,确认文件名、版本、上传时间或预览内容已显示。 +20. 保存或提交成功后重新点击查询,确认页面数据已通过 `生产管理_获取人员绑定`、`加急订单_加急明细查询`、`MES_人员工时记录_获取进行中任务2`、`MES_人员工时记录_获取进行中任务`、`工时校验_获取订单列表` 等后台过程更新。 +21. 涉及 SAP/WMS 接口时,必须查看页面成功或失败提示;失败时先记录错误信息,不要连续重复提交同一单据。 +22. 现场执行类操作必须按实际顺序处理:先确认任务和工位,再收料/开工,完成加工或装配后再报工/送检。 + +**查询条件/输入项** +- `物料编号` +- `用户ID` +- `订单编号` +- `订单号` +- `零件编号` +- `生产状态` +- `工位名称` +- `计划号` +- `销售订单` +- `计划开工_Start` +- `计划开工_End` +- `ItemCode` +- `用户名` +- `备注` +- `工序说明` +- `异常说明` +- `本次检数` +- `是否加班` +- `加班人员` +- `特殊加班人员` +- `是否休息日` +- `是否法定休息日` + +**结果表重点列** +- `序号` +- `生产订单` +- `销售订单` +- `计划号` +- `物料编码` +- `物料名称` +- `齐套` +- `发料状态` +- `拣配` +- `操作` +- `加急数量` +- `分配数` +- `送检数` +- `任务状态` +- `工序顺序` +- `指派对象` +- `计划开始` +- `计划完成` +- `二次派工` +- `工序名称` +- `开工时间` +- `加工状态` +- `收料数` +- `优先` +- `首检` +- `序检` +- `检测项目` +- `上限值` +- `下限值` +- `测量单位` +- `检验比例` +- `检具` +- `备注` +- `实测值` + +**页面按钮/状态/页签** +- `查询 缺料` +- `上一个 下一个` +- `删除当前记录 关闭` +- `上一个 下一个 保存当前记录 删除当前记录 关闭` +- `确定 关闭` +- `取 消` +- `确 定` +- `新增异常工时` +- `编辑` +- `取消` +- `关闭` +- `确定` + +**弹窗/表单重点项** +- `首检自检` +- `序检自检` +- `收检` +- `送检` +- `异常工时` +- `新增工时记录` +- `编辑任务信息` +- `退库单` +- `领料单` +- `缺料单` +- `报工结束` +- `图纸` +- `加急明细` +- `加班确认` +- `生产订单` +- `零件编码` +- `计划数量` +- `当前时间` +- `送检数` +- `操作工位` +- `操作人` +- `操作类别` +- `物料编码` +- `物料名称` +- `工序名称` +- `指派对象` +- `开始时间` +- `结束时间` +- `工作内容` +- `备注说明` + +**后台处理/外部接口** +- `存储过程:生产管理_获取人员绑定` +- `存储过程:加急订单_加急明细查询` +- `存储过程:MES_人员工时记录_获取进行中任务2` +- `存储过程:MES_人员工时记录_获取进行中任务` +- `存储过程:工时校验_获取订单列表` +- `存储过程:异常工时_新增操作记录` +- `存储过程:工时校验_获取订单工序` +- `存储过程:MES_登录_工位与名称_查询` +- `存储过程:Prog_MES_LoadProcess` +- `存储过程:MES_ProductCenter_GetTask_zp` +- `存储过程:MES_ProductTask_WorkTimeSum` +- `存储过程:生产管理_装配中心_缺料查询` +- `存储过程:MES_人员工时记录_开始` +- `存储过程:MES_人员工时记录_结束` +- `存储过程:MES_ProductTask_Rest` +- `存储过程:MES_ProductTask_SendInspection` +- `存储过程:加工中心_收检_读取收检记录` +- `存储过程:MES_QulityInspection_ReceiveCheck` +- `存储过程:加工中心_异常工时_获取操作记录列表` +- `存储过程:加工中心_修改工时_保存修改记录` +- `接口:getB1 /ProductionOrders` +- `接口:posttm /stocktask/task/issueordertask` + +**操作注意事项** +- 生产执行页面的数据会直接影响报工、工时、质检和库存任务,现场操作必须与实际加工进度一致。 +- 该页存在 SAP/WMS 调用,失败时应记录返回提示并确认是否已经生成外部单据。 + +### 21.31 设备状态 + +页面路径:`src/views/ProductionManagement/DeviceStatus/index.vue` +所属模块:生产执行管理 +建议使用人员:操作工/班组长/生产主管 + +页面用途:该页面用于查看现场状态,关注工位、设备、任务是否开工、进行中或完成。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 在查询区按需要填写筛选条件:`设备名称`、`参数名称`、`equipmentType`、`dataname`、`设备`。 +3. 点击 `查询` 刷新列表;状态按钮会切换任务范围。 +4. 列表较多时使用分页区切换页码或调整每页条数,避免只检查第一页。 +5. 查询后先核对关键列:`序号`、`工位`、`生产订单`、`计划号`、`销售订单`、`物料名称`、`物料编码`、`顺序`、`工序名称`、`分配数`、`上序合格数`、`加工状态`。 +6. 继续横向滚动或展开表格,核对:`收料状态`、`下序名称`、`优先`、`完成数`、`收检合格数`、`收检不合格数`、`人员名称`、`加急数量`、`任务状态`、`开工时间`、`计划开始`、`计划完成`、`备注`、`收料数`。 +7. 保存或提交成功后重新点击查询,确认页面数据已通过 `MES_登录_工位与名称_查询`、`设备管理_设备状态_查询` 等后台过程更新。 + +**查询条件/输入项** +- `设备名称` +- `参数名称` +- `equipmentType` +- `dataname` +- `设备` + +**结果表重点列** +- `序号` +- `工位` +- `生产订单` +- `计划号` +- `销售订单` +- `物料名称` +- `物料编码` +- `顺序` +- `工序名称` +- `分配数` +- `上序合格数` +- `加工状态` +- `收料状态` +- `下序名称` +- `优先` +- `完成数` +- `收检合格数` +- `收检不合格数` +- `人员名称` +- `加急数量` +- `任务状态` +- `开工时间` +- `计划开始` +- `计划完成` +- `备注` +- `收料数` + +**页面按钮/状态/页签** +- `查询` + +**弹窗/表单重点项** +- 未识别到固定弹窗或表单项。 + +**后台处理/外部接口** +- `存储过程:MES_登录_工位与名称_查询` +- `存储过程:设备管理_设备状态_查询` + +**操作注意事项** +- 生产执行页面的数据会直接影响报工、工时、质检和库存任务,现场操作必须与实际加工进度一致。 + +### 21.32 机加中心 + +页面路径:`src/views/ProductionManagement/MachiningCenter/index.vue` +所属模块:生产执行管理 +建议使用人员:操作工/班组长/生产主管 + +页面用途:该页面是机加生产执行主界面,操作工按工位执行收料、开工、暂停、报工、检验、退库、发料和图纸查看。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 先查看页签:`待我处理`、`我发起的`、`我已处理`;需要表格处理时进入表单/列表页签,需要看时间排布时进入日程/看板页签。 +3. 在查询区按需要填写筛选条件:`指派对象`、`班次`、`物料编号`、`订单编号`、`optor`、`订单号`、`零件编号`、`生产状态`、`工位名称`、`用户ID`、`计划号`、`销售订单`。 +4. 如果仍查不到数据,继续补充条件:`计划开工_Start`、`计划开工_End`、`partCount`、`指派数量`、`selectedOperators`、`加班人员`、`特殊加班人员`、`是否加班`、`是否休息日`、`是否法定休息日`,或清空过窄条件后重新查询。 +5. 点击页面上的查询或刷新类按钮获取最新数据;如果页面自动加载,则先核对默认列表是否符合当前业务范围。 +6. 查询后先核对关键列:`序号`、`生产订单`、`销售订单`、`物料名称`、`物料编码`、`顺序`、`工序名称`、`分配数`、`上序合格数`、`加工状态`、`收料状态`、`加急数量`。 +7. 继续横向滚动或展开表格,核对:`下序名称`、`加急`、`优先`、`首检`、`序检`、`内码`、`备注`、`指派对象`、`完成数`、`任务状态`、`计划号`、`计划开始`、`计划完成`、`开工时间`。 +8. 按业务需要点击 `取 消`,操作前先确认选中行和输入内容。 +9. 需要维护已有记录时先选中目标行,再点击或触发表格内 `确 定`,修改字段后保存并等待成功提示。 +10. 按业务需要点击 `取 消`,操作前先确认选中行和输入内容。 +11. 需要维护已有记录时先选中目标行,再点击或触发表格内 `确 定`,修改字段后保存并等待成功提示。 +12. 按业务需要点击 `取 消`,操作前先确认选中行和输入内容。 +13. 需要维护已有记录时先选中目标行,再点击或触发表格内 `确 定`,修改字段后保存并等待成功提示。 +14. 按业务需要点击 `上一个 下一个`,操作前先确认选中行和输入内容。 +15. 需要删除时先确认该记录没有正在使用的业务数据,再点击 `删除当前记录 关闭`,按确认提示执行。 +16. 需要维护已有记录时先选中目标行,再点击或触发表格内 `上一个 下一个 保存当前记录 删除当前记录 关闭`,修改字段后保存并等待成功提示。 +17. 需要维护已有记录时先选中目标行,再点击或触发表格内 `确定 关闭`,修改字段后保存并等待成功提示。 +18. 出现弹窗时按弹窗标题处理:`辅助结束`、`收料`、`开始加工`、`首检自检`、`序检自检`、`收检`、`检验记录`、`'生产订单检验详情 ' + currentInspectionRecord.计划号`;弹窗关闭前确认必填项已保存。 +19. 弹窗或表单内重点填写:`工位名称`、`当前订单号`、`合同号`、`零件编号`、`分配数`、`已完成`、`生产订单`、`销售订单`、`零件编码`、`当前时间`、`辅助工件`、`操作工位`、`操作人`、`调机人员`,提交前逐项核对。 +20. 涉及上传时先选择正确文件,再点击上传/保存;上传后重新查询,确认文件名、版本、上传时间或预览内容已显示。 +21. 保存或提交成功后重新点击查询,确认页面数据已通过 `生产管理_加工中心_获取设备人员`、`生产管理_加工中心_获取班次信息`、`加急订单_加急明细查询`、`生产管理_获取人员绑定`、`工时校验_获取订单工序` 等后台过程更新。 +22. 涉及 SAP/WMS 接口时,必须查看页面成功或失败提示;失败时先记录错误信息,不要连续重复提交同一单据。 +23. 现场执行类操作必须按实际顺序处理:先确认任务和工位,再收料/开工,完成加工或装配后再报工/送检。 + +**查询条件/输入项** +- `指派对象` +- `班次` +- `物料编号` +- `订单编号` +- `optor` +- `订单号` +- `零件编号` +- `生产状态` +- `工位名称` +- `用户ID` +- `计划号` +- `销售订单` +- `计划开工_Start` +- `计划开工_End` +- `partCount` +- `指派数量` +- `selectedOperators` +- `加班人员` +- `特殊加班人员` +- `是否加班` +- `是否休息日` +- `是否法定休息日` + +**结果表重点列** +- `序号` +- `生产订单` +- `销售订单` +- `物料名称` +- `物料编码` +- `顺序` +- `工序名称` +- `分配数` +- `上序合格数` +- `加工状态` +- `收料状态` +- `加急数量` +- `下序名称` +- `加急` +- `优先` +- `首检` +- `序检` +- `内码` +- `备注` +- `指派对象` +- `完成数` +- `任务状态` +- `计划号` +- `计划开始` +- `计划完成` +- `开工时间` +- `收料数` +- `检测项目` +- `上限值` +- `下限值` +- `测量单位` +- `检验比例` +- `检具` +- `实测值` + +**页面按钮/状态/页签** +- `取 消` +- `确 定` +- `上一个 下一个` +- `删除当前记录 关闭` +- `上一个 下一个 保存当前记录 删除当前记录 关闭` +- `确定 关闭` +- `关闭` +- `新增异常工时` +- `编辑` +- `取消` +- `处理` +- `转办` +- `发起新流程` +- `查看进度` +- `完结` +- `查看详情` +- `点击上传` +- `添加审批人` +- `查询` +- `提 交` +- `确 认 完 结` +- `确定` +- `待我处理` +- `我发起的` +- `我已处理` + +**弹窗/表单重点项** +- `辅助结束` +- `收料` +- `开始加工` +- `首检自检` +- `序检自检` +- `收检` +- `检验记录` +- `'生产订单检验详情 ' + currentInspectionRecord.计划号` +- `检测详情` +- `报工` +- `异常工时` +- `新增工时记录` +- `编辑任务信息` +- `异常管控` +- `发起新流程` +- `处理任务` +- `流程进度详情` +- `转办流程` +- `完结流程` +- `上传附件` +- `退库单` +- `领料单` +- `图纸` +- `加急明细` +- `报工确认` +- `工位名称` +- `当前订单号` +- `合同号` +- `零件编号` +- `分配数` + +**后台处理/外部接口** +- `存储过程:生产管理_加工中心_获取设备人员` +- `存储过程:生产管理_加工中心_获取班次信息` +- `存储过程:加急订单_加急明细查询` +- `存储过程:生产管理_获取人员绑定` +- `存储过程:工时校验_获取订单工序` +- `存储过程:工时校验_获取订单列表` +- `存储过程:异常工时_新增操作记录` +- `存储过程:MES_操作记录_获取暂停状态` +- `存储过程:MES_操作记录_获取任务暂停状态` +- `存储过程:MES_登录_工位与名称_查询` +- `存储过程:Prog_MES_LoadProcess` +- `存储过程:查询字典` +- `存储过程:人员管理_人员信息查询_质检部门_查询` +- `存储过程:MES_ProductTask_HelpStart` +- `存储过程:Prog_MES_GetProductOrder_byAID` +- `存储过程:MES_ProductCenter_GetTask` +- `存储过程:MES_ProductTask_WorkTimeSum` +- `存储过程:MES_ProductTask_HelpEnd` +- `存储过程:MES_ProductTask_MaterialRecieved` +- `存储过程:MES_ProductTask_Rest` +- `接口:posttm /stocktask/task/receiptordertask` +- `接口:getB1 /ProductionOrders` +- `接口:posttm /stocktask/task/issueordertask` + +**操作注意事项** +- 生产执行页面的数据会直接影响报工、工时、质检和库存任务,现场操作必须与实际加工进度一致。 +- 该页存在 SAP/WMS 调用,失败时应记录返回提示并确认是否已经生成外部单据。 + +### 21.33 外协管理 + +页面路径:`src/views/ProductionManagement/OutsourceMange/index.vue` +所属模块:生产执行管理 +建议使用人员:操作工/班组长/生产主管 + +页面用途:该页面用于外协任务管理,处理外协派工、供应商、发料、收料、质检记录和 SAP 采购请求。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 在查询区按需要填写筛选条件:`外协备注`、`单重`、`打印数量`、`订单号`、`产品编码`、`产品名称`、`工序名称`、`派工状态`、`订单状态`、`执行状态`、`计划号`、`optor`。 +3. 如果仍查不到数据,继续补充条件:`recievCount`、`备注`、`order编号`、`plannum`、`productCode`、`itemName`、`processName`、`workstate`、`orderstate`、`dostate`,或清空过窄条件后重新查询。 +4. 点击 `查询 派工并同步SAP` 刷新列表;状态按钮会切换任务范围。 +5. 查询后先核对关键列:`selection`、`序号`、`生产订单`、`计划号`、`工序名称`、`物料名称`、`同步状态`、`上序合格数`、`指派数量`、`打印数量`、`发料数量`、`收货数量`。 +6. 继续横向滚动或展开表格,核对:`备注`、`单重`、`物料编码`、`打印次数`、`计划开始时间`、`计划完成时间`、`操作`、`时间`、`数量`。 +7. 需要留存或流转时点击 `打印`,导出/打印前确认当前查询条件和选中记录正确。 +8. 需要推进业务时先选中目标行并核对数量、时间、人员、工位、物料和备注,再点击 `发料` 提交。 +9. 按业务需要点击 `收货`,操作前先确认选中行和输入内容。 +10. 需要维护已有记录时先选中目标行,再点击或触发表格内 `编辑`,修改字段后保存并等待成功提示。 +11. 按业务需要点击 `历史记录`,操作前先确认选中行和输入内容。 +12. 需要查看明细时点击 `查看图纸`,在弹窗或新区域核对图纸、明细、进度、记录或关联单据。 +13. 需要查看明细时点击 `工艺图纸`,在弹窗或新区域核对图纸、明细、进度、记录或关联单据。 +14. 按业务需要点击 `取 消`,操作前先确认选中行和输入内容。 +15. 需要维护已有记录时先选中目标行,再点击或触发表格内 `确 定`,修改字段后保存并等待成功提示。 +16. 按业务需要点击 `取 消`,操作前先确认选中行和输入内容。 +17. 出现弹窗时按弹窗标题处理:`发料`、`收货`、`编辑`、`历史发料`、`图纸`;弹窗关闭前确认必填项已保存。 +18. 弹窗或表单内重点填写:`生产订单`、`销售订单`、`物料编号`、`分配数`、`上序合格数`、`已发料`、`发料工位`、`本次发料`、`操作人`、`发料数`、`已收货`、`本次收货`、`打印数量`、`单重`,提交前逐项核对。 +19. 涉及上传时先选择正确文件,再点击上传/保存;上传后重新查询,确认文件名、版本、上传时间或预览内容已显示。 +20. 保存或提交成功后重新点击查询,确认页面数据已通过 `生产管理_外协管理_外协历史查询`、`计划排产_派工`、`生产管理_外协管理_更新打印次数`、`生产管理_外协管理_更新备注`、`工艺管理_图纸维护_查看图纸` 等后台过程更新。 +21. 涉及 SAP/WMS 接口时,必须查看页面成功或失败提示;失败时先记录错误信息,不要连续重复提交同一单据。 + +**查询条件/输入项** +- `外协备注` +- `单重` +- `打印数量` +- `订单号` +- `产品编码` +- `产品名称` +- `工序名称` +- `派工状态` +- `订单状态` +- `执行状态` +- `计划号` +- `optor` +- `recievCount` +- `备注` +- `order编号` +- `plannum` +- `productCode` +- `itemName` +- `processName` +- `workstate` +- `orderstate` +- `dostate` + +**结果表重点列** +- `selection` +- `序号` +- `生产订单` +- `计划号` +- `工序名称` +- `物料名称` +- `同步状态` +- `上序合格数` +- `指派数量` +- `打印数量` +- `发料数量` +- `收货数量` +- `备注` +- `单重` +- `物料编码` +- `打印次数` +- `计划开始时间` +- `计划完成时间` +- `操作` +- `时间` +- `数量` + +**页面按钮/状态/页签** +- `查询 派工并同步SAP` +- `打印` +- `发料` +- `收货` +- `编辑` +- `历史记录` +- `查看图纸` +- `工艺图纸` +- `取 消` +- `确 定` +- `关 闭` +- `关闭` + +**弹窗/表单重点项** +- `发料` +- `收货` +- `编辑` +- `历史发料` +- `图纸` +- `生产订单` +- `销售订单` +- `物料编号` +- `分配数` +- `上序合格数` +- `已发料` +- `发料工位` +- `本次发料` +- `操作人` +- `发料数` +- `已收货` +- `本次收货` +- `打印数量` +- `单重` +- `备注` + +**后台处理/外部接口** +- `存储过程:生产管理_外协管理_外协历史查询` +- `存储过程:计划排产_派工` +- `存储过程:生产管理_外协管理_更新打印次数` +- `存储过程:生产管理_外协管理_更新备注` +- `存储过程:工艺管理_图纸维护_查看图纸` +- `存储过程:工艺管理_工艺维护_查看图纸` +- `存储过程:生产管理_外协管理_查询外协全部` +- `存储过程:生产管理_外协管理_外协发料查询` +- `存储过程:生产管理_外协管理_外协发料保存` +- `存储过程:生产管理_外协管理_外协收料保存` +- `接口:postB1 /PurchaseRequests` + +**操作注意事项** +- 生产执行页面的数据会直接影响报工、工时、质检和库存任务,现场操作必须与实际加工进度一致。 +- 该页存在 SAP/WMS 调用,失败时应记录返回提示并确认是否已经生成外部单据。 + +### 21.34 外协报表 + +页面路径:`src/views/ProductionManagement/OutsourceSheet/index.vue` +所属模块:生产执行管理 +建议使用人员:操作工/班组长/生产主管 + +页面用途:该页面用于外协报表查询和导出,跟踪外协订单、供应商、数量、质检和结算状态。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 在查询区按需要填写筛选条件:`订单号`、`产品编码`、`产品名称`、`供应商`、`状态过滤`、`订单编号`、`order编号`、`contract编号`、`productCode`、`productName`、`QualityStatus`、`supplierName`。 +3. 如果仍查不到数据,继续补充条件:`statusFilter`、`合同号`、`零件编码`、`零件名称`、`质检类型`,或清空过窄条件后重新查询。 +4. 点击 `查询` 刷新列表;状态按钮会切换任务范围。 +5. 列表较多时使用分页区切换页码或调整每页条数,避免只检查第一页。 +6. 查询后先核对关键列:`selection`、`供应商`、`订单号`、`计划号`、`合同号`、`零件编码`、`零件名称`、`工序名称`、`材质`、`数量`、`单价`、`金额`。 +7. 继续横向滚动或展开表格,核对:`发料日期`、`要求到货日期`、`外协预计到货`、`收货日期`、`收货数量`、`合格数量`、`报废数量`、`开票状态`、`发料数量`、`收料数量`。 +8. 需要留存或流转时点击 `Excel导出`,导出/打印前确认当前查询条件和选中记录正确。 +9. 保存或提交成功后重新点击查询,确认页面数据已通过 `生产管理_外协报表_导出`、`系统管理_人员管理_所有有效人员查询`、`工时校验_获取订单列表`、`工时校验_获取订单工序`、`生产管理_外协报表_查询` 等后台过程更新。 + +**查询条件/输入项** +- `订单号` +- `产品编码` +- `产品名称` +- `供应商` +- `状态过滤` +- `订单编号` +- `order编号` +- `contract编号` +- `productCode` +- `productName` +- `QualityStatus` +- `supplierName` +- `statusFilter` +- `合同号` +- `零件编码` +- `零件名称` +- `质检类型` + +**结果表重点列** +- `selection` +- `供应商` +- `订单号` +- `计划号` +- `合同号` +- `零件编码` +- `零件名称` +- `工序名称` +- `材质` +- `数量` +- `单价` +- `金额` +- `发料日期` +- `要求到货日期` +- `外协预计到货` +- `收货日期` +- `收货数量` +- `合格数量` +- `报废数量` +- `开票状态` +- `发料数量` +- `收料数量` + +**页面按钮/状态/页签** +- `查询` +- `Excel导出` + +**弹窗/表单重点项** +- 未识别到固定弹窗或表单项。 + +**后台处理/外部接口** +- `存储过程:生产管理_外协报表_导出` +- `存储过程:系统管理_人员管理_所有有效人员查询` +- `存储过程:工时校验_获取订单列表` +- `存储过程:工时校验_获取订单工序` +- `存储过程:生产管理_外协报表_查询` + +**操作注意事项** +- 生产执行页面的数据会直接影响报工、工时、质检和库存任务,现场操作必须与实际加工进度一致。 + +### 21.35 人员绑定 + +页面路径:`src/views/ProductionManagement/PersonnelBinding/index.vue` +所属模块:生产执行管理 +建议使用人员:操作工/班组长/生产主管 + +页面用途:该页面用于维护人员与工位绑定关系,控制或提示人员可操作的工位。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 在查询区按需要填写筛选条件:`searchWorkstationName`、`selectedPersonnel`、`工位名称`。 +3. 点击 `查询` 刷新列表;状态按钮会切换任务范围。 +4. 查询后先核对关键列:`序号`、`工位名称`、`工位号`、`绑定人员`、`操作`。 +5. 按业务需要点击 `绑定人员`,操作前先确认选中行和输入内容。 +6. 需要维护已有记录时先选中目标行,再点击或触发表格内 `确 定`,修改字段后保存并等待成功提示。 +7. 按业务需要点击 `取 消`,操作前先确认选中行和输入内容。 +8. 出现弹窗时按弹窗标题处理:`绑定人员`;弹窗关闭前确认必填项已保存。 +9. 保存或提交成功后重新点击查询,确认页面数据已通过 `MES_登录_工位与名称_查询`、`系统管理_人员管理_所有有效人员查询`、`系统管理_工位管理_工位绑定人员查询`、`系统管理_工位管理_工位绑定人员保存` 等后台过程更新。 + +**查询条件/输入项** +- `searchWorkstationName` +- `selectedPersonnel` +- `工位名称` + +**结果表重点列** +- `序号` +- `工位名称` +- `工位号` +- `绑定人员` +- `操作` + +**页面按钮/状态/页签** +- `查询` +- `绑定人员` +- `确 定` +- `取 消` + +**弹窗/表单重点项** +- `绑定人员` + +**后台处理/外部接口** +- `存储过程:MES_登录_工位与名称_查询` +- `存储过程:系统管理_人员管理_所有有效人员查询` +- `存储过程:系统管理_工位管理_工位绑定人员查询` +- `存储过程:系统管理_工位管理_工位绑定人员保存` + +**操作注意事项** +- 生产执行页面的数据会直接影响报工、工时、质检和库存任务,现场操作必须与实际加工进度一致。 + +### 21.36 拣配任务 + +页面路径:`src/views/ProductionManagement/PickingTask/index.vue` +所属模块:生产执行管理 +建议使用人员:操作工/班组长/生产主管 + +页面用途:该页面用于生产领料/拣配任务查询与处理,核对订单物料和库存任务。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 在查询区按需要填写筛选条件:`物料编号`、`合同号`、`订单号`、`零件编号`、`位置`、`contract编号`、`order编号`、`part编号`、`attribute`、`positionstate`、`finishstate`、`销售订单`。 +3. 如果仍查不到数据,继续补充条件:`生产订单`,或清空过窄条件后重新查询。 +4. 点击 `查询` 刷新列表;状态按钮会切换任务范围。 +5. 查询后先核对关键列:`序号`、`项目`、`计划号`、`生产订单号`、`物料名称`、`产成品物料编号`、`计划生产数`、`加急数量`、`计划数量`、`拣配日期`、`预计齐套时间`、`检验操作人`。 +6. 继续横向滚动或展开表格,核对:`检验时间`、`操作`。 +7. 需要推进业务时先选中目标行并核对数量、时间、人员、工位、物料和备注,再点击 `转至 完成 --> 生产订单 加急数量 物料编号 关闭` 提交。 +8. 出现弹窗时按弹窗标题处理:`加急明细`;弹窗关闭前确认必填项已保存。 +9. 保存或提交成功后重新点击查询,确认页面数据已通过 `加急订单_加急明细查询`、`生产管理_拣配任务_查询` 等后台过程更新。 + +**查询条件/输入项** +- `物料编号` +- `合同号` +- `订单号` +- `零件编号` +- `位置` +- `contract编号` +- `order编号` +- `part编号` +- `attribute` +- `positionstate` +- `finishstate` +- `销售订单` +- `生产订单` + +**结果表重点列** +- `序号` +- `项目` +- `计划号` +- `生产订单号` +- `物料名称` +- `产成品物料编号` +- `计划生产数` +- `加急数量` +- `计划数量` +- `拣配日期` +- `预计齐套时间` +- `检验操作人` +- `检验时间` +- `操作` + +**页面按钮/状态/页签** +- `查询` +- `转至 完成 --> 生产订单 加急数量 物料编号 关闭` + +**弹窗/表单重点项** +- `加急明细` + +**后台处理/外部接口** +- `存储过程:加急订单_加急明细查询` +- `存储过程:生产管理_拣配任务_查询` + +**操作注意事项** +- 生产执行页面的数据会直接影响报工、工时、质检和库存任务,现场操作必须与实际加工进度一致。 + +### 21.37 生产计划跟踪 + +页面路径:`src/views/ProductionManagement/ProductionPlanTrack/index.vue` +所属模块:生产执行管理 +建议使用人员:操作工/班组长/生产主管 + +页面用途:该页面用于跟踪生产/装配计划执行进度,查看计划、完成、延期和异常情况。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 在查询区按需要填写筛选条件:`物料编号`、`订单号`、`物料类型`、`合同号`、`产品编码`、`产品名称`、`工序名称`、`计划开始1`、`计划开始2`、`计划完成1`、`计划完成2`、`要求完工日期1`。 +3. 如果仍查不到数据,继续补充条件:`要求完工日期2`、`排产状态`、`自制件属性`、`指派对象`、`计划号`、`加急状态`、`是否外协`、`订单行号`、`订单拆分内码`、`优先级`,或清空过窄条件后重新查询。 +4. 点击 `查询` 刷新列表;状态按钮会切换任务范围。 +5. 查询后先核对关键列:`expand`、`序号`、`工序名称`、`计划数量`、`指派对象`、`外协`、`计划开始时间`、`计划结束时间`、`实际开始时间`、`实际结束时间`、`完成进度`、`完成数量`。 +6. 继续横向滚动或展开表格,核对:`外协发料数量`、`合格数`、`不良数`、`任务状态`、`加工状态`、`销售订单`、`计划号`、`生产订单`、`产品编码`、`产品名称`、`加急数量`、`入库数量`、`要求完工日`、`排产`。 +7. 需要推进业务时先选中目标行并核对数量、时间、人员、工位、物料和备注,再点击 `关闭` 提交。 +8. 出现弹窗时按弹窗标题处理:`加急明细`;弹窗关闭前确认必填项已保存。 +9. 保存或提交成功后重新点击查询,确认页面数据已通过 `加急订单_加急明细查询`、`生产管理_生产计划跟踪`、`MES_OrderPlanned_DescriptionEdit`、`Prog_MES_LoadStations` 等后台过程更新。 + +**查询条件/输入项** +- `物料编号` +- `订单号` +- `物料类型` +- `合同号` +- `产品编码` +- `产品名称` +- `工序名称` +- `计划开始1` +- `计划开始2` +- `计划完成1` +- `计划完成2` +- `要求完工日期1` +- `要求完工日期2` +- `排产状态` +- `自制件属性` +- `指派对象` +- `计划号` +- `加急状态` +- `是否外协` +- `订单行号` +- `订单拆分内码` +- `优先级` + +**结果表重点列** +- `expand` +- `序号` +- `工序名称` +- `计划数量` +- `指派对象` +- `外协` +- `计划开始时间` +- `计划结束时间` +- `实际开始时间` +- `实际结束时间` +- `完成进度` +- `完成数量` +- `外协发料数量` +- `合格数` +- `不良数` +- `任务状态` +- `加工状态` +- `销售订单` +- `计划号` +- `生产订单` +- `产品编码` +- `产品名称` +- `加急数量` +- `入库数量` +- `要求完工日` +- `排产` +- `拣配` +- `开工` +- `终检` +- `加急` +- `优先级` +- `当前序` +- `工艺路线` + +**页面按钮/状态/页签** +- `查询` +- `关闭` + +**弹窗/表单重点项** +- `加急明细` + +**后台处理/外部接口** +- `存储过程:加急订单_加急明细查询` +- `存储过程:生产管理_生产计划跟踪` +- `存储过程:MES_OrderPlanned_DescriptionEdit` +- `存储过程:Prog_MES_LoadStations` + +**操作注意事项** +- 生产执行页面的数据会直接影响报工、工时、质检和库存任务,现场操作必须与实际加工进度一致。 + +### 21.38 生产任务管理 + +页面路径:`src/views/ProductionManagement/ProductionTaskManage/index.vue` +所属模块:生产执行管理 +建议使用人员:操作工/班组长/生产主管 + +页面用途:该页面用于生产/装配任务管理,查询任务、查看工时、维护派工和任务说明。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 先查看页签:`表单`、`日程`;需要表格处理时进入表单/列表页签,需要看时间排布时进入日程/看板页签。 +3. 在查询区按需要填写筛选条件:`订单号`、`订单行号`、`订单拆分内码`、`指派对象编号`、`指派对象`、`指派数量`、`派工特殊说明`、`计划开始时间`、`计划完成时间`、`最晚开始时间`、`计划开工_Start`、`计划开工_End`。 +4. 如果仍查不到数据,继续补充条件:`物料类型`、`合同号`、`产品编码`、`产品名称`、`工序名称`、`性质`、`要求完工日期1`、`要求完工日期2`、`排产状态`、`工位`,或清空过窄条件后重新查询。 +5. 点击 `查询` 刷新列表;状态按钮会切换任务范围。 +6. 查询后先核对关键列:`序号`、`销售订单`、`生产订单`、`零件编码`、`产品名称`、`计划数`、`工序名称`、`性质`、`总工时`、`占用情况`、`指派对象编号`、`指派对象`。 +7. 继续横向滚动或展开表格,核对:`指派数量`、`计划开始时间`、`计划完成时间`、`最晚开始时间`、`要求完工日期`、`可执行`、`收料`、`开工`、`首检`、`巡检`、`外协`、`派工调整`、`外协通知`、`进度`。 +8. 按业务需要点击 `表单`,操作前先确认选中行和输入内容。 +9. 按业务需要点击 `日程`,操作前先确认选中行和输入内容。 +10. 需要推进业务时先选中目标行并核对数量、时间、人员、工位、物料和备注,再点击 `派工调整` 提交。 +11. 按业务需要点击 `外协通知`,操作前先确认选中行和输入内容。 +12. 按业务需要点击 `已发起`,操作前先确认选中行和输入内容。 +13. 需要维护已有记录时先选中目标行,再点击或触发表格内 `编辑`,修改字段后保存并等待成功提示。 +14. 按业务需要点击 `取 消`,操作前先确认选中行和输入内容。 +15. 需要维护已有记录时先选中目标行,再点击或触发表格内 `确 定`,修改字段后保存并等待成功提示。 +16. 按业务需要点击 `取 消`,操作前先确认选中行和输入内容。 +17. 需要维护已有记录时先选中目标行,再点击或触发表格内 `确 定`,修改字段后保存并等待成功提示。 +18. 出现弹窗时按弹窗标题处理:`派工调整`、`编辑任务信息`;弹窗关闭前确认必填项已保存。 +19. 弹窗或表单内重点填写:`指派对象`、`分配数量`、`计划开始时间`、`计划完成时间`、`最晚开始时间`、`派工特殊说明`、`优先级`、`未完成说明`、`派工特殊备注`,提交前逐项核对。 +20. 进入日程页后,单击任务查看详情;拖拽任务可调整计划开始时间,拉伸任务可调整计划完成时间,系统提示确认后才会保存。 +21. 日程保存失败或取消时任务会恢复原日期;保存成功后回到表单页重新查询,核对计划开始和计划完成是否同步。 +22. 保存或提交成功后重新点击查询,确认页面数据已通过 `MES_登录_工位与名称_查询`、`MES_OrderPlanned_SingleTaskPlanned`、`MES_ProductTask_WorkTimeSum`、`MES_ProductAdmin_Query`、`Prog_MES_LoadStations` 等后台过程更新。 + +**查询条件/输入项** +- `订单号` +- `订单行号` +- `订单拆分内码` +- `指派对象编号` +- `指派对象` +- `指派数量` +- `派工特殊说明` +- `计划开始时间` +- `计划完成时间` +- `最晚开始时间` +- `计划开工_Start` +- `计划开工_End` +- `物料类型` +- `合同号` +- `产品编码` +- `产品名称` +- `工序名称` +- `性质` +- `要求完工日期1` +- `要求完工日期2` +- `排产状态` +- `工位` + +**结果表重点列** +- `序号` +- `销售订单` +- `生产订单` +- `零件编码` +- `产品名称` +- `计划数` +- `工序名称` +- `性质` +- `总工时` +- `占用情况` +- `指派对象编号` +- `指派对象` +- `指派数量` +- `计划开始时间` +- `计划完成时间` +- `最晚开始时间` +- `要求完工日期` +- `可执行` +- `收料` +- `开工` +- `首检` +- `巡检` +- `外协` +- `派工调整` +- `外协通知` +- `进度` +- `报废数` +- `序检` +- `测试` +- `入库` +- `优先级` +- `未完成说明` +- `派工特殊备注` +- `编辑` + +**页面按钮/状态/页签** +- `查询` +- `表单` +- `日程` +- `派工调整` +- `外协通知` +- `已发起` +- `编辑` +- `取 消` +- `确 定` +- `表单` +- `日程` + +**弹窗/表单重点项** +- `派工调整` +- `编辑任务信息` +- `指派对象` +- `分配数量` +- `计划开始时间` +- `计划完成时间` +- `最晚开始时间` +- `派工特殊说明` +- `优先级` +- `未完成说明` +- `派工特殊备注` + +**后台处理/外部接口** +- `存储过程:MES_登录_工位与名称_查询` +- `存储过程:MES_OrderPlanned_SingleTaskPlanned` +- `存储过程:MES_ProductTask_WorkTimeSum` +- `存储过程:MES_ProductAdmin_Query` +- `存储过程:Prog_MES_LoadStations` +- `存储过程:Prog_MES_SingleTaskPlanned` +- `存储过程:MES_OrderPlanned_DescriptionEdit` +- `存储过程:MES_ProductTask_Notice` +- `存储过程:MES_OrderPlanned_EditTaskPlanned` + +**操作注意事项** +- 生产执行页面的数据会直接影响报工、工时、质检和库存任务,现场操作必须与实际加工进度一致。 +- 日程拖拽属于直接改计划时间的操作,拖拽前应确认任务未被现场执行锁定。 + +### 21.39 生产任务汇总 + +页面路径:`src/views/ProductionManagement/ProductionTasksSum/index.vue` +所属模块:生产执行管理 +建议使用人员:操作工/班组长/生产主管 + +页面用途:该页面用于生产/装配任务汇总,按订单、人员、工位、状态和时间统计任务执行情况。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 先查看页签:`表单`、`日程`;需要表格处理时进入表单/列表页签,需要看时间排布时进入日程/看板页签。 +3. 在查询区按需要填写筛选条件:`计划开工_Start`、`计划开工_End`、`订单号`、`物料类型`、`合同号`、`产品编码`、`产品名称`、`工序名称`、`性质`、`要求完工日期1`、`要求完工日期2`、`排产状态`。 +4. 如果仍查不到数据,继续补充条件:`工位`、`订单行号`、`订单拆分内码`、`优先级`、`未完成说明`、`派工特殊说明`、`计划开始时间`、`计划完成时间`、`contract编号`、`order编号`,或清空过窄条件后重新查询。 +5. 点击 `查询` 刷新列表;状态按钮会切换任务范围。 +6. 查询后先核对关键列:`序号`、`销售订单`、`生产订单`、`零件编码`、`产品名称`、`计划数`、`工序名称`、`总工时`、`占用情况`、`计划开始时间`、`计划完成时间`、`最晚开始时间`。 +7. 继续横向滚动或展开表格,核对:`要求完工日期`、`收料`、`进度`、`序检`、`优先级`、`未完成说明`、`派工特殊备注`、`编辑`、`最后编辑人`、`最后编辑时间`。 +8. 需要维护已有记录时先选中目标行,再点击或触发表格内 `编辑`,修改字段后保存并等待成功提示。 +9. 按业务需要点击 `取 消`,操作前先确认选中行和输入内容。 +10. 需要维护已有记录时先选中目标行,再点击或触发表格内 `确 定`,修改字段后保存并等待成功提示。 +11. 出现弹窗时按弹窗标题处理:`编辑任务信息`;弹窗关闭前确认必填项已保存。 +12. 弹窗或表单内重点填写:`优先级`、`未完成说明`、`派工特殊备注`,提交前逐项核对。 +13. 进入日程页后,单击任务查看详情;拖拽任务可调整计划开始时间,拉伸任务可调整计划完成时间,系统提示确认后才会保存。 +14. 日程保存失败或取消时任务会恢复原日期;保存成功后回到表单页重新查询,核对计划开始和计划完成是否同步。 +15. 保存或提交成功后重新点击查询,确认页面数据已通过 `MES_登录_工位与名称_查询`、`MES_ProductTask_WorkTimeSum`、`生产管理_生产任务汇总`、`Prog_MES_LoadStations`、`MES_OrderPlanned_DescriptionEdit` 等后台过程更新。 + +**查询条件/输入项** +- `计划开工_Start` +- `计划开工_End` +- `订单号` +- `物料类型` +- `合同号` +- `产品编码` +- `产品名称` +- `工序名称` +- `性质` +- `要求完工日期1` +- `要求完工日期2` +- `排产状态` +- `工位` +- `订单行号` +- `订单拆分内码` +- `优先级` +- `未完成说明` +- `派工特殊说明` +- `计划开始时间` +- `计划完成时间` +- `contract编号` +- `order编号` + +**结果表重点列** +- `序号` +- `销售订单` +- `生产订单` +- `零件编码` +- `产品名称` +- `计划数` +- `工序名称` +- `总工时` +- `占用情况` +- `计划开始时间` +- `计划完成时间` +- `最晚开始时间` +- `要求完工日期` +- `收料` +- `进度` +- `序检` +- `优先级` +- `未完成说明` +- `派工特殊备注` +- `编辑` +- `最后编辑人` +- `最后编辑时间` + +**页面按钮/状态/页签** +- `查询` +- `编辑` +- `取 消` +- `确 定` +- `表单` +- `日程` + +**弹窗/表单重点项** +- `编辑任务信息` +- `优先级` +- `未完成说明` +- `派工特殊备注` + +**后台处理/外部接口** +- `存储过程:MES_登录_工位与名称_查询` +- `存储过程:MES_ProductTask_WorkTimeSum` +- `存储过程:生产管理_生产任务汇总` +- `存储过程:Prog_MES_LoadStations` +- `存储过程:MES_OrderPlanned_DescriptionEdit` +- `存储过程:MES_OrderPlanned_EditTaskPlanned` + +**操作注意事项** +- 生产执行页面的数据会直接影响报工、工时、质检和库存任务,现场操作必须与实际加工进度一致。 +- 日程拖拽属于直接改计划时间的操作,拖拽前应确认任务未被现场执行锁定。 + +### 21.40 销售外协管理 + +页面路径:`src/views/ProductionManagement/SaleOutsourceMange/index.vue` +所属模块:生产执行管理 +建议使用人员:操作工/班组长/生产主管 + +页面用途:该页面用于外协任务管理,处理外协派工、供应商、发料、收料、质检记录和 SAP 采购请求。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 在查询区按需要填写筛选条件:`外协备注`、`单重`、`打印数量`、`订单号`、`产品编码`、`产品名称`、`工序名称`、`派工状态`、`发料状态`、`订单状态`、`执行状态`、`计划号`。 +3. 如果仍查不到数据,继续补充条件:`optor`、`recievCount`、`备注`、`order编号`、`plannum`、`productCode`、`itemName`、`processName`、`issuingstate`、`workstate`,或清空过窄条件后重新查询。 +4. 点击 `查询 派工并同步SAP` 刷新列表;状态按钮会切换任务范围。 +5. 查询后先核对关键列:`selection`、`序号`、`生产订单`、`计划号`、`物料名称`、`工序名称`、`物料编码`、`计划开始时间`、`计划完成时间`、`同步状态`、`上序合格数`、`指派数量`。 +6. 继续横向滚动或展开表格,核对:`打印数量`、`发料数量`、`收货数量`、`单重`、`打印次数`、`备注`、`操作`、`类型`、`时间`、`数量`、`操作人`、`质检类型`、`检验数量`、`合格数`。 +7. 需要留存或流转时点击 `打印`,导出/打印前确认当前查询条件和选中记录正确。 +8. 需要推进业务时先选中目标行并核对数量、时间、人员、工位、物料和备注,再点击 `发料` 提交。 +9. 按业务需要点击 `收货`,操作前先确认选中行和输入内容。 +10. 按业务需要点击 `更新`,操作前先确认选中行和输入内容。 +11. 需要维护已有记录时先选中目标行,再点击或触发表格内 `编辑`,修改字段后保存并等待成功提示。 +12. 按业务需要点击 `历史记录`,操作前先确认选中行和输入内容。 +13. 需要查看明细时点击 `查看图纸`,在弹窗或新区域核对图纸、明细、进度、记录或关联单据。 +14. 需要查看明细时点击 `工艺图纸`,在弹窗或新区域核对图纸、明细、进度、记录或关联单据。 +15. 按业务需要点击 `收发记录`,操作前先确认选中行和输入内容。 +16. 按业务需要点击 `质检记录`,操作前先确认选中行和输入内容。 +17. 出现弹窗时按弹窗标题处理:`发料`、`收货`、`编辑`、`收发记录`、`质检记录`、`图纸`;弹窗关闭前确认必填项已保存。 +18. 弹窗或表单内重点填写:`生产订单`、`销售订单`、`物料编号`、`分配数`、`上序合格数`、`已发料`、`发料工位`、`本次发料`、`操作人`、`发料数`、`已收货`、`本次收货`、`打印数量`、`单重`,提交前逐项核对。 +19. 涉及上传时先选择正确文件,再点击上传/保存;上传后重新查询,确认文件名、版本、上传时间或预览内容已显示。 +20. 保存或提交成功后重新点击查询,确认页面数据已通过 `计划排产_重置派工状态`、`生产管理_外协管理_外协历史查询`、`计划排产_派工`、`生产管理_外协管理_更新打印次数`、`生产管理_外协管理_更新备注` 等后台过程更新。 +21. 涉及 SAP/WMS 接口时,必须查看页面成功或失败提示;失败时先记录错误信息,不要连续重复提交同一单据。 + +**查询条件/输入项** +- `外协备注` +- `单重` +- `打印数量` +- `订单号` +- `产品编码` +- `产品名称` +- `工序名称` +- `派工状态` +- `发料状态` +- `订单状态` +- `执行状态` +- `计划号` +- `optor` +- `recievCount` +- `备注` +- `order编号` +- `plannum` +- `productCode` +- `itemName` +- `processName` +- `issuingstate` +- `workstate` + +**结果表重点列** +- `selection` +- `序号` +- `生产订单` +- `计划号` +- `物料名称` +- `工序名称` +- `物料编码` +- `计划开始时间` +- `计划完成时间` +- `同步状态` +- `上序合格数` +- `指派数量` +- `打印数量` +- `发料数量` +- `收货数量` +- `单重` +- `打印次数` +- `备注` +- `操作` +- `类型` +- `时间` +- `数量` +- `操作人` +- `质检类型` +- `检验数量` +- `合格数` +- `不合格数` + +**页面按钮/状态/页签** +- `查询 派工并同步SAP` +- `打印` +- `发料` +- `收货` +- `更新` +- `编辑` +- `历史记录` +- `查看图纸` +- `工艺图纸` +- `收发记录` +- `质检记录` +- `取 消` +- `确 定` +- `关 闭` +- `关闭` + +**弹窗/表单重点项** +- `发料` +- `收货` +- `编辑` +- `收发记录` +- `质检记录` +- `图纸` +- `生产订单` +- `销售订单` +- `物料编号` +- `分配数` +- `上序合格数` +- `已发料` +- `发料工位` +- `本次发料` +- `操作人` +- `发料数` +- `已收货` +- `本次收货` +- `打印数量` +- `单重` +- `备注` + +**后台处理/外部接口** +- `存储过程:计划排产_重置派工状态` +- `存储过程:生产管理_外协管理_外协历史查询` +- `存储过程:计划排产_派工` +- `存储过程:生产管理_外协管理_更新打印次数` +- `存储过程:生产管理_外协管理_更新备注` +- `存储过程:工艺管理_图纸维护_查看图纸` +- `存储过程:工艺管理_工艺维护_查看图纸` +- `存储过程:生产管理_外协管理_查询外协` +- `存储过程:生产管理_外协管理_外协发料查询` +- `存储过程:生产管理_外协管理_查询外协历史记录` +- `存储过程:生产管理_外协管理_查询质检记录` +- `存储过程:生产管理_外协管理_外协发料保存` +- `存储过程:生产管理_外协管理_外协收料保存` +- `接口:postB1 /PurchaseRequests` + +**操作注意事项** +- 生产执行页面的数据会直接影响报工、工时、质检和库存任务,现场操作必须与实际加工进度一致。 +- 该页存在 SAP/WMS 调用,失败时应记录返回提示并确认是否已经生成外部单据。 + +### 21.41 班次管理 + +页面路径:`src/views/ProductionManagement/ShiftManagement/index.vue` +所属模块:生产执行管理 +建议使用人员:操作工/班组长/生产主管 + +页面用途:该页面用于维护班次、班次人员和排班基础数据。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 在查询区按需要填写筛选条件:`selectedPersonnel`、`班次名称`、`开始时间`、`时间`。 +3. 点击页面上的查询或刷新类按钮获取最新数据;如果页面自动加载,则先核对默认列表是否符合当前业务范围。 +4. 查询后先核对关键列:`序号`、`班次`、`时间`、`绑定人员`、`操作`。 +5. 需要新增时点击 `添加新班次`,在弹窗中逐项填写必填字段,确认编码、名称、状态等基础信息后保存。 +6. 需要维护已有记录时先选中目标行,再点击或触发表格内 `编辑`,修改字段后保存并等待成功提示。 +7. 需要维护已有记录时先选中目标行,再点击或触发表格内 `保存`,修改字段后保存并等待成功提示。 +8. 按业务需要点击 `绑定`,操作前先确认选中行和输入内容。 +9. 需要删除时先确认该记录没有正在使用的业务数据,再点击 `删除`,按确认提示执行。 +10. 需要维护已有记录时先选中目标行,再点击或触发表格内 `确 定`,修改字段后保存并等待成功提示。 +11. 按业务需要点击 `取 消`,操作前先确认选中行和输入内容。 +12. 出现弹窗时按弹窗标题处理:`绑定人员`;弹窗关闭前确认必填项已保存。 +13. 保存或提交成功后重新点击查询,确认页面数据已通过 `生产管理_班次管理_班次列表查询`、`系统管理_人员管理_所有有效人员查询`、`生产管理_班次管理_班次绑定人员查询`、`生产管理_班次管理_班次保存`、`生产管理_班次管理_班次删除` 等后台过程更新。 + +**查询条件/输入项** +- `selectedPersonnel` +- `班次名称` +- `开始时间` +- `时间` + +**结果表重点列** +- `序号` +- `班次` +- `时间` +- `绑定人员` +- `操作` + +**页面按钮/状态/页签** +- `添加新班次` +- `编辑` +- `保存` +- `取消` +- `绑定` +- `删除` +- `确 定` +- `取 消` + +**弹窗/表单重点项** +- `绑定人员` + +**后台处理/外部接口** +- `存储过程:生产管理_班次管理_班次列表查询` +- `存储过程:系统管理_人员管理_所有有效人员查询` +- `存储过程:生产管理_班次管理_班次绑定人员查询` +- `存储过程:生产管理_班次管理_班次保存` +- `存储过程:生产管理_班次管理_班次删除` +- `存储过程:生产管理_班次管理_班次绑定人员保存` + +**操作注意事项** +- 生产执行页面的数据会直接影响报工、工时、质检和库存任务,现场操作必须与实际加工进度一致。 + +### 21.42 工时报表 + +页面路径:`src/views/ProductionManagement/Timesheet/index.vue` +所属模块:生产执行管理 +建议使用人员:操作工/班组长/生产主管 + +页面用途:该页面用于查询工时记录,按人员、设备、任务、订单和日期统计工时。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 先查看页签:`项目工时`、`作业者工时`、`任务工时`、`设备工时`;需要表格处理时进入表单/列表页签,需要看时间排布时进入日程/看板页签。 +3. 在查询区按需要填写筛选条件:`contract编号`、`operator`、`productCode`、`processName`、`order编号`、`startDate`、`endDate`、`合同号`、`作业者`、`产品编码`、`工序`、`订单号`。 +4. 如果仍查不到数据,继续补充条件:`选择开始日期`、`选择日期`,或清空过窄条件后重新查询。 +5. 点击 `查询` 刷新列表;状态按钮会切换任务范围。 +6. 查询后先核对关键列:`合同号`、`产品名称`、`产品编码`、`订单编号`、`工序名称`、`操作人`、`计划/完成`、`报工数量`、`计划开始`、`计划完成`、`工时(h)`、`操作人/日期`。 +7. 继续横向滚动或展开表格,核对:`报工次数`、`订单号`、`开始时间`、`结束时间`、`类型`、`工序说明`、`异常说明`。 +8. 如果页面左侧或上方有树形结构,先选中组织、物料、菜单或产品节点,再查看右侧列表;新增子节点前确认父节点选中正确。 +9. 需要留存或流转时点击 `Excel导出`,导出/打印前确认当前查询条件和选中记录正确。 +10. 保存或提交成功后重新点击查询,确认页面数据已通过 `工时统计_项目工时_查询`、`工时统计_作业者工时_查询`、`工时统计_设备工时_查询`、`工时统计_任务工时_查询` 等后台过程更新。 + +**查询条件/输入项** +- `contract编号` +- `operator` +- `productCode` +- `processName` +- `order编号` +- `startDate` +- `endDate` +- `合同号` +- `作业者` +- `产品编码` +- `工序` +- `订单号` +- `选择开始日期` +- `选择日期` + +**结果表重点列** +- `合同号` +- `产品名称` +- `产品编码` +- `订单编号` +- `工序名称` +- `操作人` +- `计划/完成` +- `报工数量` +- `计划开始` +- `计划完成` +- `工时(h)` +- `操作人/日期` +- `报工次数` +- `订单号` +- `开始时间` +- `结束时间` +- `类型` +- `工序说明` +- `异常说明` + +**页面按钮/状态/页签** +- `查询` +- `Excel导出` +- `项目工时` +- `作业者工时` +- `任务工时` +- `设备工时` + +**弹窗/表单重点项** +- 未识别到固定弹窗或表单项。 + +**后台处理/外部接口** +- `存储过程:工时统计_项目工时_查询` +- `存储过程:工时统计_作业者工时_查询` +- `存储过程:工时统计_设备工时_查询` +- `存储过程:工时统计_任务工时_查询` + +**操作注意事项** +- 生产执行页面的数据会直接影响报工、工时、质检和库存任务,现场操作必须与实际加工进度一致。 + +### 21.43 加急任务 + +页面路径:`src/views/ProductionManagement/Urgent/index.vue` +所属模块:生产执行管理 +建议使用人员:操作工/班组长/生产主管 + +页面用途:该页面用于维护加急任务,跟踪加急订单、加急数量和完成情况。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 在查询区按需要填写筛选条件:`物料编号`、`合同号`、`订单号`、`零件编号`、`转至状态`、`完成状态`、`contract编号`、`order编号`、`part编号`、`attribute`、`changstate`、`finishstate`。 +3. 如果仍查不到数据,继续补充条件:`销售订单`、`生产订单`,或清空过窄条件后重新查询。 +4. 点击 `查询` 刷新列表;状态按钮会切换任务范围。 +5. 查询后先核对关键列:`序号`、`销售订单`、`生产订单`、`物料名称`、`物料编码`、`工序名称`、`计划生产数`、`加急数量`、`收检数量`、`合格数`、`不合格`、`检验操作人`。 +6. 继续横向滚动或展开表格,核对:`检验时间`、`操作`。 +7. 需要推进业务时先选中目标行并核对数量、时间、人员、工位、物料和备注,再点击 `转至 完成 生产订单 加急数量 物料编号 关闭` 提交。 +8. 出现弹窗时按弹窗标题处理:`加急明细`;弹窗关闭前确认必填项已保存。 +9. 保存或提交成功后重新点击查询,确认页面数据已通过 `加急订单_加急明细查询`、`生产管理_加急件管理查询`、`生产管理_加急件管理_更新转至`、`生产管理_加急件管理_更新完成` 等后台过程更新。 + +**查询条件/输入项** +- `物料编号` +- `合同号` +- `订单号` +- `零件编号` +- `转至状态` +- `完成状态` +- `contract编号` +- `order编号` +- `part编号` +- `attribute` +- `changstate` +- `finishstate` +- `销售订单` +- `生产订单` + +**结果表重点列** +- `序号` +- `销售订单` +- `生产订单` +- `物料名称` +- `物料编码` +- `工序名称` +- `计划生产数` +- `加急数量` +- `收检数量` +- `合格数` +- `不合格` +- `检验操作人` +- `检验时间` +- `操作` + +**页面按钮/状态/页签** +- `查询` +- `转至 完成 生产订单 加急数量 物料编号 关闭` + +**弹窗/表单重点项** +- `加急明细` + +**后台处理/外部接口** +- `存储过程:加急订单_加急明细查询` +- `存储过程:生产管理_加急件管理查询` +- `存储过程:生产管理_加急件管理_更新转至` +- `存储过程:生产管理_加急件管理_更新完成` + +**操作注意事项** +- 生产执行页面的数据会直接影响报工、工时、质检和库存任务,现场操作必须与实际加工进度一致。 + +### 21.44 工时查询 + +页面路径:`src/views/ProductionManagement/Workhours/index.vue` +所属模块:生产执行管理 +建议使用人员:操作工/班组长/生产主管 + +页面用途:该页面为业务页面,用户按查询条件筛选数据,在列表或弹窗中查看明细,并按页面按钮完成维护、提交或状态更新。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 先查看页签:`工序工时`;需要表格处理时进入表单/列表页签,需要看时间排布时进入日程/看板页签。 +3. 在查询区按需要填写筛选条件:`contract编号`、`productCode`、`order编号`、`datanum`、`startDate`、`endDate`、`合同号`、`产品编码`、`订单号`、`数据条数`、`选择开始日期`、`选择日期`。 +4. 点击 `查询` 刷新列表;状态按钮会切换任务范围。 +5. 查询后先核对关键列:`任务描述`、`报工次数`、`报工数量`、`工位名称`、`实际工时`、`辅助工时`、`平均程序工时`、`平均实际工时`、`平均辅助工时`、`工艺工时`、`合同号`、`订单号`。 +6. 继续横向滚动或展开表格,核对:`产品编码`、`产品名称`、`工序名称`。 +7. 如果页面左侧或上方有树形结构,先选中组织、物料、菜单或产品节点,再查看右侧列表;新增子节点前确认父节点选中正确。 +8. 保存或提交成功后重新点击查询,确认页面数据已通过 `生产管理_工时查询_工序工时_查询` 等后台过程更新。 + +**查询条件/输入项** +- `contract编号` +- `productCode` +- `order编号` +- `datanum` +- `startDate` +- `endDate` +- `合同号` +- `产品编码` +- `订单号` +- `数据条数` +- `选择开始日期` +- `选择日期` + +**结果表重点列** +- `任务描述` +- `报工次数` +- `报工数量` +- `工位名称` +- `实际工时` +- `辅助工时` +- `平均程序工时` +- `平均实际工时` +- `平均辅助工时` +- `工艺工时` +- `合同号` +- `订单号` +- `产品编码` +- `产品名称` +- `工序名称` + +**页面按钮/状态/页签** +- `查询` +- `工序工时` + +**弹窗/表单重点项** +- 未识别到固定弹窗或表单项。 + +**后台处理/外部接口** +- `存储过程:生产管理_工时查询_工序工时_查询` + +**操作注意事项** +- 生产执行页面的数据会直接影响报工、工时、质检和库存任务,现场操作必须与实际加工进度一致。 + +### 21.45 工时校验(副本) + +页面路径:`src/views/ProductionManagement/WorkHoursCheck/index - 副本.vue` +所属模块:生产执行管理 +建议使用人员:操作工/班组长/生产主管 + +页面用途:该页面用于工时校验和 SAP 提交,用户核对报工记录后批量或单条校验并上传相关单据。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 在查询区按需要填写筛选条件:`订单编号`、`人员`、`taskid`、`taskorder`、`checker`、`timeRange`、`checkStatus`、`abnormalstatus`、`natureStatus`、`addwork`、`产品编码`、`产品名称`。 +3. 如果仍查不到数据,继续补充条件:`工序名称`、`工位名称`、`操作人`、`操作类别`、`操作数值`、`开始时间`、`结束时间`、`加工工时`、`总时长`、`工艺顺序`,或清空过窄条件后重新查询。 +4. 点击 `查询` 刷新列表;状态按钮会切换任务范围。 +5. 列表较多时使用分页区切换页码或调整每页条数,避免只检查第一页。 +6. 查询后先核对关键列:`selection`、`序号`、`工时ID`、`人员`、`生产订单`、`物料编码`、`物料名称`、`工序名称`、`工位名称`、`报工类型`、`数量`、`开始时间`。 +7. 继续横向滚动或展开表格,核对:`结束时间`、`设备工时`、`人员工时`、`绑定设备数`、`工序说明`、`异常说明`、`校验状态`、`最后编辑人`、`最后编辑时间`、`操作`、`累计分钟`、`设备状态`、`累计秒数`。 +8. 需要推进业务时先选中目标行并核对数量、时间、人员、工位、物料和备注,再点击 `一键校验` 提交。 +9. 需要新增时点击 `新增工时记录`,在弹窗中逐项填写必填字段,确认编码、名称、状态等基础信息后保存。 +10. 按业务需要点击 `设备工时`,操作前先确认选中行和输入内容。 +11. 需要推进业务时先选中目标行并核对数量、时间、人员、工位、物料和备注,再点击 `关闭` 提交。 +12. 需要维护已有记录时先选中目标行,再点击或触发表格内 `确 定`,修改字段后保存并等待成功提示。 +13. 需要推进业务时先选中目标行并核对数量、时间、人员、工位、物料和备注,再点击 `关闭` 提交。 +14. 需要维护已有记录时先选中目标行,再点击或触发表格内 `确 定`,修改字段后保存并等待成功提示。 +15. 出现弹窗时按弹窗标题处理:`currentTask.已校验 ? '查看任务信息' : '编辑任务信息'`、`设备工时`、`新增工时记录`;弹窗关闭前确认必填项已保存。 +16. 弹窗或表单内重点填写:`生产订单`、`物料编码`、`物料名称`、`工序名称`、`工位名称`、`操作人`、`操作类别`、`操作数值`、`开始时间`、`结束时间`、`加工工时`、`人员工时`、`工序顺序`、`工作内容`,提交前逐项核对。 +17. 涉及上传时先选择正确文件,再点击上传/保存;上传后重新查询,确认文件名、版本、上传时间或预览内容已显示。 +18. 保存或提交成功后重新点击查询,确认页面数据已通过 `人员管理_人员信息查询_质检部门_查询`、`系统管理_人员管理_所有有效人员查询`、`工时校验_获取订单列表`、`工时校验_获取订单工序`、`工时校验_获取昨日之前操作记录列表` 等后台过程更新。 +19. 涉及 SAP/WMS 接口时,必须查看页面成功或失败提示;失败时先记录错误信息,不要连续重复提交同一单据。 +20. 工时校验前先比对 MES 报工、设备工时和 SAP 工序资源;只对核对无误的记录执行提交。 + +**查询条件/输入项** +- `订单编号` +- `人员` +- `taskid` +- `taskorder` +- `checker` +- `timeRange` +- `checkStatus` +- `abnormalstatus` +- `natureStatus` +- `addwork` +- `产品编码` +- `产品名称` +- `工序名称` +- `工位名称` +- `操作人` +- `操作类别` +- `操作数值` +- `开始时间` +- `结束时间` +- `加工工时` +- `总时长` +- `工艺顺序` + +**结果表重点列** +- `selection` +- `序号` +- `工时ID` +- `人员` +- `生产订单` +- `物料编码` +- `物料名称` +- `工序名称` +- `工位名称` +- `报工类型` +- `数量` +- `开始时间` +- `结束时间` +- `设备工时` +- `人员工时` +- `绑定设备数` +- `工序说明` +- `异常说明` +- `校验状态` +- `最后编辑人` +- `最后编辑时间` +- `操作` +- `累计分钟` +- `设备状态` +- `累计秒数` + +**页面按钮/状态/页签** +- `查询` +- `一键校验` +- `新增工时记录` +- `设备工时` +- `关闭` +- `确 定` +- `取消` + +**弹窗/表单重点项** +- `currentTask.已校验 ? '查看任务信息' : '编辑任务信息'` +- `设备工时` +- `新增工时记录` +- `生产订单` +- `物料编码` +- `物料名称` +- `工序名称` +- `工位名称` +- `操作人` +- `操作类别` +- `操作数值` +- `开始时间` +- `结束时间` +- `加工工时` +- `人员工时` +- `工序顺序` +- `工作内容` +- `备注说明` + +**后台处理/外部接口** +- `存储过程:人员管理_人员信息查询_质检部门_查询` +- `存储过程:系统管理_人员管理_所有有效人员查询` +- `存储过程:工时校验_获取订单列表` +- `存储过程:工时校验_获取订单工序` +- `存储过程:工时校验_获取昨日之前操作记录列表` +- `存储过程:工时校验_获取资源` +- `存储过程:工时校验_获取设备数据` +- `存储过程:工时校验_保存校验记录` +- `存储过程:工时校验_批量保存校验记录` +- `存储过程:工时校验_获取操作人当天报工记录` +- `存储过程:工时校验_新增操作记录` +- `接口:getB1 /ProductionOrders` +- `接口:patchB1 ProductionOrders(${order.AbsoluteEntry})` +- `接口:postB1 /InventoryGenExits` + +**操作注意事项** +- 生产执行页面的数据会直接影响报工、工时、质检和库存任务,现场操作必须与实际加工进度一致。 +- 该页存在 SAP/WMS 调用,失败时应记录返回提示并确认是否已经生成外部单据。 + +### 21.46 工时校验 + +页面路径:`src/views/ProductionManagement/WorkHoursCheck/index.vue` +所属模块:生产执行管理 +建议使用人员:操作工/班组长/生产主管 + +页面用途:该页面用于工时校验和 SAP 提交,用户核对报工记录后批量或单条校验并上传相关单据。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 在查询区按需要填写筛选条件:`订单编号`、`人员`、`taskid`、`taskorder`、`checker`、`timeRange`、`checkStatus`、`abnormalstatus`、`natureStatus`、`addwork`、`产品编码`、`产品名称`。 +3. 如果仍查不到数据,继续补充条件:`工序名称`、`工位名称`、`操作人`、`操作类别`、`操作数值`、`开始时间`、`结束时间`、`加工工时`、`总时长`、`工艺顺序`,或清空过窄条件后重新查询。 +4. 点击 `查询` 刷新列表;状态按钮会切换任务范围。 +5. 列表较多时使用分页区切换页码或调整每页条数,避免只检查第一页。 +6. 查询后先核对关键列:`selection`、`序号`、`工时ID`、`人员`、`生产订单`、`物料编码`、`物料名称`、`工序名称`、`工位名称`、`报工类型`、`数量`、`开始时间`。 +7. 继续横向滚动或展开表格,核对:`结束时间`、`设备工时`、`人员工时`、`绑定设备数`、`工序说明`、`异常说明`、`校验状态`、`最后编辑人`、`最后编辑时间`、`操作`、`累计分钟`、`设备状态`、`累计秒数`。 +8. 需要推进业务时先选中目标行并核对数量、时间、人员、工位、物料和备注,再点击 `一键校验` 提交。 +9. 需要推进业务时先选中目标行并核对数量、时间、人员、工位、物料和备注,再点击 `直接校验` 提交。 +10. 需要新增时点击 `新增工时记录`,在弹窗中逐项填写必填字段,确认编码、名称、状态等基础信息后保存。 +11. 按业务需要点击 `设备工时`,操作前先确认选中行和输入内容。 +12. 按业务需要点击 `设备工时`,操作前先确认选中行和输入内容。 +13. 需要推进业务时先选中目标行并核对数量、时间、人员、工位、物料和备注,再点击 `关闭` 提交。 +14. 需要维护已有记录时先选中目标行,再点击或触发表格内 `确 定`,修改字段后保存并等待成功提示。 +15. 需要推进业务时先选中目标行并核对数量、时间、人员、工位、物料和备注,再点击 `关闭` 提交。 +16. 需要维护已有记录时先选中目标行,再点击或触发表格内 `确 定`,修改字段后保存并等待成功提示。 +17. 出现弹窗时按弹窗标题处理:`currentTask.已校验 ? '查看任务信息' : '编辑任务信息'`、`设备工时`、`新增工时记录`;弹窗关闭前确认必填项已保存。 +18. 弹窗或表单内重点填写:`生产订单`、`物料编码`、`物料名称`、`工序名称`、`工位名称`、`操作人`、`操作类别`、`操作数值`、`开始时间`、`结束时间`、`加工工时`、`人员工时`、`工序顺序`、`班次标准工时`,提交前逐项核对。 +19. 涉及上传时先选择正确文件,再点击上传/保存;上传后重新查询,确认文件名、版本、上传时间或预览内容已显示。 +20. 保存或提交成功后重新点击查询,确认页面数据已通过 `usp_BatchValidateWorkTime`、`usp_ValidateWorkTime`、`人员管理_人员信息查询_质检部门_查询`、`系统管理_人员管理_所有有效人员查询`、`工时校验_获取订单列表` 等后台过程更新。 +21. 涉及 SAP/WMS 接口时,必须查看页面成功或失败提示;失败时先记录错误信息,不要连续重复提交同一单据。 +22. 工时校验前先比对 MES 报工、设备工时和 SAP 工序资源;只对核对无误的记录执行提交。 + +**查询条件/输入项** +- `订单编号` +- `人员` +- `taskid` +- `taskorder` +- `checker` +- `timeRange` +- `checkStatus` +- `abnormalstatus` +- `natureStatus` +- `addwork` +- `产品编码` +- `产品名称` +- `工序名称` +- `工位名称` +- `操作人` +- `操作类别` +- `操作数值` +- `开始时间` +- `结束时间` +- `加工工时` +- `总时长` +- `工艺顺序` + +**结果表重点列** +- `selection` +- `序号` +- `工时ID` +- `人员` +- `生产订单` +- `物料编码` +- `物料名称` +- `工序名称` +- `工位名称` +- `报工类型` +- `数量` +- `开始时间` +- `结束时间` +- `设备工时` +- `人员工时` +- `绑定设备数` +- `工序说明` +- `异常说明` +- `校验状态` +- `最后编辑人` +- `最后编辑时间` +- `操作` +- `累计分钟` +- `设备状态` +- `累计秒数` + +**页面按钮/状态/页签** +- `查询` +- `一键校验` +- `直接校验` +- `新增工时记录` +- `设备工时` +- `关闭` +- `确 定` +- `取消` + +**弹窗/表单重点项** +- `currentTask.已校验 ? '查看任务信息' : '编辑任务信息'` +- `设备工时` +- `新增工时记录` +- `生产订单` +- `物料编码` +- `物料名称` +- `工序名称` +- `工位名称` +- `操作人` +- `操作类别` +- `操作数值` +- `开始时间` +- `结束时间` +- `加工工时` +- `人员工时` +- `工序顺序` +- `班次标准工时` +- `工作内容` +- `备注说明` + +**后台处理/外部接口** +- `存储过程:usp_BatchValidateWorkTime` +- `存储过程:usp_ValidateWorkTime` +- `存储过程:人员管理_人员信息查询_质检部门_查询` +- `存储过程:系统管理_人员管理_所有有效人员查询` +- `存储过程:工时校验_获取订单列表` +- `存储过程:工时校验_获取订单工序` +- `存储过程:工时校验_获取昨日之前操作记录列表` +- `存储过程:工时校验_获取资源` +- `存储过程:工时校验_获取设备数据` +- `存储过程:工时校验_保存校验记录` +- `存储过程:工时校验_批量保存校验记录` +- `存储过程:工时校验_新增操作记录` +- `接口:getB1 /ProductionOrders` +- `接口:postB1 /InventoryGenExits` +- `接口:patchB1 ProductionOrders(${order.AbsoluteEntry})` + +**操作注意事项** +- 生产执行页面的数据会直接影响报工、工时、质检和库存任务,现场操作必须与实际加工进度一致。 +- 该页存在 SAP/WMS 调用,失败时应记录返回提示并确认是否已经生成外部单据。 + +### 21.47 工时编辑 + +页面路径:`src/views/ProductionManagement/WorkhoursEdit/index.vue` +所属模块:生产执行管理 +建议使用人员:操作工/班组长/生产主管 + +页面用途:该页面用于修正或补录工时/报工记录,处理异常工时。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 在查询区按需要填写筛选条件:`订单编号`、`人员`、`taskid`、`taskorder`、`checker`、`timeRange`、`checkStatus`、`abnormalstatus`、`natureStatus`、`addwork`、`产品编码`、`产品名称`。 +3. 如果仍查不到数据,继续补充条件:`工序名称`、`工位名称`、`操作人`、`操作类别`、`操作数值`、`开始时间`、`结束时间`、`加工工时`、`总时长`、`班次标准工时`,或清空过窄条件后重新查询。 +4. 点击 `查询` 刷新列表;状态按钮会切换任务范围。 +5. 列表较多时使用分页区切换页码或调整每页条数,避免只检查第一页。 +6. 查询后先核对关键列:`selection`、`序号`、`工时ID`、`人员`、`生产订单`、`物料编码`、`物料名称`、`工序名称`、`工位名称`、`报工类型`、`数量`、`开始时间`。 +7. 继续横向滚动或展开表格,核对:`结束时间`、`设备工时`、`人员工时`、`校验状态`、`最后编辑人`、`最后编辑时间`、`操作`、`累计分钟`、`设备状态`、`累计秒数`。 +8. 需要新增时点击 `新增工时记录`,在弹窗中逐项填写必填字段,确认编码、名称、状态等基础信息后保存。 +9. 按业务需要点击 `设备工时`,操作前先确认选中行和输入内容。 +10. 需要推进业务时先选中目标行并核对数量、时间、人员、工位、物料和备注,再点击 `关闭` 提交。 +11. 需要维护已有记录时先选中目标行,再点击或触发表格内 `确 定`,修改字段后保存并等待成功提示。 +12. 需要推进业务时先选中目标行并核对数量、时间、人员、工位、物料和备注,再点击 `关闭` 提交。 +13. 需要维护已有记录时先选中目标行,再点击或触发表格内 `确 定`,修改字段后保存并等待成功提示。 +14. 出现弹窗时按弹窗标题处理:`currentTask.已校验 ? '查看任务信息' : '编辑任务信息'`、`设备工时`、`新增工时记录`;弹窗关闭前确认必填项已保存。 +15. 弹窗或表单内重点填写:`生产订单`、`物料编码`、`物料名称`、`工序名称`、`工位名称`、`操作人`、`操作类别`、`操作数值`、`开始时间`、`结束时间`、`加工工时`、`人员工时`、`班次标准工时`、`工序顺序`,提交前逐项核对。 +16. 保存或提交成功后重新点击查询,确认页面数据已通过 `人员管理_人员信息查询_质检部门_查询`、`系统管理_人员管理_所有有效人员查询`、`工时校验_获取订单列表`、`工时校验_获取订单工序`、`工时校验_获取操作记录列表` 等后台过程更新。 + +**查询条件/输入项** +- `订单编号` +- `人员` +- `taskid` +- `taskorder` +- `checker` +- `timeRange` +- `checkStatus` +- `abnormalstatus` +- `natureStatus` +- `addwork` +- `产品编码` +- `产品名称` +- `工序名称` +- `工位名称` +- `操作人` +- `操作类别` +- `操作数值` +- `开始时间` +- `结束时间` +- `加工工时` +- `总时长` +- `班次标准工时` + +**结果表重点列** +- `selection` +- `序号` +- `工时ID` +- `人员` +- `生产订单` +- `物料编码` +- `物料名称` +- `工序名称` +- `工位名称` +- `报工类型` +- `数量` +- `开始时间` +- `结束时间` +- `设备工时` +- `人员工时` +- `校验状态` +- `最后编辑人` +- `最后编辑时间` +- `操作` +- `累计分钟` +- `设备状态` +- `累计秒数` + +**页面按钮/状态/页签** +- `查询` +- `新增工时记录` +- `设备工时` +- `关闭` +- `确 定` +- `取消` + +**弹窗/表单重点项** +- `currentTask.已校验 ? '查看任务信息' : '编辑任务信息'` +- `设备工时` +- `新增工时记录` +- `生产订单` +- `物料编码` +- `物料名称` +- `工序名称` +- `工位名称` +- `操作人` +- `操作类别` +- `操作数值` +- `开始时间` +- `结束时间` +- `加工工时` +- `人员工时` +- `班次标准工时` +- `工序顺序` +- `工作内容` +- `备注说明` + +**后台处理/外部接口** +- `存储过程:人员管理_人员信息查询_质检部门_查询` +- `存储过程:系统管理_人员管理_所有有效人员查询` +- `存储过程:工时校验_获取订单列表` +- `存储过程:工时校验_获取订单工序` +- `存储过程:工时校验_获取操作记录列表` +- `存储过程:工时校验_获取设备数据` +- `存储过程:工时校验_保存校验记录` +- `存储过程:工时校验_新增操作记录` + +**操作注意事项** +- 生产执行页面的数据会直接影响报工、工时、质检和库存任务,现场操作必须与实际加工进度一致。 + +## 21-8 质量管理 + +### 21.48 终检 + +页面路径:`src/views/QualityManagement/CheckTask/final.vue` +所属模块:质量管理 +建议使用人员:质检员/质量主管 + +页面用途:该页面用于终检任务处理,录入最终检验结果。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 在查询区按需要填写筛选条件:`物料编号`、`合同号`、`订单号`、`零件编号`、`零件名称`、`完工日期_Start`、`完工日期_End`、`检测日期_Start`、`检测日期_End`、`检测结果`、`检测人`、`检验状态`。 +3. 如果仍查不到数据,继续补充条件:`属性`、`检测类型编号`、`质检类型`、`内部合同号`、`零件编码`、`计划号`、`工序名称`、`检测数量`、`合格数`、`不合格数`,或清空过窄条件后重新查询。 +4. 点击 `查询` 刷新列表;状态按钮会切换任务范围。 +5. 查询后先核对关键列:`序号`、`销售订单`、`生产订单`、`物料名称`、`物料编码`、`工序名称`、`计划生产数`、`加急数量`、`收检数量`、`收检合格数量`、`收检不合格数量`、`检验操作人`。 +6. 继续横向滚动或展开表格,核对:`检验时间`、`操作`、`零件编码`、`送检数量`、`合格数`、`不合格数`、`检测人`、`检测时间`、`检测说明`。 +7. 需要留存或流转时点击 `导出 -->`,导出/打印前确认当前查询条件和选中记录正确。 +8. 按业务需要点击 `取 消`,操作前先确认选中行和输入内容。 +9. 需要推进业务时先选中目标行并核对数量、时间、人员、工位、物料和备注,再点击 `关闭` 提交。 +10. 出现弹窗时按弹窗标题处理:`终检`、`终检记录`、`加急明细`;弹窗关闭前确认必填项已保存。 +11. 保存或提交成功后重新点击查询,确认页面数据已通过 `加急订单_加急明细查询`、`查询字典`、`人员管理_人员信息查询_质检部门_查询`、`质量管理_质量检验_终检数据_查询`、`质量管理_质量检验_终检记录_查询` 等后台过程更新。 +12. 涉及 SAP/WMS 接口时,必须查看页面成功或失败提示;失败时先记录错误信息,不要连续重复提交同一单据。 +13. 录入检验结果时先核对检验类型、订单、物料、批次/工序,再填写合格数、不合格数和检测明细,避免检验记录挂错任务。 + +**查询条件/输入项** +- `物料编号` +- `合同号` +- `订单号` +- `零件编号` +- `零件名称` +- `完工日期_Start` +- `完工日期_End` +- `检测日期_Start` +- `检测日期_End` +- `检测结果` +- `检测人` +- `检验状态` +- `属性` +- `检测类型编号` +- `质检类型` +- `内部合同号` +- `零件编码` +- `计划号` +- `工序名称` +- `检测数量` +- `合格数` +- `不合格数` + +**结果表重点列** +- `序号` +- `销售订单` +- `生产订单` +- `物料名称` +- `物料编码` +- `工序名称` +- `计划生产数` +- `加急数量` +- `收检数量` +- `收检合格数量` +- `收检不合格数量` +- `检验操作人` +- `检验时间` +- `操作` +- `零件编码` +- `送检数量` +- `合格数` +- `不合格数` +- `检测人` +- `检测时间` +- `检测说明` + +**页面按钮/状态/页签** +- `查询` +- `导出 -->` +- `取 消` +- `关闭` + +**弹窗/表单重点项** +- `终检` +- `终检记录` +- `加急明细` + +**后台处理/外部接口** +- `存储过程:加急订单_加急明细查询` +- `存储过程:查询字典` +- `存储过程:人员管理_人员信息查询_质检部门_查询` +- `存储过程:质量管理_质量检验_终检数据_查询` +- `存储过程:质量管理_质量检验_终检记录_查询` +- `存储过程:MES_QulityInspection_FinalCheck` +- `存储过程:工时校验_获取工序和指派对象` +- `接口:getB1 ProductionOrders` +- `接口:patchB1 ProductionOrders(` + +**操作注意事项** +- 质检结果保存后会影响合格入库、不合格处理和后续工序,提交前必须核对数量。 +- 该页存在 SAP/WMS 调用,失败时应记录返回提示并确认是否已经生成外部单据。 + +### 21.49 首检 + +页面路径:`src/views/QualityManagement/CheckTask/firstSpecial.vue` +所属模块:质量管理 +建议使用人员:质检员/质量主管 + +页面用途:该页面用于首检或特殊首件检验,录入首件检测结果。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 在查询区按需要填写筛选条件:`ProcessID`、`OPCode`、`OrderNo`、`PartCode`、`PlanStart`、`PlanEnd`、`不装配`、`process`、`station`、`order编号`、`part编号`、`operation时间`。 +3. 如果仍查不到数据,继续补充条件:`工序`、`工位`、`生产订单`、`零件编号`、`时间`、`开始时间`,或清空过窄条件后重新查询。 +4. 查询后先核对关键列:`序号`、`工位编号`、`工序名称`、`操作类别`、`操作人`、`销售订单`、`生产订单`、`物料编号`、`物料名称`、`操作数值`、`开始时间`、`结束时间`。 +5. 继续横向滚动或展开表格,核对:`工时(分)`。 +6. 保存或提交成功后重新点击查询,确认页面数据已通过 `Prog_MES_LoadProcess`、`Prog_MES_LoadStations`、`MES_QulityInspection_FirstCheckRecords` 等后台过程更新。 +7. 录入检验结果时先核对检验类型、订单、物料、批次/工序,再填写合格数、不合格数和检测明细,避免检验记录挂错任务。 + +**查询条件/输入项** +- `ProcessID` +- `OPCode` +- `OrderNo` +- `PartCode` +- `PlanStart` +- `PlanEnd` +- `不装配` +- `process` +- `station` +- `order编号` +- `part编号` +- `operation时间` +- `工序` +- `工位` +- `生产订单` +- `零件编号` +- `时间` +- `开始时间` + +**结果表重点列** +- `序号` +- `工位编号` +- `工序名称` +- `操作类别` +- `操作人` +- `销售订单` +- `生产订单` +- `物料编号` +- `物料名称` +- `操作数值` +- `开始时间` +- `结束时间` +- `工时(分)` + +**页面按钮/状态/页签** +- 未识别到明确按钮,以页面实际显示为准。 + +**弹窗/表单重点项** +- 未识别到固定弹窗或表单项。 + +**后台处理/外部接口** +- `存储过程:Prog_MES_LoadProcess` +- `存储过程:Prog_MES_LoadStations` +- `存储过程:MES_QulityInspection_FirstCheckRecords` + +**操作注意事项** +- 质检结果保存后会影响合格入库、不合格处理和后续工序,提交前必须核对数量。 + +### 21.50 原材料退库检 + +页面路径:`src/views/QualityManagement/CheckTask/materialReturn.vue` +所属模块:质量管理 +建议使用人员:质检员/质量主管 + +页面用途:该页面用于材料退库检验,核对退库物料并录入检验结论。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 在查询区按需要填写筛选条件:`订单号`、`零件编号`、`零件名称`、`检测日期_Start`、`检测日期_End`、`状态`、`检测结果`、`单据码`、`检测人`、`检测类型编号`、`质检类型`、`零件编码`。 +3. 如果仍查不到数据,继续补充条件:`计划号`、`检测数量`、`合格数`、`不合格数`、`检测时间`、`检测说明`、`行号`、`订单类型`、`到货数`、`放行数量`,或清空过窄条件后重新查询。 +4. 点击 `查询` 刷新列表;状态按钮会切换任务范围。 +5. 列表较多时使用分页区切换页码或调整每页条数,避免只检查第一页。 +6. 查询后先核对关键列:`序号`、`单据码`、`生产订单`、`物料名称`、`物料编码`、`到货时间`、`检验数量`、`合格数`、`不合格数`、`批次信息`、`检验人`、`检验时间`。 +7. 继续横向滚动或展开表格,核对:`备注`、`操作`。 +8. 按业务需要点击 `扫码`,操作前先确认选中行和输入内容。 +9. 按业务需要点击 `取 消`,操作前先确认选中行和输入内容。 +10. 出现弹窗时按弹窗标题处理:`退库检`、`扫码`;弹窗关闭前确认必填项已保存。 +11. 保存或提交成功后重新点击查询,确认页面数据已通过 `查询字典`、`人员管理_人员信息查询_质检部门_查询`、`质量管理_原材料退库_查询`、`质量管理_原材料退库检验_更新` 等后台过程更新。 +12. 涉及 SAP/WMS 接口时,必须查看页面成功或失败提示;失败时先记录错误信息,不要连续重复提交同一单据。 +13. 录入检验结果时先核对检验类型、订单、物料、批次/工序,再填写合格数、不合格数和检测明细,避免检验记录挂错任务。 + +**查询条件/输入项** +- `订单号` +- `零件编号` +- `零件名称` +- `检测日期_Start` +- `检测日期_End` +- `状态` +- `检测结果` +- `单据码` +- `检测人` +- `检测类型编号` +- `质检类型` +- `零件编码` +- `计划号` +- `检测数量` +- `合格数` +- `不合格数` +- `检测时间` +- `检测说明` +- `行号` +- `订单类型` +- `到货数` +- `放行数量` + +**结果表重点列** +- `序号` +- `单据码` +- `生产订单` +- `物料名称` +- `物料编码` +- `到货时间` +- `检验数量` +- `合格数` +- `不合格数` +- `批次信息` +- `检验人` +- `检验时间` +- `备注` +- `操作` + +**页面按钮/状态/页签** +- `查询` +- `扫码` +- `取 消` + +**弹窗/表单重点项** +- `退库检` +- `扫码` + +**后台处理/外部接口** +- `存储过程:查询字典` +- `存储过程:人员管理_人员信息查询_质检部门_查询` +- `存储过程:质量管理_原材料退库_查询` +- `存储过程:质量管理_原材料退库检验_更新` +- `接口:getB1 /ProductionOrders` +- `接口:posttm /stocktask/task/receiptordertask` + +**操作注意事项** +- 质检结果保存后会影响合格入库、不合格处理和后续工序,提交前必须核对数量。 +- 该页存在 SAP/WMS 调用,失败时应记录返回提示并确认是否已经生成外部单据。 + +### 21.51 其他入库检 + +页面路径:`src/views/QualityManagement/CheckTask/OtherInbound.vue` +所属模块:质量管理 +建议使用人员:质检员/质量主管 + +页面用途:该页面用于其他入库检验,录入其他入库质检结果。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 在查询区按需要填写筛选条件:`订单号`、`零件编号`、`零件名称`、`检测日期_Start`、`检测日期_End`、`检测结果`、`检测人`、`检测类型编号`、`质检类型`、`零件编码`、`计划号`、`检测数量`。 +3. 如果仍查不到数据,继续补充条件:`合格数`、`不合格数`、`检测时间`、`检测说明`、`行号`、`订单类型`、`放行数量`、`order编号`、`partName`、`part编号`,或清空过窄条件后重新查询。 +4. 点击 `查询` 刷新列表;状态按钮会切换任务范围。 +5. 查询后先核对关键列:`序号`、`生产订单`、`物料名称`、`物料编码`、`采购数`、`检验数量`、`合格数`、`不合格数`、`检验人`、`检验时间`、`备注`、`操作`。 +6. 按业务需要点击 `取 消`,操作前先确认选中行和输入内容。 +7. 出现弹窗时按弹窗标题处理:`入库检`;弹窗关闭前确认必填项已保存。 +8. 保存或提交成功后重新点击查询,确认页面数据已通过 `查询字典`、`人员管理_人员信息查询_质检部门_查询`、`质量管理_其他入库_查询`、`质量管理_其他入库检验_更新` 等后台过程更新。 +9. 录入检验结果时先核对检验类型、订单、物料、批次/工序,再填写合格数、不合格数和检测明细,避免检验记录挂错任务。 + +**查询条件/输入项** +- `订单号` +- `零件编号` +- `零件名称` +- `检测日期_Start` +- `检测日期_End` +- `检测结果` +- `检测人` +- `检测类型编号` +- `质检类型` +- `零件编码` +- `计划号` +- `检测数量` +- `合格数` +- `不合格数` +- `检测时间` +- `检测说明` +- `行号` +- `订单类型` +- `放行数量` +- `order编号` +- `partName` +- `part编号` + +**结果表重点列** +- `序号` +- `生产订单` +- `物料名称` +- `物料编码` +- `采购数` +- `检验数量` +- `合格数` +- `不合格数` +- `检验人` +- `检验时间` +- `备注` +- `操作` + +**页面按钮/状态/页签** +- `查询` +- `取 消` + +**弹窗/表单重点项** +- `入库检` + +**后台处理/外部接口** +- `存储过程:查询字典` +- `存储过程:人员管理_人员信息查询_质检部门_查询` +- `存储过程:质量管理_其他入库_查询` +- `存储过程:质量管理_其他入库检验_更新` + +**操作注意事项** +- 质检结果保存后会影响合格入库、不合格处理和后续工序,提交前必须核对数量。 + +### 21.52 序检收检 + +页面路径:`src/views/QualityManagement/CheckTask/processReceive.vue` +所属模块:质量管理 +建议使用人员:质检员/质量主管 + +页面用途:该页面用于工序收检/序检收检,质检人员接收工序检验任务并录入检验结果。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 在查询区按需要填写筛选条件:`物料编号`、`合同号`、`订单号`、`零件编号`、`零件名称`、`完工日期_Start`、`完工日期_End`、`检测日期_Start`、`检测日期_End`、`检测结果`、`检测人`、`检测类别`。 +3. 如果仍查不到数据,继续补充条件:`检测状态`、`属性`、`检测类型编号`、`质检类型`、`内部合同号`、`零件编码`、`计划号`、`工序名称`、`检测数量`、`合格数`,或清空过窄条件后重新查询。 +4. 点击 `查询` 刷新列表;状态按钮会切换任务范围。 +5. 查询后先核对关键列:`序号`、`销售订单`、`生产订单`、`物料名称`、`物料编码`、`工序名称`、`工位名称`、`加急数量`、`完成数量`、`检验数量`、`检验合格数量`、`检验不合格数量`。 +6. 继续横向滚动或展开表格,核对:`检验操作人`、`检验时间`、`检测说明`、`操作`。 +7. 需要留存或流转时点击 `导出 -->`,导出/打印前确认当前查询条件和选中记录正确。 +8. 按业务需要点击 `取 消`,操作前先确认选中行和输入内容。 +9. 需要推进业务时先选中目标行并核对数量、时间、人员、工位、物料和备注,再点击 `关闭` 提交。 +10. 需要推进业务时先选中目标行并核对数量、时间、人员、工位、物料和备注,再点击 `关闭` 提交。 +11. 出现弹窗时按弹窗标题处理:`收检`、`加急明细`、`图纸`;弹窗关闭前确认必填项已保存。 +12. 涉及上传时先选择正确文件,再点击上传/保存;上传后重新查询,确认文件名、版本、上传时间或预览内容已显示。 +13. 保存或提交成功后重新点击查询,确认页面数据已通过 `工艺管理_图纸维护_查看图纸`、`加急订单_加急明细查询`、`查询字典`、`人员管理_人员信息查询_质检部门_查询`、`质量管理_质量检验_收检记录_查询` 等后台过程更新。 +14. 涉及 SAP/WMS 接口时,必须查看页面成功或失败提示;失败时先记录错误信息,不要连续重复提交同一单据。 +15. 录入检验结果时先核对检验类型、订单、物料、批次/工序,再填写合格数、不合格数和检测明细,避免检验记录挂错任务。 + +**查询条件/输入项** +- `物料编号` +- `合同号` +- `订单号` +- `零件编号` +- `零件名称` +- `完工日期_Start` +- `完工日期_End` +- `检测日期_Start` +- `检测日期_End` +- `检测结果` +- `检测人` +- `检测类别` +- `检测状态` +- `属性` +- `检测类型编号` +- `质检类型` +- `内部合同号` +- `零件编码` +- `计划号` +- `工序名称` +- `检测数量` +- `合格数` + +**结果表重点列** +- `序号` +- `销售订单` +- `生产订单` +- `物料名称` +- `物料编码` +- `工序名称` +- `工位名称` +- `加急数量` +- `完成数量` +- `检验数量` +- `检验合格数量` +- `检验不合格数量` +- `检验操作人` +- `检验时间` +- `检测说明` +- `操作` + +**页面按钮/状态/页签** +- `查询` +- `导出 -->` +- `取 消` +- `关闭` + +**弹窗/表单重点项** +- `收检` +- `加急明细` +- `图纸` + +**后台处理/外部接口** +- `存储过程:工艺管理_图纸维护_查看图纸` +- `存储过程:加急订单_加急明细查询` +- `存储过程:查询字典` +- `存储过程:人员管理_人员信息查询_质检部门_查询` +- `存储过程:质量管理_质量检验_收检记录_查询` +- `存储过程:质量管理_序检收检_新增` +- `接口:postB1 /QueryService_PostQuery` +- `接口:postB1 /PurchaseDeliveryNotes` + +**操作注意事项** +- 质检结果保存后会影响合格入库、不合格处理和后续工序,提交前必须核对数量。 +- 该页存在 SAP/WMS 调用,失败时应记录返回提示并确认是否已经生成外部单据。 + +### 21.53 过程特殊检验 + +页面路径:`src/views/QualityManagement/CheckTask/processSpecial.vue` +所属模块:质量管理 +建议使用人员:质检员/质量主管 + +页面用途:该页面用于过程特殊检验,录入特殊检验项目和结果。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 该页没有识别到固定查询区,按页面提示直接查看信息或使用菜单/按钮进入下一步。 +3. 录入检验结果时先核对检验类型、订单、物料、批次/工序,再填写合格数、不合格数和检测明细,避免检验记录挂错任务。 + +**查询条件/输入项** +- 未识别到固定输入项,按现场页面提示操作。 + +**结果表重点列** +- 未识别到固定表格列,以页面实际显示为准。 + +**页面按钮/状态/页签** +- 未识别到明确按钮,以页面实际显示为准。 + +**弹窗/表单重点项** +- 未识别到固定弹窗或表单项。 + +**后台处理/外部接口** +- 未发现页面级后台提交动作。 + +**操作注意事项** +- 质检结果保存后会影响合格入库、不合格处理和后续工序,提交前必须核对数量。 + +### 21.54 采购入库检 + +页面路径:`src/views/QualityManagement/CheckTask/purchaseIncoming.vue` +所属模块:质量管理 +建议使用人员:质检员/质量主管 + +页面用途:该页面用于采购/来料检验,质检人员录入来料检验数量、合格数、不合格数和检测明细。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 在查询区按需要填写筛选条件:`物料编号`、`订单号`、`零件编号`、`零件名称`、`检测日期_Start`、`检测日期_End`、`状态`、`检测结果`、`单据码`、`检测人`、`检测类型编号`、`质检类型`。 +3. 如果仍查不到数据,继续补充条件:`零件编码`、`计划号`、`检测数量`、`合格数`、`不合格数`、`检测时间`、`检测说明`、`行号`、`订单类型`、`到货数`,或清空过窄条件后重新查询。 +4. 点击 `查询` 刷新列表;状态按钮会切换任务范围。 +5. 列表较多时使用分页区切换页码或调整每页条数,避免只检查第一页。 +6. 查询后先核对关键列:`序号`、`单据码`、`生产订单`、`物料名称`、`物料编码`、`到货时间`、`位置`、`加急数量`、`到货数量`、`已检验数量`、`剩余待检`、`合格数`。 +7. 继续横向滚动或展开表格,核对:`不合格数`、`检验人`、`检验时间`、`备注`、`操作`。 +8. 按业务需要点击 `取 消`,操作前先确认选中行和输入内容。 +9. 需要推进业务时先选中目标行并核对数量、时间、人员、工位、物料和备注,再点击 `关闭` 提交。 +10. 需要推进业务时先选中目标行并核对数量、时间、人员、工位、物料和备注,再点击 `关闭` 提交。 +11. 出现弹窗时按弹窗标题处理:`入库检`、`扫码`、`图纸`、`加急明细`;弹窗关闭前确认必填项已保存。 +12. 涉及上传时先选择正确文件,再点击上传/保存;上传后重新查询,确认文件名、版本、上传时间或预览内容已显示。 +13. 保存或提交成功后重新点击查询,确认页面数据已通过 `加急订单_加急明细查询`、`工艺管理_图纸维护_查看图纸`、`查询字典`、`人员管理_人员信息查询_质检部门_查询`、`质量管理_质量检验_入库质检任务_查询` 等后台过程更新。 +14. 录入检验结果时先核对检验类型、订单、物料、批次/工序,再填写合格数、不合格数和检测明细,避免检验记录挂错任务。 + +**查询条件/输入项** +- `物料编号` +- `订单号` +- `零件编号` +- `零件名称` +- `检测日期_Start` +- `检测日期_End` +- `状态` +- `检测结果` +- `单据码` +- `检测人` +- `检测类型编号` +- `质检类型` +- `零件编码` +- `计划号` +- `检测数量` +- `合格数` +- `不合格数` +- `检测时间` +- `检测说明` +- `行号` +- `订单类型` +- `到货数` + +**结果表重点列** +- `序号` +- `单据码` +- `生产订单` +- `物料名称` +- `物料编码` +- `到货时间` +- `位置` +- `加急数量` +- `到货数量` +- `已检验数量` +- `剩余待检` +- `合格数` +- `不合格数` +- `检验人` +- `检验时间` +- `备注` +- `操作` + +**页面按钮/状态/页签** +- `查询` +- `取 消` +- `关闭` + +**弹窗/表单重点项** +- `入库检` +- `扫码` +- `图纸` +- `加急明细` + +**后台处理/外部接口** +- `存储过程:加急订单_加急明细查询` +- `存储过程:工艺管理_图纸维护_查看图纸` +- `存储过程:查询字典` +- `存储过程:人员管理_人员信息查询_质检部门_查询` +- `存储过程:质量管理_质量检验_入库质检任务_查询` +- `存储过程:质量管理_来料检验_更新` + +**操作注意事项** +- 质检结果保存后会影响合格入库、不合格处理和后续工序,提交前必须核对数量。 + +### 21.55 销售退货检 + +页面路径:`src/views/QualityManagement/CheckTask/salesReturn.vue` +所属模块:质量管理 +建议使用人员:质检员/质量主管 + +页面用途:该页面用于销售退货检验,录入退货质检结果。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 在查询区按需要填写筛选条件:`订单号`、`零件编号`、`零件名称`、`检测日期_Start`、`检测日期_End`、`检测结果`、`检测人`、`检测类型编号`、`质检类型`、`零件编码`、`计划号`、`检测数量`。 +3. 如果仍查不到数据,继续补充条件:`合格数`、`不合格数`、`检测时间`、`检测说明`、`行号`、`订单类型`、`doc_date`、`doc_type`、`external_num`、`task_items`,或清空过窄条件后重新查询。 +4. 点击 `查询` 刷新列表;状态按钮会切换任务范围。 +5. 查询后先核对关键列:`序号`、`生产订单`、`物料名称`、`物料编码`、`采购数`、`检验数量`、`合格数`、`不合格数`、`检验人`、`检验时间`、`备注`、`操作`。 +6. 按业务需要点击 `取 消`,操作前先确认选中行和输入内容。 +7. 出现弹窗时按弹窗标题处理:`退货检`;弹窗关闭前确认必填项已保存。 +8. 保存或提交成功后重新点击查询,确认页面数据已通过 `查询字典`、`人员管理_人员信息查询_质检部门_查询`、`质量管理_质量检验_退货质检任务_查询`、`质量管理_销售退货检_更新` 等后台过程更新。 +9. 涉及 SAP/WMS 接口时,必须查看页面成功或失败提示;失败时先记录错误信息,不要连续重复提交同一单据。 +10. 录入检验结果时先核对检验类型、订单、物料、批次/工序,再填写合格数、不合格数和检测明细,避免检验记录挂错任务。 + +**查询条件/输入项** +- `订单号` +- `零件编号` +- `零件名称` +- `检测日期_Start` +- `检测日期_End` +- `检测结果` +- `检测人` +- `检测类型编号` +- `质检类型` +- `零件编码` +- `计划号` +- `检测数量` +- `合格数` +- `不合格数` +- `检测时间` +- `检测说明` +- `行号` +- `订单类型` +- `doc_date` +- `doc_type` +- `external_num` +- `task_items` + +**结果表重点列** +- `序号` +- `生产订单` +- `物料名称` +- `物料编码` +- `采购数` +- `检验数量` +- `合格数` +- `不合格数` +- `检验人` +- `检验时间` +- `备注` +- `操作` + +**页面按钮/状态/页签** +- `查询` +- `取 消` + +**弹窗/表单重点项** +- `退货检` + +**后台处理/外部接口** +- `存储过程:查询字典` +- `存储过程:人员管理_人员信息查询_质检部门_查询` +- `存储过程:质量管理_质量检验_退货质检任务_查询` +- `存储过程:质量管理_销售退货检_更新` +- `接口:posttm /stocktask/task/issueordertask` + +**操作注意事项** +- 质检结果保存后会影响合格入库、不合格处理和后续工序,提交前必须核对数量。 +- 该页存在 SAP/WMS 调用,失败时应记录返回提示并确认是否已经生成外部单据。 + +### 21.56 质量中心 + +页面路径:`src/views/QualityManagement/QualityCenter/index.vue` +所属模块:质量管理 +建议使用人员:质检员/质量主管 + +页面用途:该页面是质量综合处理中心,集中处理待检、收检、检测明细、不合格和 SAP/WMS 联动。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 在查询区按需要填写筛选条件:`物料编号`、`用户ID`、`订单编号`、`订单号`、`零件编号`、`生产状态`、`工位名称`、`计划号`、`销售订单`、`送检`、`计划开工_Start`、`计划开工_End`。 +3. 如果仍查不到数据,继续补充条件:`ItemCode`、`用户名`、`isOvertime`、`加班人员`、`overtimeHours`、`overtimeShift`、`结束时间`、`备注`、`工序说明`、`异常说明`,或清空过窄条件后重新查询。 +4. 点击 `查询 缺料` 刷新列表;状态按钮会切换任务范围。 +5. 查询后先核对关键列:`序号`、`生产订单`、`销售订单`、`计划号`、`物料编码`、`物料名称`、`齐套`、`发料状态`、`拣配`、`操作`、`加急数量`、`分配数`。 +6. 继续横向滚动或展开表格,核对:`送检数`、`本次检数`、`检验数`、`合格数`、`任务状态`、`工序顺序`、`指派对象`、`计划开始`、`计划完成`、`二次派工`、`工序名称`、`开工时间`、`加工状态`、`收料数`。 +7. 按业务需要点击 `上一个 下一个`,操作前先确认选中行和输入内容。 +8. 需要删除时先确认该记录没有正在使用的业务数据,再点击 `删除当前记录 关闭`,按确认提示执行。 +9. 需要维护已有记录时先选中目标行,再点击或触发表格内 `上一个 下一个 保存当前记录 删除当前记录 关闭`,修改字段后保存并等待成功提示。 +10. 需要维护已有记录时先选中目标行,再点击或触发表格内 `确定 关闭`,修改字段后保存并等待成功提示。 +11. 按业务需要点击 `取 消`,操作前先确认选中行和输入内容。 +12. 需要维护已有记录时先选中目标行,再点击或触发表格内 `确 定`,修改字段后保存并等待成功提示。 +13. 需要新增时点击 `新增异常工时`,在弹窗中逐项填写必填字段,确认编码、名称、状态等基础信息后保存。 +14. 需要维护已有记录时先选中目标行,再点击或触发表格内 `编辑`,修改字段后保存并等待成功提示。 +15. 按业务需要点击 `取 消`,操作前先确认选中行和输入内容。 +16. 需要维护已有记录时先选中目标行,再点击或触发表格内 `确 定`,修改字段后保存并等待成功提示。 +17. 出现弹窗时按弹窗标题处理:`首检自检`、`序检自检`、`收检`、`送检`、`异常工时`、`新增工时记录`、`编辑任务信息`、`退库单`;弹窗关闭前确认必填项已保存。 +18. 弹窗或表单内重点填写:`生产订单`、`零件编码`、`计划数量`、`当前时间`、`送检数`、`操作工位`、`操作人`、`操作类别`、`物料编码`、`物料名称`、`工序名称`、`指派对象`、`开始时间`、`结束时间`,提交前逐项核对。 +19. 涉及上传时先选择正确文件,再点击上传/保存;上传后重新查询,确认文件名、版本、上传时间或预览内容已显示。 +20. 保存或提交成功后重新点击查询,确认页面数据已通过 `生产管理_获取人员绑定`、`加急订单_加急明细查询`、`MES_人员工时记录_获取进行中任务2`、`MES_人员工时记录_获取进行中任务`、`工时校验_获取订单列表` 等后台过程更新。 +21. 涉及 SAP/WMS 接口时,必须查看页面成功或失败提示;失败时先记录错误信息,不要连续重复提交同一单据。 +22. 录入检验结果时先核对检验类型、订单、物料、批次/工序,再填写合格数、不合格数和检测明细,避免检验记录挂错任务。 + +**查询条件/输入项** +- `物料编号` +- `用户ID` +- `订单编号` +- `订单号` +- `零件编号` +- `生产状态` +- `工位名称` +- `计划号` +- `销售订单` +- `送检` +- `计划开工_Start` +- `计划开工_End` +- `ItemCode` +- `用户名` +- `isOvertime` +- `加班人员` +- `overtimeHours` +- `overtimeShift` +- `结束时间` +- `备注` +- `工序说明` +- `异常说明` + +**结果表重点列** +- `序号` +- `生产订单` +- `销售订单` +- `计划号` +- `物料编码` +- `物料名称` +- `齐套` +- `发料状态` +- `拣配` +- `操作` +- `加急数量` +- `分配数` +- `送检数` +- `本次检数` +- `检验数` +- `合格数` +- `任务状态` +- `工序顺序` +- `指派对象` +- `计划开始` +- `计划完成` +- `二次派工` +- `工序名称` +- `开工时间` +- `加工状态` +- `收料数` +- `优先` +- `首检` +- `序检` +- `检测项目` +- `上限值` +- `下限值` +- `测量单位` +- `检验比例` + +**页面按钮/状态/页签** +- `查询 缺料` +- `上一个 下一个` +- `删除当前记录 关闭` +- `上一个 下一个 保存当前记录 删除当前记录 关闭` +- `确定 关闭` +- `取 消` +- `确 定` +- `新增异常工时` +- `编辑` +- `取消` +- `关闭` +- `确定` + +**弹窗/表单重点项** +- `首检自检` +- `序检自检` +- `收检` +- `送检` +- `异常工时` +- `新增工时记录` +- `编辑任务信息` +- `退库单` +- `领料单` +- `缺料单` +- `报工结束` +- `图纸` +- `加急明细` +- `加班确认` +- `生产订单` +- `零件编码` +- `计划数量` +- `当前时间` +- `送检数` +- `操作工位` +- `操作人` +- `操作类别` +- `物料编码` +- `物料名称` +- `工序名称` +- `指派对象` +- `开始时间` +- `结束时间` +- `工作内容` +- `备注说明` + +**后台处理/外部接口** +- `存储过程:生产管理_获取人员绑定` +- `存储过程:加急订单_加急明细查询` +- `存储过程:MES_人员工时记录_获取进行中任务2` +- `存储过程:MES_人员工时记录_获取进行中任务` +- `存储过程:工时校验_获取订单列表` +- `存储过程:异常工时_新增操作记录` +- `存储过程:工时校验_获取订单工序` +- `存储过程:MES_登录_工位与名称_查询` +- `存储过程:Prog_MES_LoadProcess` +- `存储过程:质量管理_质检报工_任务查询` +- `存储过程:MES_ProductTask_WorkTimeSum` +- `存储过程:生产管理_装配中心_缺料查询` +- `存储过程:MES_人员工时记录_开始` +- `存储过程:生产管理_加工中心_班次信息` +- `存储过程:生产管理_加工中心_自动加班` +- `存储过程:MES_人员工时记录_结束` +- `存储过程:MES_ProductTask_Rest` +- `存储过程:MES_ProductTask_SendInspection` +- `存储过程:加工中心_收检_读取收检记录` +- `存储过程:MES_QulityInspection_ReceiveCheck` +- `接口:getB1 /ProductionOrders` +- `接口:posttm /stocktask/task/issueordertask` + +**操作注意事项** +- 质检结果保存后会影响合格入库、不合格处理和后续工序,提交前必须核对数量。 +- 该页存在 SAP/WMS 调用,失败时应记录返回提示并确认是否已经生成外部单据。 + +### 21.57 质检明细 + +页面路径:`src/views/QualityManagement/QualityDetails/index.vue` +所属模块:质量管理 +建议使用人员:质检员/质量主管 + +页面用途:该页面用于查询质检明细,按订单、物料、检验类型和时间追溯检测记录。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 在查询区按需要填写筛选条件:`质检类型`、`开始日期`、`结束日期`、`订单号`、`合同号`、`零件编码`、`零件名称`、`订单编号`、`PageCurrent`、`pageSize`、`PageCount`、`ItemCount`。 +3. 如果仍查不到数据,继续补充条件:`order编号`、`contract编号`、`productCode`、`productName`、`QualityStatus`、`startDate`、`endDate`、`选择开始日期`、`选择日期`,或清空过窄条件后重新查询。 +4. 点击 `查询` 刷新列表;状态按钮会切换任务范围。 +5. 列表较多时使用分页区切换页码或调整每页条数,避免只检查第一页。 +6. 查询后先核对关键列:`selection`、`序号`、`质检类型`、`零件编码`、`零件名称`、`销售订单号`、`生产订单号`、`工序名称`、`工位名称`、`供应商代码`、`检验数量`、`合格数`。 +7. 继续横向滚动或展开表格,核对:`不合格数`、`检测人`、`检测时间`、`检测说明`。 +8. 需要留存或流转时点击 `Excel导出`,导出/打印前确认当前查询条件和选中记录正确。 +9. 保存或提交成功后重新点击查询,确认页面数据已通过 `质量管理_质检明细_导出`、`系统管理_人员管理_所有有效人员查询`、`工时校验_获取订单列表`、`工时校验_获取订单工序`、`质量管理_质检明细_查询` 等后台过程更新。 +10. 录入检验结果时先核对检验类型、订单、物料、批次/工序,再填写合格数、不合格数和检测明细,避免检验记录挂错任务。 + +**查询条件/输入项** +- `质检类型` +- `开始日期` +- `结束日期` +- `订单号` +- `合同号` +- `零件编码` +- `零件名称` +- `订单编号` +- `PageCurrent` +- `pageSize` +- `PageCount` +- `ItemCount` +- `order编号` +- `contract编号` +- `productCode` +- `productName` +- `QualityStatus` +- `startDate` +- `endDate` +- `选择开始日期` +- `选择日期` + +**结果表重点列** +- `selection` +- `序号` +- `质检类型` +- `零件编码` +- `零件名称` +- `销售订单号` +- `生产订单号` +- `工序名称` +- `工位名称` +- `供应商代码` +- `检验数量` +- `合格数` +- `不合格数` +- `检测人` +- `检测时间` +- `检测说明` + +**页面按钮/状态/页签** +- `查询` +- `Excel导出` + +**弹窗/表单重点项** +- 未识别到固定弹窗或表单项。 + +**后台处理/外部接口** +- `存储过程:质量管理_质检明细_导出` +- `存储过程:系统管理_人员管理_所有有效人员查询` +- `存储过程:工时校验_获取订单列表` +- `存储过程:工时校验_获取订单工序` +- `存储过程:质量管理_质检明细_查询` + +**操作注意事项** +- 质检结果保存后会影响合格入库、不合格处理和后续工序,提交前必须核对数量。 + +### 21.58 质量标准查询(副本) + +页面路径:`src/views/QualityManagement/QualityStandardQuery/index copy.vue` +所属模块:质量管理 +建议使用人员:质检员/质量主管 + +页面用途:该页面用于查询或维护质量检验标准、检测项目、上下限和启用状态。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 在查询区按需要填写筛选条件:`零件号`、`零件编号`、`工序`、`工序编号`、`类型`、`类型编号`、`检验比例`、`检验项目`、`检验内容`、`上限值`、`下限值`、`单位`。 +3. 如果仍查不到数据,继续补充条件:`检具`、`备注`、`ID`、`part编号`、`process`、`type`,或清空过窄条件后重新查询。 +4. 点击 `查询 新增标准 修改 删除 确定 取 消` 刷新列表;状态按钮会切换任务范围。 +5. 查询后先核对关键列:`序号`、`零件号`、`工序`、`类型`、`检验项目`、`检验内容`、`上限值`、`下限值`、`单位`、`检验比例`、`检具`、`备注`。 +6. 继续横向滚动或展开表格,核对:`操作`。 +7. 需要维护已有记录时先选中目标行,再点击或触发表格内 `确定 取 消`,修改字段后保存并等待成功提示。 +8. 出现弹窗时按弹窗标题处理:`dialogTitle`;弹窗关闭前确认必填项已保存。 +9. 弹窗或表单内重点填写:`零件号`、`工序`、`类型`、`检验比例`、`检验项目`、`检验内容`、`上限值`、`下限值`、`单位`、`检具`、`备注`,提交前逐项核对。 +10. 保存或提交成功后重新点击查询,确认页面数据已通过 `查询零件号`、`Prog_MES_LoadProcess`、`查询字典`、`质量管理_检验标准表_新增`、`质量管理_检验标准表_查询` 等后台过程更新。 +11. 录入检验结果时先核对检验类型、订单、物料、批次/工序,再填写合格数、不合格数和检测明细,避免检验记录挂错任务。 + +**查询条件/输入项** +- `零件号` +- `零件编号` +- `工序` +- `工序编号` +- `类型` +- `类型编号` +- `检验比例` +- `检验项目` +- `检验内容` +- `上限值` +- `下限值` +- `单位` +- `检具` +- `备注` +- `ID` +- `part编号` +- `process` +- `type` + +**结果表重点列** +- `序号` +- `零件号` +- `工序` +- `类型` +- `检验项目` +- `检验内容` +- `上限值` +- `下限值` +- `单位` +- `检验比例` +- `检具` +- `备注` +- `操作` + +**页面按钮/状态/页签** +- `查询 新增标准 修改 删除 确定 取 消` +- `确定 取 消` + +**弹窗/表单重点项** +- `dialogTitle` +- `零件号` +- `工序` +- `类型` +- `检验比例` +- `检验项目` +- `检验内容` +- `上限值` +- `下限值` +- `单位` +- `检具` +- `备注` + +**后台处理/外部接口** +- `存储过程:查询零件号` +- `存储过程:Prog_MES_LoadProcess` +- `存储过程:查询字典` +- `存储过程:质量管理_检验标准表_新增` +- `存储过程:质量管理_检验标准表_查询` +- `存储过程:质量管理_检验标准表_修改` +- `存储过程:质量管理_检验标准表_删除` + +**操作注意事项** +- 质检结果保存后会影响合格入库、不合格处理和后续工序,提交前必须核对数量。 + +### 21.59 质量标准查询 + +页面路径:`src/views/QualityManagement/QualityStandardQuery/index.vue` +所属模块:质量管理 +建议使用人员:质检员/质量主管 + +页面用途:该页面用于查询或维护质量检验标准、检测项目、上下限和启用状态。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 在查询区按需要填写筛选条件:`物料编号`、`工序名称编号`、`检测类别编号`、`检测项目`、`理论值`、`上限值`、`下限值`、`测量单位`、`检验比例`、`检具`、`备注`、`AID`。 +3. 如果仍查不到数据,继续补充条件:`工序`、`检测类别`、`工序名称`,或清空过窄条件后重新查询。 +4. 点击 `查询 新增标准 修改 删除 确定 取 消` 刷新列表;状态按钮会切换任务范围。 +5. 查询后先核对关键列:`序号`、`物料编号`、`工序名称`、`检测类别`、`检测项目`、`上限值`、`下限值`、`测量单位`、`检验比例`、`检具`、`备注`、`操作`。 +6. 需要维护已有记录时先选中目标行,再点击或触发表格内 `确定 取 消`,修改字段后保存并等待成功提示。 +7. 出现弹窗时按弹窗标题处理:`dialogTitle`;弹窗关闭前确认必填项已保存。 +8. 弹窗或表单内重点填写:`物料编号`、`工序名称`、`检测类别`、`检具`、`检测项目`、`理论值`、`上限值`、`下限值`、`测量单位`、`检验比例`、`备注`、`检测类别编号`,提交前逐项核对。 +9. 保存或提交成功后重新点击查询,确认页面数据已通过 `MES_ProcessManagement_PartGet`、`Prog_MES_LoadProcess`、`查询字典`、`质量管理_检验标准表_新增`、`质量管理_检验标准表_查询` 等后台过程更新。 +10. 录入检验结果时先核对检验类型、订单、物料、批次/工序,再填写合格数、不合格数和检测明细,避免检验记录挂错任务。 + +**查询条件/输入项** +- `物料编号` +- `工序名称编号` +- `检测类别编号` +- `检测项目` +- `理论值` +- `上限值` +- `下限值` +- `测量单位` +- `检验比例` +- `检具` +- `备注` +- `AID` +- `工序` +- `检测类别` +- `工序名称` + +**结果表重点列** +- `序号` +- `物料编号` +- `工序名称` +- `检测类别` +- `检测项目` +- `上限值` +- `下限值` +- `测量单位` +- `检验比例` +- `检具` +- `备注` +- `操作` + +**页面按钮/状态/页签** +- `查询 新增标准 修改 删除 确定 取 消` +- `确定 取 消` + +**弹窗/表单重点项** +- `dialogTitle` +- `物料编号` +- `工序名称` +- `检测类别` +- `检具` +- `检测项目` +- `理论值` +- `上限值` +- `下限值` +- `测量单位` +- `检验比例` +- `备注` +- `检测类别编号` + +**后台处理/外部接口** +- `存储过程:MES_ProcessManagement_PartGet` +- `存储过程:Prog_MES_LoadProcess` +- `存储过程:查询字典` +- `存储过程:质量管理_检验标准表_新增` +- `存储过程:质量管理_检验标准表_查询` +- `存储过程:质量管理_检验标准表_修改` +- `存储过程:质量管理_检验标准表_删除` + +**操作注意事项** +- 质检结果保存后会影响合格入库、不合格处理和后续工序,提交前必须核对数量。 + +### 21.60 不合格品处理 + +页面路径:`src/views/QualityManagement/Unqualified/index.vue` +所属模块:质量管理 +建议使用人员:质检员/质量主管 + +页面用途:该页面用于不合格品处理,记录处置方式、责任、原因和处理结果。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 在查询区按需要填写筛选条件:`质检类型`、`开始日期`、`结束日期`、`订单号`、`合同号`、`零件编码`、`零件名称`、`检测人`、`PageCurrent`、`pageSize`、`PageCount`、`ItemCount`。 +3. 如果仍查不到数据,继续补充条件:`order编号`、`contract编号`、`productCode`、`productName`、`checker`、`QualityStatus`、`startDate`、`endDate`、`选择开始日期`、`选择日期`,或清空过窄条件后重新查询。 +4. 点击 `查询` 刷新列表;状态按钮会切换任务范围。 +5. 列表较多时使用分页区切换页码或调整每页条数,避免只检查第一页。 +6. 查询后先核对关键列:`序号`、`质检类型`、`零件编码`、`零件名称`、`内部合同号`、`计划号`、`工序名称`、`工位名称`、`供应商代码`、`检验数量`、`合格数`、`不合格数`。 +7. 继续横向滚动或展开表格,核对:`检测人`、`检测时间`、`检测说明`、`操作`。 +8. 需要留存或流转时点击 `Excel导出`,导出/打印前确认当前查询条件和选中记录正确。 +9. 需要留存或流转时点击 `打印`,导出/打印前确认当前查询条件和选中记录正确。 +10. 保存或提交成功后重新点击查询,确认页面数据已通过 `人员管理_人员信息查询_质检部门_查询`、`质量管理_不合格品处置_查询` 等后台过程更新。 +11. 录入检验结果时先核对检验类型、订单、物料、批次/工序,再填写合格数、不合格数和检测明细,避免检验记录挂错任务。 + +**查询条件/输入项** +- `质检类型` +- `开始日期` +- `结束日期` +- `订单号` +- `合同号` +- `零件编码` +- `零件名称` +- `检测人` +- `PageCurrent` +- `pageSize` +- `PageCount` +- `ItemCount` +- `order编号` +- `contract编号` +- `productCode` +- `productName` +- `checker` +- `QualityStatus` +- `startDate` +- `endDate` +- `选择开始日期` +- `选择日期` + +**结果表重点列** +- `序号` +- `质检类型` +- `零件编码` +- `零件名称` +- `内部合同号` +- `计划号` +- `工序名称` +- `工位名称` +- `供应商代码` +- `检验数量` +- `合格数` +- `不合格数` +- `检测人` +- `检测时间` +- `检测说明` +- `操作` + +**页面按钮/状态/页签** +- `查询` +- `Excel导出` +- `打印` + +**弹窗/表单重点项** +- 未识别到固定弹窗或表单项。 + +**后台处理/外部接口** +- `存储过程:人员管理_人员信息查询_质检部门_查询` +- `存储过程:质量管理_不合格品处置_查询` + +**操作注意事项** +- 质检结果保存后会影响合格入库、不合格处理和后续工序,提交前必须核对数量。 + +## 21-9 销售与交付查询 + +### 21.61 销售订单状态 + +页面路径:`src/views/SaleManagement/saleorderstatus/index.vue` +所属模块:销售与交付查询 +建议使用人员:销售/计划/生产跟单人员 + +页面用途:该页面用于查询销售订单状态,跟踪销售订单在生产、交付和关闭过程中的状态。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 在查询区按需要填写筛选条件:`ItemCode`、`订单号`、`物料类型`、`合同号`、`产品编码`、`产品名称`、`工序名称`、`计划开始1`、`计划开始2`、`计划完成1`、`计划完成2`、`要求完工日期1`。 +3. 如果仍查不到数据,继续补充条件:`要求完工日期2`、`排产状态`、`指派对象`、`计划号`、`发货状态`、`入库状态`、`是否外协`、`订单行号`、`订单拆分内码`、`优先级`,或清空过窄条件后重新查询。 +4. 点击 `查询` 刷新列表;状态按钮会切换任务范围。 +5. 查询后先核对关键列:`expand`、`序号`、`工序名称`、`计划数量`、`指派对象`、`开始时间`、`结束时间`、`完成进度`、`完成数量`、`合格数`、`不良数`、`任务状态`。 +6. 继续横向滚动或展开表格,核对:`加工状态`、`操作`、`发货通知`、`销售订单`、`计划号`、`生产订单`、`产品名称`、`产品编码`、`入库数量`、`要求完工日`、`要求发货日`、`预计齐套时间`、`外协`、`齐套`。 +7. 按业务需要点击 `缺料`,操作前先确认选中行和输入内容。 +8. 需要推进业务时先选中目标行并核对数量、时间、人员、工位、物料和备注,再点击 `关闭` 提交。 +9. 出现弹窗时按弹窗标题处理:`缺料单`;弹窗关闭前确认必填项已保存。 +10. 保存或提交成功后重新点击查询,确认页面数据已通过 `生产管理_装配中心_缺料查询`、`销售管理_销售订单状态`、`MES_OrderPlanned_DescriptionEdit`、`Prog_MES_LoadStations` 等后台过程更新。 + +**查询条件/输入项** +- `ItemCode` +- `订单号` +- `物料类型` +- `合同号` +- `产品编码` +- `产品名称` +- `工序名称` +- `计划开始1` +- `计划开始2` +- `计划完成1` +- `计划完成2` +- `要求完工日期1` +- `要求完工日期2` +- `排产状态` +- `指派对象` +- `计划号` +- `发货状态` +- `入库状态` +- `是否外协` +- `订单行号` +- `订单拆分内码` +- `优先级` + +**结果表重点列** +- `expand` +- `序号` +- `工序名称` +- `计划数量` +- `指派对象` +- `开始时间` +- `结束时间` +- `完成进度` +- `完成数量` +- `合格数` +- `不良数` +- `任务状态` +- `加工状态` +- `操作` +- `发货通知` +- `销售订单` +- `计划号` +- `生产订单` +- `产品名称` +- `产品编码` +- `入库数量` +- `要求完工日` +- `要求发货日` +- `预计齐套时间` +- `外协` +- `齐套` +- `拣配状态` +- `发料状态` +- `装配开工` +- `送检数量` +- `终检` +- `工艺` +- `排产` +- `优先级` + +**页面按钮/状态/页签** +- `查询` +- `缺料` +- `关闭` + +**弹窗/表单重点项** +- `缺料单` + +**后台处理/外部接口** +- `存储过程:生产管理_装配中心_缺料查询` +- `存储过程:销售管理_销售订单状态` +- `存储过程:MES_OrderPlanned_DescriptionEdit` +- `存储过程:Prog_MES_LoadStations` + +**操作注意事项** +- 操作后建议重新查询页面,确认列表、状态和明细已经刷新。 + +## 21-10 系统维护 + +### 21.62 菜单管理 + +页面路径:`src/views/SystemMaintenance/MenuManagement/index.vue` +所属模块:系统维护 +建议使用人员:系统管理员/相关用户 + +页面用途:该页面用于维护系统菜单、按钮权限和路由配置。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 在查询区按需要填写筛选条件:`roleName`、`filterTextLeft`、`filterText`、`AuthButtonsAll`、`SearchData`、`AddData`、`EditData`、`DeleteData`、`filterTextRight`、`moduleName`、`输入关键字进行过滤`。 +3. 点击页面上的查询或刷新类按钮获取最新数据;如果页面自动加载,则先核对默认列表是否符合当前业务范围。 +4. 查询后先核对关键列:`selection`、`模块名称`、`模块路径`。 +5. 如果页面左侧或上方有树形结构,先选中组织、物料、菜单或产品节点,再查看右侧列表;新增子节点前确认父节点选中正确。 +6. 需要删除时先确认该记录没有正在使用的业务数据,再点击 `returnModule(node, data)"> 移除`,按确认提示执行。 +7. 需要维护已有记录时先选中目标行,再点击或触发表格内 `确定`,修改字段后保存并等待成功提示。 +8. 出现弹窗时按弹窗标题处理:`新增一级模块`;弹窗关闭前确认必填项已保存。 +9. 弹窗或表单内重点填写:`模块名称`,提交前逐项核对。 +10. 保存或提交成功后重新点击查询,确认页面数据已通过 `菜单系统模块_项目角色_查询数据_MESWORK` 等后台过程更新。 +11. 权限类修改保存后,需要让相关用户重新登录或刷新权限,再验证菜单、按钮和数据范围是否生效。 + +**查询条件/输入项** +- `roleName` +- `filterTextLeft` +- `filterText` +- `AuthButtonsAll` +- `SearchData` +- `AddData` +- `EditData` +- `DeleteData` +- `filterTextRight` +- `moduleName` +- `输入关键字进行过滤` + +**结果表重点列** +- `selection` +- `模块名称` +- `模块路径` + +**页面按钮/状态/页签** +- `returnModule(node, data)"> 移除` +- `取消` +- `确定` + +**弹窗/表单重点项** +- `新增一级模块` +- `模块名称` + +**后台处理/外部接口** +- `存储过程:菜单系统模块_项目角色_查询数据_MESWORK` + +**操作注意事项** +- 系统维护类数据会影响登录、权限、菜单和业务可选项,修改后需要验证。 + +### 21.63 操作日志 + +页面路径:`src/views/SystemMaintenance/OperationLog/index.vue` +所属模块:系统维护 +建议使用人员:系统管理员/相关用户 + +页面用途:该页面用于查询操作日志,追溯用户操作、报工或业务变更记录。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 在查询区按需要填写筛选条件:`订单编号`、`操作人`。 +3. 点击 `查询` 刷新列表;状态按钮会切换任务范围。 +4. 列表较多时使用分页区切换页码或调整每页条数,避免只检查第一页。 +5. 查询后先核对关键列:`序号`、`订单编号`、`操作类别`、`工序名称`、`工位名称`、`操作人`、`合同号`、`物料编号`、`物料描述`、`操作数值`、`开始时间`、`结束时间`。 +6. 继续横向滚动或展开表格,核对:`人员工时`、`设备工时`、`最后编辑人`、`最后编辑时间`、`操作描述`。 +7. 弹窗或表单内重点填写:`订单编号`、`操作人`,提交前逐项核对。 +8. 保存或提交成功后重新点击查询,确认页面数据已通过 `系统管理_报工操作记录_查询` 等后台过程更新。 + +**查询条件/输入项** +- `订单编号` +- `操作人` + +**结果表重点列** +- `序号` +- `订单编号` +- `操作类别` +- `工序名称` +- `工位名称` +- `操作人` +- `合同号` +- `物料编号` +- `物料描述` +- `操作数值` +- `开始时间` +- `结束时间` +- `人员工时` +- `设备工时` +- `最后编辑人` +- `最后编辑时间` +- `操作描述` + +**页面按钮/状态/页签** +- `查询` + +**弹窗/表单重点项** +- `订单编号` +- `操作人` + +**后台处理/外部接口** +- `存储过程:系统管理_报工操作记录_查询` + +**操作注意事项** +- 系统维护类数据会影响登录、权限、菜单和业务可选项,修改后需要验证。 + +### 21.64 组织管理 + +页面路径:`src/views/SystemMaintenance/OrgManagement/index.vue` +所属模块:系统维护 +建议使用人员:系统管理员/相关用户 + +页面用途:该页面用于维护组织、部门或组织树基础资料。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 在查询区按需要填写筛选条件:`RoleFunctioning`、`角色功能`、`部门名称`。 +3. 点击 `查询` 刷新列表;状态按钮会切换任务范围。 +4. 列表较多时使用分页区切换页码或调整每页条数,避免只检查第一页。 +5. 查询后先核对关键列:`部门名称`、`编辑`。 +6. 需要新增时点击 `新增`,在弹窗中逐项填写必填字段,确认编码、名称、状态等基础信息后保存。 +7. 需要维护已有记录时先选中目标行,再点击或触发表格内 `编辑`,修改字段后保存并等待成功提示。 +8. 需要删除时先确认该记录没有正在使用的业务数据,再点击 `删除`,按确认提示执行。 +9. 需要维护已有记录时先选中目标行,再点击或触发表格内 `确 定`,修改字段后保存并等待成功提示。 +10. 需要维护已有记录时先选中目标行,再点击或触发表格内 `确 定`,修改字段后保存并等待成功提示。 +11. 出现弹窗时按弹窗标题处理:`新增部门`、`编辑部门`;弹窗关闭前确认必填项已保存。 +12. 弹窗或表单内重点填写:`部门名称`,提交前逐项核对。 +13. 保存或提交成功后重新点击查询,确认页面数据已通过 `菜单系统模块_项目角色_查询数据_MESWORK`、`菜单系统模块_项目角色_修改数据_MESWORK`、`菜单系统模块_项目角色_增加_MESWORK`、`菜单系统模块_项目角色_删除_MESWORK` 等后台过程更新。 + +**查询条件/输入项** +- `RoleFunctioning` +- `角色功能` +- `部门名称` + +**结果表重点列** +- `部门名称` +- `编辑` + +**页面按钮/状态/页签** +- `查询` +- `新增` +- `编辑` +- `删除` +- `确 定` +- `取消` + +**弹窗/表单重点项** +- `新增部门` +- `编辑部门` +- `部门名称` + +**后台处理/外部接口** +- `存储过程:菜单系统模块_项目角色_查询数据_MESWORK` +- `存储过程:菜单系统模块_项目角色_修改数据_MESWORK` +- `存储过程:菜单系统模块_项目角色_增加_MESWORK` +- `存储过程:菜单系统模块_项目角色_删除_MESWORK` + +**操作注意事项** +- 系统维护类数据会影响登录、权限、菜单和业务可选项,修改后需要验证。 + +### 21.65 人员管理 + +页面路径:`src/views/SystemMaintenance/PersonnelManagement/index.vue` +所属模块:系统维护 +建议使用人员:系统管理员/相关用户 + +页面用途:该页面用于维护人员账号、部门、角色和启用状态。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 在查询区按需要填写筛选条件:`PersonalName`、`PersonalroleValue`、`account`、`password`、`姓名`、`角色`、`工号`、`密码`。 +3. 点击 `查询` 刷新列表;状态按钮会切换任务范围。 +4. 列表较多时使用分页区切换页码或调整每页条数,避免只检查第一页。 +5. 查询后先核对关键列:`姓名`、`工号`、`密码`、`角色`、`操作`。 +6. 需要新增时点击 `新增`,在弹窗中逐项填写必填字段,确认编码、名称、状态等基础信息后保存。 +7. 按业务需要点击 `重置密码`,操作前先确认选中行和输入内容。 +8. 需要维护已有记录时先选中目标行,再点击或触发表格内 `编辑`,修改字段后保存并等待成功提示。 +9. 需要删除时先确认该记录没有正在使用的业务数据,再点击 `删除`,按确认提示执行。 +10. 需要维护已有记录时先选中目标行,再点击或触发表格内 `确 定`,修改字段后保存并等待成功提示。 +11. 需要维护已有记录时先选中目标行,再点击或触发表格内 `确 定`,修改字段后保存并等待成功提示。 +12. 出现弹窗时按弹窗标题处理:`title`、`title1`;弹窗关闭前确认必填项已保存。 +13. 弹窗或表单内重点填写:`姓名`、`工号`、`密码`、`角色`,提交前逐项核对。 +14. 保存或提交成功后重新点击查询,确认页面数据已通过 `人员管理_角色信息初始化查询_查询`、`登录基础数据_人员信息_切换是否用户`、`人员管理_人员信息查询_查询`、`人员管理_人员信息修改_编辑`、`人员管理_人员信息修改_删除` 等后台过程更新。 +15. 权限类修改保存后,需要让相关用户重新登录或刷新权限,再验证菜单、按钮和数据范围是否生效。 + +**查询条件/输入项** +- `PersonalName` +- `PersonalroleValue` +- `account` +- `password` +- `姓名` +- `角色` +- `工号` +- `密码` + +**结果表重点列** +- `姓名` +- `工号` +- `密码` +- `角色` +- `操作` + +**页面按钮/状态/页签** +- `查询` +- `新增` +- `重置密码` +- `编辑` +- `删除` +- `确 定` +- `取消` + +**弹窗/表单重点项** +- `title` +- `title1` +- `姓名` +- `工号` +- `密码` +- `角色` + +**后台处理/外部接口** +- `存储过程:人员管理_角色信息初始化查询_查询` +- `存储过程:登录基础数据_人员信息_切换是否用户` +- `存储过程:人员管理_人员信息查询_查询` +- `存储过程:人员管理_人员信息修改_编辑` +- `存储过程:人员管理_人员信息修改_删除` +- `存储过程:人员管理_人员信息新增_新增` +- `存储过程:WEB_摄像头查看权限_查询` +- `存储过程:WEB_登录基础数据_人员信息_重置密码` +- `存储过程:WEB_人员设备查看权限_查询` +- `存储过程:WEB_人员设备查看权限_权限切换` +- `存储过程:WEB_人员摄像头查看权限_权限切换` + +**操作注意事项** +- 系统维护类数据会影响登录、权限、菜单和业务可选项,修改后需要验证。 + +### 21.66 系统角色维护 + +页面路径:`src/views/SystemMaintenance/SystemRrolemaintenance/index.vue` +所属模块:系统维护 +建议使用人员:系统管理员/相关用户 + +页面用途:该页面用于维护系统角色和角色权限。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 在查询区按需要填写筛选条件:`RoleFunctioning`、`角色功能`。 +3. 点击 `查询` 刷新列表;状态按钮会切换任务范围。 +4. 列表较多时使用分页区切换页码或调整每页条数,避免只检查第一页。 +5. 查询后先核对关键列:`角色功能`、`编辑`。 +6. 需要新增时点击 `新增`,在弹窗中逐项填写必填字段,确认编码、名称、状态等基础信息后保存。 +7. 需要维护已有记录时先选中目标行,再点击或触发表格内 `编辑`,修改字段后保存并等待成功提示。 +8. 需要删除时先确认该记录没有正在使用的业务数据,再点击 `删除`,按确认提示执行。 +9. 需要维护已有记录时先选中目标行,再点击或触发表格内 `确 定`,修改字段后保存并等待成功提示。 +10. 需要维护已有记录时先选中目标行,再点击或触发表格内 `确 定`,修改字段后保存并等待成功提示。 +11. 出现弹窗时按弹窗标题处理:`新增角色`、`编辑角色`;弹窗关闭前确认必填项已保存。 +12. 弹窗或表单内重点填写:`角色功能`、`角色名称`,提交前逐项核对。 +13. 保存或提交成功后重新点击查询,确认页面数据已通过 `菜单系统模块_项目角色_查询数据_MESWORK`、`菜单系统模块_项目角色_修改数据_MESWORK`、`菜单系统模块_项目角色_增加_MESWORK`、`菜单系统模块_项目角色_删除_MESWORK` 等后台过程更新。 +14. 权限类修改保存后,需要让相关用户重新登录或刷新权限,再验证菜单、按钮和数据范围是否生效。 + +**查询条件/输入项** +- `RoleFunctioning` +- `角色功能` + +**结果表重点列** +- `角色功能` +- `编辑` + +**页面按钮/状态/页签** +- `查询` +- `新增` +- `编辑` +- `删除` +- `确 定` +- `取消` + +**弹窗/表单重点项** +- `新增角色` +- `编辑角色` +- `角色功能` +- `角色名称` + +**后台处理/外部接口** +- `存储过程:菜单系统模块_项目角色_查询数据_MESWORK` +- `存储过程:菜单系统模块_项目角色_修改数据_MESWORK` +- `存储过程:菜单系统模块_项目角色_增加_MESWORK` +- `存储过程:菜单系统模块_项目角色_删除_MESWORK` + +**操作注意事项** +- 系统维护类数据会影响登录、权限、菜单和业务可选项,修改后需要验证。 + +### 21.67 工位管理 + +页面路径:`src/views/SystemMaintenance/WorkstationManagement/index.vue` +所属模块:系统维护 +建议使用人员:系统管理员/相关用户 + +页面用途:该页面用于维护工位/资源主数据,并同步 SAP B1 Resources。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 在查询区按需要填写筛选条件:`RoleFunctioning`、`工位名称`、`工位号`。 +3. 点击 `查询` 刷新列表;状态按钮会切换任务范围。 +4. 列表较多时使用分页区切换页码或调整每页条数,避免只检查第一页。 +5. 查询后先核对关键列:`工位名称`、`工位号`、`编辑`。 +6. 需要新增时点击 `新增`,在弹窗中逐项填写必填字段,确认编码、名称、状态等基础信息后保存。 +7. 需要维护已有记录时先选中目标行,再点击或触发表格内 `编辑`,修改字段后保存并等待成功提示。 +8. 需要删除时先确认该记录没有正在使用的业务数据,再点击 `删除`,按确认提示执行。 +9. 需要维护已有记录时先选中目标行,再点击或触发表格内 `确 定`,修改字段后保存并等待成功提示。 +10. 需要维护已有记录时先选中目标行,再点击或触发表格内 `确 定`,修改字段后保存并等待成功提示。 +11. 出现弹窗时按弹窗标题处理:`新增工位`、`编辑工位`;弹窗关闭前确认必填项已保存。 +12. 弹窗或表单内重点填写:`工位名称`、`工位号`,提交前逐项核对。 +13. 保存或提交成功后重新点击查询,确认页面数据已通过 `MES_登录_工位与名称_查询`、`系统管理_工位管理_工位信息修改`、`系统管理_工位管理_工位信息增加`、`系统管理_工位管理_工位信息删除` 等后台过程更新。 +14. 涉及 SAP/WMS 接口时,必须查看页面成功或失败提示;失败时先记录错误信息,不要连续重复提交同一单据。 +15. 工位新增或修改会影响 SAP 资源、派工、报工和看板,保存后要用排产或生产执行页面验证工位是否可选。 + +**查询条件/输入项** +- `RoleFunctioning` +- `工位名称` +- `工位号` + +**结果表重点列** +- `工位名称` +- `工位号` +- `编辑` + +**页面按钮/状态/页签** +- `查询` +- `新增` +- `编辑` +- `删除` +- `确 定` +- `取消` + +**弹窗/表单重点项** +- `新增工位` +- `编辑工位` +- `工位名称` +- `工位号` + +**后台处理/外部接口** +- `存储过程:MES_登录_工位与名称_查询` +- `存储过程:系统管理_工位管理_工位信息修改` +- `存储过程:系统管理_工位管理_工位信息增加` +- `存储过程:系统管理_工位管理_工位信息删除` +- `接口:patchB1 /Resources('` +- `接口:postB1 /Resources` + +**操作注意事项** +- 系统维护类数据会影响登录、权限、菜单和业务可选项,修改后需要验证。 +- 该页存在 SAP/WMS 调用,失败时应记录返回提示并确认是否已经生成外部单据。 + +## 21-11 首页与看板 + +### 21.68 首页看板 + +页面路径:`src/views/dashboard/index.vue` +所属模块:首页与看板 +建议使用人员:系统管理员/相关用户 + +页面用途:该页面是系统首页/看板入口,用户登录后查看系统概览或进入各业务模块。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 该页没有识别到固定查询区,按页面提示直接查看信息或使用菜单/按钮进入下一步。 + +**查询条件/输入项** +- 未识别到固定输入项,按现场页面提示操作。 + +**结果表重点列** +- 未识别到固定表格列,以页面实际显示为准。 + +**页面按钮/状态/页签** +- 未识别到明确按钮,以页面实际显示为准。 + +**弹窗/表单重点项** +- 未识别到固定弹窗或表单项。 + +**后台处理/外部接口** +- 未发现页面级后台提交动作。 + +**操作注意事项** +- 操作后建议重新查询页面,确认列表、状态和明细已经刷新。 + +## 21-12 布局与导航 + +### 21.69 内容区域 + +页面路径:`src/views/layout/components/AppMain.vue` +所属模块:布局与导航 +建议使用人员:系统管理员/相关用户 + +页面用途:该文件属于系统布局和导航组件,用户通过它切换菜单、标签页、折叠菜单或退出登录,不维护具体业务单据。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 该页没有识别到固定查询区,按页面提示直接查看信息或使用菜单/按钮进入下一步。 + +**查询条件/输入项** +- 未识别到固定输入项,按现场页面提示操作。 + +**结果表重点列** +- 未识别到固定表格列,以页面实际显示为准。 + +**页面按钮/状态/页签** +- 未识别到明确按钮,以页面实际显示为准。 + +**弹窗/表单重点项** +- 未识别到固定弹窗或表单项。 + +**后台处理/外部接口** +- 未发现页面级后台提交动作。 + +**操作注意事项** +- 操作后建议重新查询页面,确认列表、状态和明细已经刷新。 + +### 21.70 布局组件索引 + +页面路径:`src/views/layout/components/index.js` +所属模块:布局与导航 +建议使用人员:系统管理员/相关用户 + +页面用途:该文件属于系统布局和导航组件,用户通过它切换菜单、标签页、折叠菜单或退出登录,不维护具体业务单据。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 该页没有识别到固定查询区,按页面提示直接查看信息或使用菜单/按钮进入下一步。 + +**查询条件/输入项** +- 未识别到固定输入项,按现场页面提示操作。 + +**结果表重点列** +- 未识别到固定表格列,以页面实际显示为准。 + +**页面按钮/状态/页签** +- 未识别到明确按钮,以页面实际显示为准。 + +**弹窗/表单重点项** +- 未识别到固定弹窗或表单项。 + +**后台处理/外部接口** +- 未发现页面级后台提交动作。 + +**操作注意事项** +- 操作后建议重新查询页面,确认列表、状态和明细已经刷新。 + +### 21.71 顶部导航 + +页面路径:`src/views/layout/components/Navbar.vue` +所属模块:布局与导航 +建议使用人员:系统管理员/相关用户 + +页面用途:该文件属于系统布局和导航组件,用户通过它切换菜单、标签页、折叠菜单或退出登录,不维护具体业务单据。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 在查询区按需要填写筛选条件:`Personnel_Number`、`userId`、`旧密码`、`新密码1`、`新密码2`、`oldPassword`、`newPassword1`、`newPassword2`。 +3. 点击页面上的查询或刷新类按钮获取最新数据;如果页面自动加载,则先核对默认列表是否符合当前业务范围。 +4. 按业务需要点击 `Log Off`,操作前先确认选中行和输入内容。 +5. 按业务需要点击 `取 消`,操作前先确认选中行和输入内容。 +6. 按业务需要点击 `提 交`,操作前先确认选中行和输入内容。 +7. 出现弹窗时按弹窗标题处理:`修改密码`;弹窗关闭前确认必填项已保存。 +8. 弹窗或表单内重点填写:`旧密码`、`新密码`、`确认密码`,提交前逐项核对。 +9. 保存或提交成功后重新点击查询,确认页面数据已通过 `登录基础数据_人员信息_登陆检查密码`、`登录基础数据_人员信息_修改密码`、`WEB_报警查询_未读报警记录_查询`、`WEB_报警查询_未读报警记录_未读条数查询` 等后台过程更新。 + +**查询条件/输入项** +- `Personnel_Number` +- `userId` +- `旧密码` +- `新密码1` +- `新密码2` +- `oldPassword` +- `newPassword1` +- `newPassword2` + +**结果表重点列** +- 未识别到固定表格列,以页面实际显示为准。 + +**页面按钮/状态/页签** +- `Log Off` +- `取 消` +- `提 交` + +**弹窗/表单重点项** +- `修改密码` +- `旧密码` +- `新密码` +- `确认密码` + +**后台处理/外部接口** +- `存储过程:登录基础数据_人员信息_登陆检查密码` +- `存储过程:登录基础数据_人员信息_修改密码` +- `存储过程:WEB_报警查询_未读报警记录_查询` +- `存储过程:WEB_报警查询_未读报警记录_未读条数查询` + +**操作注意事项** +- 操作后建议重新查询页面,确认列表、状态和明细已经刷新。 + +### 21.72 侧边栏 + +页面路径:`src/views/layout/components/Sidebar/index.vue` +所属模块:布局与导航 +建议使用人员:系统管理员/相关用户 + +页面用途:该文件属于系统布局和导航组件,用户通过它切换菜单、标签页、折叠菜单或退出登录,不维护具体业务单据。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 该页没有识别到固定查询区,按页面提示直接查看信息或使用菜单/按钮进入下一步。 + +**查询条件/输入项** +- 未识别到固定输入项,按现场页面提示操作。 + +**结果表重点列** +- 未识别到固定表格列,以页面实际显示为准。 + +**页面按钮/状态/页签** +- 未识别到明确按钮,以页面实际显示为准。 + +**弹窗/表单重点项** +- 未识别到固定弹窗或表单项。 + +**后台处理/外部接口** +- 未发现页面级后台提交动作。 + +**操作注意事项** +- 操作后建议重新查询页面,确认列表、状态和明细已经刷新。 + +### 21.73 侧边栏菜单项 + +页面路径:`src/views/layout/components/Sidebar/Item.vue` +所属模块:布局与导航 +建议使用人员:系统管理员/相关用户 + +页面用途:该文件属于系统布局和导航组件,用户通过它切换菜单、标签页、折叠菜单或退出登录,不维护具体业务单据。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 该页没有识别到固定查询区,按页面提示直接查看信息或使用菜单/按钮进入下一步。 + +**查询条件/输入项** +- 未识别到固定输入项,按现场页面提示操作。 + +**结果表重点列** +- 未识别到固定表格列,以页面实际显示为准。 + +**页面按钮/状态/页签** +- 未识别到明确按钮,以页面实际显示为准。 + +**弹窗/表单重点项** +- 未识别到固定弹窗或表单项。 + +**后台处理/外部接口** +- 未发现页面级后台提交动作。 + +**操作注意事项** +- 操作后建议重新查询页面,确认列表、状态和明细已经刷新。 + +### 21.74 侧边栏菜单节点 + +页面路径:`src/views/layout/components/Sidebar/SidebarItem.vue` +所属模块:布局与导航 +建议使用人员:系统管理员/相关用户 + +页面用途:该文件属于系统布局和导航组件,用户通过它切换菜单、标签页、折叠菜单或退出登录,不维护具体业务单据。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 该页没有识别到固定查询区,按页面提示直接查看信息或使用菜单/按钮进入下一步。 + +**查询条件/输入项** +- 未识别到固定输入项,按现场页面提示操作。 + +**结果表重点列** +- 未识别到固定表格列,以页面实际显示为准。 + +**页面按钮/状态/页签** +- 未识别到明确按钮,以页面实际显示为准。 + +**弹窗/表单重点项** +- 未识别到固定弹窗或表单项。 + +**后台处理/外部接口** +- 未发现页面级后台提交动作。 + +**操作注意事项** +- 操作后建议重新查询页面,确认列表、状态和明细已经刷新。 + +### 21.75 标签页导航 + +页面路径:`src/views/layout/components/TagsView.vue` +所属模块:布局与导航 +建议使用人员:系统管理员/相关用户 + +页面用途:该文件属于系统布局和导航组件,用户通过它切换菜单、标签页、折叠菜单或退出登录,不维护具体业务单据。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 该页没有识别到固定查询区,按页面提示直接查看信息或使用菜单/按钮进入下一步。 + +**查询条件/输入项** +- 未识别到固定输入项,按现场页面提示操作。 + +**结果表重点列** +- 未识别到固定表格列,以页面实际显示为准。 + +**页面按钮/状态/页签** +- 未识别到明确按钮,以页面实际显示为准。 + +**弹窗/表单重点项** +- 未识别到固定弹窗或表单项。 + +**后台处理/外部接口** +- 未发现页面级后台提交动作。 + +**操作注意事项** +- 操作后建议重新查询页面,确认列表、状态和明细已经刷新。 + +### 21.76 系统布局 + +页面路径:`src/views/layout/Layout.vue` +所属模块:布局与导航 +建议使用人员:系统管理员/相关用户 + +页面用途:该文件属于系统布局和导航组件,用户通过它切换菜单、标签页、折叠菜单或退出登录,不维护具体业务单据。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 该页没有识别到固定查询区,按页面提示直接查看信息或使用菜单/按钮进入下一步。 + +**查询条件/输入项** +- 未识别到固定输入项,按现场页面提示操作。 + +**结果表重点列** +- 未识别到固定表格列,以页面实际显示为准。 + +**页面按钮/状态/页签** +- 未识别到明确按钮,以页面实际显示为准。 + +**弹窗/表单重点项** +- 未识别到固定弹窗或表单项。 + +**后台处理/外部接口** +- 未发现页面级后台提交动作。 + +**操作注意事项** +- 操作后建议重新查询页面,确认列表、状态和明细已经刷新。 + +### 21.77 窗口自适应 + +页面路径:`src/views/layout/mixin/ResizeHandler.js` +所属模块:布局与导航 +建议使用人员:系统管理员/相关用户 + +页面用途:该文件属于系统布局和导航组件,用户通过它切换菜单、标签页、折叠菜单或退出登录,不维护具体业务单据。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 该页没有识别到固定查询区,按页面提示直接查看信息或使用菜单/按钮进入下一步。 + +**查询条件/输入项** +- 未识别到固定输入项,按现场页面提示操作。 + +**结果表重点列** +- 未识别到固定表格列,以页面实际显示为准。 + +**页面按钮/状态/页签** +- 未识别到明确按钮,以页面实际显示为准。 + +**弹窗/表单重点项** +- 未识别到固定弹窗或表单项。 + +**后台处理/外部接口** +- 未发现页面级后台提交动作。 + +**操作注意事项** +- 操作后建议重新查询页面,确认列表、状态和明细已经刷新。 + +## 21-13 登录 + +### 21.78 系统登录 + +页面路径:`src/views/login/index.vue` +所属模块:登录 +建议使用人员:系统管理员/相关用户 + +页面用途:该页面是系统登录入口,用户输入工号、密码并选择角色后进入 MES;同时提供修改密码功能。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 在查询区按需要填写筛选条件:`username`、`password`、`checked`、`Account`、`beforPassword`、`newPassword`、`againPassword`、`用户名`、`密码`。 +3. 点击页面上的查询或刷新类按钮获取最新数据;如果页面自动加载,则先核对默认列表是否符合当前业务范围。 +4. 查询后先核对关键列:`角色名称`。 +5. 需要维护已有记录时先选中目标行,再点击或触发表格内 `修改密码`,修改字段后保存并等待成功提示。 +6. 按业务需要点击 `登录`,操作前先确认选中行和输入内容。 +7. 需要维护已有记录时先选中目标行,再点击或触发表格内 `确定`,修改字段后保存并等待成功提示。 +8. 需要维护已有记录时先选中目标行,再点击或触发表格内 `确定`,修改字段后保存并等待成功提示。 +9. 出现弹窗时按弹窗标题处理:`请选择登录角色`、`修改密码`;弹窗关闭前确认必填项已保存。 +10. 弹窗或表单内重点填写:`工号`、`原始密码`、`新密码`、`确认密码`,提交前逐项核对。 + +**查询条件/输入项** +- `username` +- `password` +- `checked` +- `Account` +- `beforPassword` +- `newPassword` +- `againPassword` +- `用户名` +- `密码` + +**结果表重点列** +- `角色名称` + +**页面按钮/状态/页签** +- `修改密码` +- `登录` +- `取消` +- `确定` + +**弹窗/表单重点项** +- `请选择登录角色` +- `修改密码` +- `工号` +- `原始密码` +- `新密码` +- `确认密码` + +**后台处理/外部接口** +- 未发现页面级后台提交动作。 + +**操作注意事项** +- 操作后建议重新查询页面,确认列表、状态和明细已经刷新。 diff --git a/tools/rename_manual_chapter21_titles.js b/tools/rename_manual_chapter21_titles.js new file mode 100644 index 0000000..57d9a9f --- /dev/null +++ b/tools/rename_manual_chapter21_titles.js @@ -0,0 +1,101 @@ +const fs = require('fs'); +const path = require('path'); + +const file = path.join(process.cwd(), 'MES_Manage_View_V20', '元利项目详细用户使用说明书.md'); +const text = fs.readFileSync(file, 'utf8'); + +const names = { + '404.vue': '404 页面', + PunctualWork: '及时开工异常', + CraftMaintain: '产品结构维护', + Devicedata: '设备采集数据', + DeviceDataHistory: '设备历史数据', + DeviceInformation: '设备信息维护', + DeviceRealData: '设备实时数据', + InstallMakePlan: '装配排产', + InstallMakePlanDo: '装配已排产', + PlannOrderClose: '生产订单关闭', + PlanShell: '计划外壳跟踪', + priorityinstall: '装配优先级调整', + SelfMakePlan: '机加排产', + SelfMakePlando: '机加待排产', + SelfMakePlandone: '机加已排产', + PartDrawing: '零件图纸维护', + PartDrawlook: '零件图纸查看', + ProcedureManagement: '工序维护', + ProcessDrawing: '工艺图纸维护', + ProcessesDevelop: '工艺开发', + ProcessInquiry: '工艺查询', + ProcessProduct: '生产工艺维护', + ProcurementDrawlook: '采购图纸查看', + ProductionOrder: '生产订单', + AbnormalControl: '异常管控', + AssemblePlanTrack: '装配计划跟踪', + AssembleStatus: '装配状态', + AssembleTaskManage: '装配任务管理', + AssembleTasksSum: '装配任务汇总', + AssemblyCenter: '装配中心', + DeviceStatus: '设备状态', + MachiningCenter: '机加中心', + OutsourceMange: '外协管理', + OutsourceSheet: '外协报表', + PersonnelBinding: '人员绑定', + PickingTask: '拣配任务', + ProductionPlanTrack: '生产计划跟踪', + ProductionTaskManage: '生产任务管理', + ProductionTasksSum: '生产任务汇总', + SaleOutsourceMange: '销售外协管理', + ShiftManagement: '班次管理', + Timesheet: '工时报表', + Urgent: '加急任务', + Workhours: '工时查询', + 'index - 副本.vue': '工时校验(副本)', + WorkHoursCheck: '工时校验', + WorkhoursEdit: '工时编辑', + 'final.vue': '终检', + 'firstSpecial.vue': '首检', + 'materialReturn.vue': '原材料退库检', + 'OtherInbound.vue': '其他入库检', + 'processReceive.vue': '序检收检', + 'processSpecial.vue': '过程特殊检验', + 'purchaseIncoming.vue': '采购入库检', + 'salesReturn.vue': '销售退货检', + QualityCenter: '质量中心', + QualityDetails: '质检明细', + 'index copy.vue': '质量标准查询(副本)', + QualityStandardQuery: '质量标准查询', + Unqualified: '不合格品处理', + saleorderstatus: '销售订单状态', + MenuManagement: '菜单管理', + OperationLog: '操作日志', + OrgManagement: '组织管理', + PersonnelManagement: '人员管理', + SystemRrolemaintenance: '系统角色维护', + WorkstationManagement: '工位管理', + dashboard: '首页看板', + 'AppMain.vue': '内容区域', + 'index.js': '布局组件索引', + 'Navbar.vue': '顶部导航', + Sidebar: '侧边栏', + 'Item.vue': '侧边栏菜单项', + 'SidebarItem.vue': '侧边栏菜单节点', + 'TagsView.vue': '标签页导航', + 'Layout.vue': '系统布局', + 'ResizeHandler.js': '窗口自适应', + login: '系统登录' +}; + +const updated = text.replace(/^### (21\.\d+) (.+)$/gm, (match, num, oldName) => { + const nextName = names[oldName.trim()]; + return nextName ? `### ${num} ${nextName}` : match; +}); + +fs.writeFileSync(file, updated, 'utf8'); + +const missing = [...text.matchAll(/^### (21\.\d+) (.+)$/gm)] + .map(m => m[2].trim()) + .filter(name => !names[name]); +if (missing.length) { + console.log(`missing mappings: ${[...new Set(missing)].join(', ')}`); +} +console.log('chapter 21 titles renamed'); diff --git a/tools/rewrite_user_manual_pages.js b/tools/rewrite_user_manual_pages.js new file mode 100644 index 0000000..deb0146 --- /dev/null +++ b/tools/rewrite_user_manual_pages.js @@ -0,0 +1,573 @@ +const fs = require('fs'); +const path = require('path'); + +const repoRoot = process.cwd(); +const projectRoot = path.join(repoRoot, 'MES_Manage_View_V20'); +const viewsRoot = path.join(projectRoot, 'src', 'views'); +const manualPath = path.join(projectRoot, '元利项目详细用户使用说明书.md'); + +function readText(file) { + const buf = fs.readFileSync(file); + if (buf.length >= 3 && buf[0] === 0xef && buf[1] === 0xbb && buf[2] === 0xbf) { + return buf.slice(3).toString('utf8'); + } + if (buf.length >= 2 && buf[0] === 0xff && buf[1] === 0xfe) { + return buf.slice(2).toString('utf16le'); + } + return buf.toString('utf8'); +} + +function writeText(file, text) { + fs.writeFileSync(file, text, 'utf8'); +} + +function walk(dir, out = []) { + if (!fs.existsSync(dir)) return out; + for (const entry of fs.readdirSync(dir, { withFileTypes: true })) { + const full = path.join(dir, entry.name); + if (entry.isDirectory()) walk(full, out); + else if (/\.(vue|js)$/i.test(entry.name)) out.push(full); + } + return out; +} + +function rel(file) { + return path.relative(projectRoot, file).replace(/\\/g, '/'); +} + +function clean(value) { + return (value || '') + .replace(//g, ' ') + .replace(/<[^>]+>/g, ' ') + .replace(/\{\{[\s\S]*?\}\}/g, ' ') + .replace(/ /g, ' ') + .replace(/\s+/g, ' ') + .trim(); +} + +function uniq(values) { + const seen = new Set(); + const out = []; + for (const value of values) { + const v = String(value || '').trim(); + if (!v || seen.has(v)) continue; + seen.add(v); + out.push(v); + } + return out; +} + +function stripNoise(values) { + return uniq(values) + .filter(x => x.length <= 42) + .filter(x => !/[{};]/.test(x)) + .filter(x => !/^(scope|row|item|index|true|false|null|undefined)$/i.test(x)) + .filter(x => !/^\d+$/.test(x)); +} + +function extractAll(re, text, map) { + const out = []; + let match; + while ((match = re.exec(text))) out.push(map(match)); + return out; +} + +function attr(attrs, name) { + const m = new RegExp(`${name}="([^"]*)"`).exec(attrs); + return m ? clean(m[1]) : ''; +} + +function extractTemplate(text) { + const start = text.search(/]*>/i); + if (start < 0) return text; + const open = /]*>/i.exec(text.slice(start)); + if (!open) return text; + const contentStart = start + open.index + open[0].length; + const scriptStart = text.search(/= 0 ? scriptStart : text.length; + const close = text.lastIndexOf('', searchEnd); + if (close > contentStart) return text.slice(contentStart, close); + return text.slice(contentStart, searchEnd); +} + +function extractScript(text) { + const m = /]*>([\s\S]*?)<\/script>/i.exec(text); + return m ? m[1] : text; +} + +function extractPage(file) { + const text = readText(file); + const template = extractTemplate(text); + const script = extractScript(text); + const relative = rel(file); + const parts = relative.split('/'); + const module = parts[2] || '根页面'; + const name = path.basename(file) === 'index.vue' + ? parts[parts.length - 2] + : path.basename(file); + + const labels = extractAll(/\blabel="([^"]+)"/g, template, m => clean(m[1])); + const placeholders = extractAll(/\bplaceholder="([^"]+)"/g, template, m => clean(m[1])); + const titles = extractAll(/\btitle="([^"]+)"/g, template, m => clean(m[1])); + const formLabels = extractAll(/]*)>/g, template, m => attr(m[1], 'label')); + const tabLabels = extractAll(/]*)>/g, template, m => attr(m[1], 'label')); + const options = extractAll(/]*)>/g, template, m => attr(m[1], 'label')); + const buttons = extractAll(/]*)>([\s\S]*?)<\/el-button>/g, template, m => { + const textValue = clean(m[2]) || attr(m[1], 'title') || attr(m[1], 'aria-label'); + const click = attr(m[1], '@click') || attr(m[1], 'v-on:click'); + return textValue ? { text: textValue, click } : null; + }) + .filter(Boolean) + .filter(b => b.text.length <= 42) + .filter(b => !/[{};]/.test(b.text)); + const tableColumns = extractAll(/]*)>/g, template, m => { + const label = attr(m[1], 'label'); + const prop = attr(m[1], 'prop'); + const type = attr(m[1], 'type'); + return label || prop || type ? { label, prop, type } : null; + }).filter(Boolean); + const vModels = extractAll(/\bv-model(?:\.[\w-]+)?="([^"]+)"/g, template, m => clean(m[1])); + const params = extractAll(/\.(?:push|unshift)\s*\(\s*\[\s*['"]([^'"]+)['"]\s*,\s*([^\]\n]+)\]/g, script, m => ({ + name: clean(m[1]), + expr: clean(m[2]) + })); + const procs = extractAll(/CreateData\s*\(\s*['"]([^'"]+)['"]\s*,\s*['"]([^'"]+)['"]/g, script, m => ({ + type: m[1], + name: clean(m[2]) + })); + const sapCalls = extractAll(/\b(getB1|postB1|patchB1|posttm)\s*\(\s*([`'"])([\s\S]*?)\2/g, script, m => ({ + method: m[1], + url: clean(m[3]).slice(0, 90) + })); + const dialogs = extractAll(//g, template, m => { + const title = attr(m[1], 'title') || clean((/:title="([^"]+)"/.exec(m[1]) || [])[1]); + return title; + }); + const methods = extractAll(/^\s*([A-Za-z_$\u4e00-\u9fa5][\w$\u4e00-\u9fa5]*)\s*\([^)]*\)\s*\{/gm, script, m => m[1]); + const hasCalendar = /FullCalendar|@fullcalendar|eventDrop|eventResize/.test(text); + const hasPagination = /el-pagination|pageSize|pageCurrent/.test(text); + const hasUpload = /el-upload|上传|upload/i.test(text); + const hasTree = /el-tree|treeData|Tree/.test(text); + + return { + file, + relative, + module, + name, + text, + labels: stripNoise(labels), + placeholders: stripNoise(placeholders), + titles: stripNoise(titles), + formLabels: stripNoise(formLabels), + tabLabels: stripNoise(tabLabels), + options: stripNoise(options), + buttons, + tableColumns, + vModels: stripNoise(vModels), + params, + procs, + sapCalls, + dialogs: stripNoise(dialogs), + methods: stripNoise(methods), + hasCalendar, + hasPagination, + hasUpload, + hasTree + }; +} + +function roleFor(page) { + if (/SystemMaintenance|layout|login|dashboard|404/.test(page.relative)) return '系统管理员/相关用户'; + if (/QualityManagement/.test(page.relative)) return '质检员/质量主管'; + if (/PlanManagement/.test(page.relative)) return '计划员/生产主管'; + if (/ProductionManagement/.test(page.relative)) return '操作工/班组长/生产主管'; + if (/ProcessManagement|CraftManagement/.test(page.relative)) return '工艺员/技术人员'; + if (/DeviceManagement/.test(page.relative)) return '设备管理员/生产主管'; + if (/SaleManagement/.test(page.relative)) return '销售/计划/生产跟单人员'; + if (/AnomalousManagement/.test(page.relative)) return '班组长/生产主管/计划员'; + return '相关业务人员'; +} + +function moduleName(page) { + const map = { + AnomalousManagement: '异常管理', + CraftManagement: '产品结构维护', + DeviceManagement: '设备管理', + PlanManagement: '计划排产', + ProcessManagement: '工艺与图纸管理', + ProductionManagement: '生产执行管理', + QualityManagement: '质量管理', + SaleManagement: '销售与交付查询', + SystemMaintenance: '系统维护', + dashboard: '首页与看板', + layout: '布局与导航', + login: '登录', + }; + if (page.relative === 'src/views/404.vue') return '错误页'; + return map[page.module] || page.module; +} + +function purpose(page) { + const p = page.relative; + const rules = [ + [/404\.vue$/, '该页面用于路由不存在或无效地址访问时展示 404 提示,帮助用户返回首页或重新选择菜单。'], + [/login/, '该页面是系统登录入口,用户输入工号、密码并选择角色后进入 MES;同时提供修改密码功能。'], + [/dashboard/, '该页面是系统首页/看板入口,用户登录后查看系统概览或进入各业务模块。'], + [/PunctualWork/, '该页面用于查看未及时开工、待执行、可执行、已开工和已完成任务,帮助班组长或计划员催办生产开工。'], + [/CraftMaintain/, '该页面用于维护产品结构树,支持新增、编辑、删除产品结构节点,为工艺、BOM 和生产任务提供层级基础资料。'], + [/DeviceDataHistory/, '该页面用于查询设备历史采集数据,按工位、设备、参数和时间追溯设备运行记录。'], + [/DeviceInformation/, '该页面用于维护设备台账、设备属性、维修/工时/点检相关信息。'], + [/DeviceRealData|Devicedata/, '该页面用于查看设备实时数据或采集缓存数据,判断设备当前运行、报警和参数状态。'], + [/SelfMakePlandone[\\/]/, '该页面用于机加/自制件已排产任务查看和调整,支持计划时间、指派对象、指派数量、最晚开始、二次派工和备注维护。'], + [/SelfMakePlando[\\/]/, '该页面用于机加/自制件待排产任务处理,支持表单排产、日程拖拽调整、部分派工、批量排产、二次派工、原料状态和图纸查看。'], + [/SelfMakePlan[\\/]/, '该页面用于机加/自制件排产前准备,查询生产订单工序任务并维护计划、工位、数量和说明后确认排产。'], + [/InstallMakePlanDo|InstallMakePlan/, '该页面用于装配件排产,维护装配工位、人员、计划开始/完成、优先级、说明,并在排产完成时同步 SAP 或生成相关请求。'], + [/PlanShell/, '该页面用于计划外壳和计划跟踪,集中查看订单计划、齐套、缺料、发货或关闭相关信息。'], + [/PlannOrderClose/, '该页面用于关闭生产订单,用户查询待关闭订单后执行 MES/SAP 关闭动作。'], + [/priorityinstall/, '该页面用于装配计划优先级和日程调整,支持表单和日程方式查看重点任务。'], + [/ProductionOrder/, '该页面用于查询和同步生产订单,把 SAP/ERP 生产订单转成 MES 生产计划与工序任务。'], + [/PartDrawing/, '该页面用于维护零件图纸,支持按物料查询、查看、上传/验证和删除图纸。'], + [/PartDrawlook|ProcurementDrawlook/, '该页面用于按物料查看零件图纸,供生产、采购、外协或质检快速查阅技术文件。'], + [/ProcessDrawing/, '该页面用于维护工艺图纸,支持查询、查看、上传/验证和删除工艺图纸。'], + [/ProcedureManagement/, '该页面用于维护工序/路线阶段主数据,并与 SAP B1 RouteStages 保持一致。'], + [/ProcessInquiry/, '该页面用于查询标准工艺或生产工艺,供排产、生产、质检核对工序路线。'], + [/ProcessProduct|ProcessesDevelop/, '该页面用于维护产品工艺资料、工序路线、参数和图纸关系。'], + [/MachiningCenter/, '该页面是机加生产执行主界面,操作工按工位执行收料、开工、暂停、报工、检验、退库、发料和图纸查看。'], + [/AssemblyCenter/, '该页面是装配生产执行主界面,装配人员按工位执行开工、报工、送检、退库、缺料查询和图纸查看。'], + [/ProductionTaskManage|AssembleTaskManage/, '该页面用于生产/装配任务管理,查询任务、查看工时、维护派工和任务说明。'], + [/ProductionTasksSum|AssembleTasksSum/, '该页面用于生产/装配任务汇总,按订单、人员、工位、状态和时间统计任务执行情况。'], + [/ProductionPlanTrack|AssemblePlanTrack/, '该页面用于跟踪生产/装配计划执行进度,查看计划、完成、延期和异常情况。'], + [/AssembleStatus|DeviceStatus/, '该页面用于查看现场状态,关注工位、设备、任务是否开工、进行中或完成。'], + [/OutsourceMange|SaleOutsourceMange/, '该页面用于外协任务管理,处理外协派工、供应商、发料、收料、质检记录和 SAP 采购请求。'], + [/OutsourceSheet/, '该页面用于外协报表查询和导出,跟踪外协订单、供应商、数量、质检和结算状态。'], + [/PickingTask/, '该页面用于生产领料/拣配任务查询与处理,核对订单物料和库存任务。'], + [/PersonnelBinding/, '该页面用于维护人员与工位绑定关系,控制或提示人员可操作的工位。'], + [/ShiftManagement/, '该页面用于维护班次、班次人员和排班基础数据。'], + [/Timesheet|Workhours$/, '该页面用于查询工时记录,按人员、设备、任务、订单和日期统计工时。'], + [/WorkhoursEdit/, '该页面用于修正或补录工时/报工记录,处理异常工时。'], + [/WorkHoursCheck/, '该页面用于工时校验和 SAP 提交,用户核对报工记录后批量或单条校验并上传相关单据。'], + [/Urgent/, '该页面用于维护加急任务,跟踪加急订单、加急数量和完成情况。'], + [/AbnormalControl/, '该页面用于生产异常管理,查询异常、处理异常、转办、查看进度和关闭异常。'], + [/QualityCenter/, '该页面是质量综合处理中心,集中处理待检、收检、检测明细、不合格和 SAP/WMS 联动。'], + [/QualityDetails/, '该页面用于查询质检明细,按订单、物料、检验类型和时间追溯检测记录。'], + [/QualityStandardQuery/, '该页面用于查询或维护质量检验标准、检测项目、上下限和启用状态。'], + [/Unqualified/, '该页面用于不合格品处理,记录处置方式、责任、原因和处理结果。'], + [/CheckTask[\\/].*purchaseIncoming/, '该页面用于采购/来料检验,质检人员录入来料检验数量、合格数、不合格数和检测明细。'], + [/CheckTask[\\/].*processReceive/, '该页面用于工序收检/序检收检,质检人员接收工序检验任务并录入检验结果。'], + [/CheckTask[\\/].*firstSpecial/, '该页面用于首检或特殊首件检验,录入首件检测结果。'], + [/CheckTask[\\/].*final/, '该页面用于终检任务处理,录入最终检验结果。'], + [/CheckTask[\\/].*materialReturn/, '该页面用于材料退库检验,核对退库物料并录入检验结论。'], + [/CheckTask[\\/].*salesReturn/, '该页面用于销售退货检验,录入退货质检结果。'], + [/CheckTask[\\/].*OtherInbound/, '该页面用于其他入库检验,录入其他入库质检结果。'], + [/CheckTask[\\/].*processSpecial/, '该页面用于过程特殊检验,录入特殊检验项目和结果。'], + [/saleorderstatus/, '该页面用于查询销售订单状态,跟踪销售订单在生产、交付和关闭过程中的状态。'], + [/MenuManagement/, '该页面用于维护系统菜单、按钮权限和路由配置。'], + [/OperationLog/, '该页面用于查询操作日志,追溯用户操作、报工或业务变更记录。'], + [/OrgManagement/, '该页面用于维护组织、部门或组织树基础资料。'], + [/PersonnelManagement/, '该页面用于维护人员账号、部门、角色和启用状态。'], + [/SystemRrolemaintenance/, '该页面用于维护系统角色和角色权限。'], + [/WorkstationManagement/, '该页面用于维护工位/资源主数据,并同步 SAP B1 Resources。'], + [/layout|Sidebar|Navbar|TagsView|AppMain|ResizeHandler/, '该文件属于系统布局和导航组件,用户通过它切换菜单、标签页、折叠菜单或退出登录,不维护具体业务单据。'], + ]; + const found = rules.find(([re]) => re.test(p)); + if (found) return found[1]; + return '该页面为业务页面,用户按查询条件筛选数据,在列表或弹窗中查看明细,并按页面按钮完成维护、提交或状态更新。'; +} + +function actionVerb(button) { + const text = button.text; + if (/查询|搜索|全部|待执行|可执行|已开工|已完成|未完成/.test(text)) return '查询/筛选'; + if (/新增|添加|新建|创建/.test(text)) return '新增'; + if (/编辑|修改|保存|确定|确 定/.test(text)) return '编辑/保存'; + if (/删除|移除/.test(text)) return '删除'; + if (/导出|打印/.test(text)) return '导出/打印'; + if (/查看|详情|图纸|明细|进度/.test(text)) return '查看'; + if (/排产|派工|开工|报工|送检|收料|发料|退库|关闭|提交|处理|转办|完结|校验|上传/.test(text)) return '业务提交'; + if (/取消|关闭|返回/.test(text)) return '取消/关闭'; + return '操作'; +} + +function fieldName(value) { + return value + .replace(/^.*\./, '') + .replace(/\[[^\]]+\]/g, '') + .replace(/Form$/, '') + .replace(/Time$/, '时间') + .replace(/No$/, '编号'); +} + +function queryItems(page) { + const fromParams = page.params + .filter(p => !/任务列表|操作人|最后编辑人|editstr|personnel|TaskAID/.test(p.name)) + .map(p => p.name); + const fromModels = page.vModels + .filter(v => !/^scope\.row|^item\.|^row\.|multipleSelection|loading|dialog|Visible|activeTab/.test(v)) + .map(fieldName); + const fromPlaceholders = page.placeholders + .map(x => x.replace(/^请输入/, '').replace(/^请选择/, '').replace(/起始|结束/g, '').trim()) + .filter(Boolean); + return stripNoise([...fromParams, ...fromModels, ...fromPlaceholders]).slice(0, 22); +} + +function tableItems(page) { + return stripNoise(page.tableColumns.map(c => c.label || c.prop || c.type)).slice(0, 34); +} + +function buttonItems(page) { + return stripNoise(page.buttons.map(b => b.text)).slice(0, 30); +} + +function procItems(page) { + return uniq(page.procs.map(p => p.name)).slice(0, 20); +} + +function sapItems(page) { + return uniq(page.sapCalls.map(s => `${s.method} ${s.url}`)).slice(0, 12); +} + +function lineList(values, fallback) { + if (!values.length) return `- ${fallback}`; + return values.map(v => `- \`${v}\``).join('\n'); +} + +function detailedSteps(page) { + const steps = []; + const queries = queryItems(page); + const tabs = page.tabLabels; + const columns = tableItems(page); + const buttons = page.buttons.slice(0, 24); + const dialogs = page.dialogs; + const forms = page.formLabels; + const procs = procItems(page); + const pathText = page.relative; + + steps.push(`从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。`); + if (tabs.length) { + steps.push(`先查看页签:${tabs.map(x => `\`${x}\``).join('、')};需要表格处理时进入表单/列表页签,需要看时间排布时进入日程/看板页签。`); + } + if (queries.length) { + steps.push(`在查询区按需要填写筛选条件:${queries.slice(0, 12).map(x => `\`${x}\``).join('、')}。`); + if (queries.length > 12) steps.push(`如果仍查不到数据,继续补充条件:${queries.slice(12, 22).map(x => `\`${x}\``).join('、')},或清空过窄条件后重新查询。`); + } else { + steps.push(`该页没有识别到固定查询区,按页面提示直接查看信息或使用菜单/按钮进入下一步。`); + } + const queryButtons = buttons.filter(b => actionVerb(b) === '查询/筛选'); + if (queryButtons.length) { + steps.push(`点击 ${stripNoise(queryButtons.map(b => b.text)).slice(0, 8).map(x => `\`${x}\``).join('、')} 刷新列表;状态按钮会切换任务范围。`); + } else if (buttons.length) { + steps.push(`点击页面上的查询或刷新类按钮获取最新数据;如果页面自动加载,则先核对默认列表是否符合当前业务范围。`); + } + if (page.hasPagination) { + steps.push(`列表较多时使用分页区切换页码或调整每页条数,避免只检查第一页。`); + } + if (columns.length) { + steps.push(`查询后先核对关键列:${columns.slice(0, 12).map(x => `\`${x}\``).join('、')}。`); + if (columns.length > 12) steps.push(`继续横向滚动或展开表格,核对:${columns.slice(12, 26).map(x => `\`${x}\``).join('、')}。`); + } + if (page.hasTree) { + steps.push(`如果页面左侧或上方有树形结构,先选中组织、物料、菜单或产品节点,再查看右侧列表;新增子节点前确认父节点选中正确。`); + } + const nonQueryButtons = buttons.filter(b => !['查询/筛选', '取消/关闭'].includes(actionVerb(b))); + for (const button of nonQueryButtons.slice(0, 10)) { + const verb = actionVerb(button); + if (verb === '新增') steps.push(`需要新增时点击 \`${button.text}\`,在弹窗中逐项填写必填字段,确认编码、名称、状态等基础信息后保存。`); + else if (verb === '编辑/保存') steps.push(`需要维护已有记录时先选中目标行,再点击或触发表格内 \`${button.text}\`,修改字段后保存并等待成功提示。`); + else if (verb === '删除') steps.push(`需要删除时先确认该记录没有正在使用的业务数据,再点击 \`${button.text}\`,按确认提示执行。`); + else if (verb === '导出/打印') steps.push(`需要留存或流转时点击 \`${button.text}\`,导出/打印前确认当前查询条件和选中记录正确。`); + else if (verb === '查看') steps.push(`需要查看明细时点击 \`${button.text}\`,在弹窗或新区域核对图纸、明细、进度、记录或关联单据。`); + else if (verb === '业务提交') steps.push(`需要推进业务时先选中目标行并核对数量、时间、人员、工位、物料和备注,再点击 \`${button.text}\` 提交。`); + else steps.push(`按业务需要点击 \`${button.text}\`,操作前先确认选中行和输入内容。`); + } + if (dialogs.length) { + steps.push(`出现弹窗时按弹窗标题处理:${dialogs.slice(0, 8).map(x => `\`${x}\``).join('、')};弹窗关闭前确认必填项已保存。`); + } + if (forms.length) { + steps.push(`弹窗或表单内重点填写:${forms.slice(0, 14).map(x => `\`${x}\``).join('、')},提交前逐项核对。`); + } + if (page.hasUpload) { + steps.push(`涉及上传时先选择正确文件,再点击上传/保存;上传后重新查询,确认文件名、版本、上传时间或预览内容已显示。`); + } + if (page.hasCalendar) { + steps.push(`进入日程页后,单击任务查看详情;拖拽任务可调整计划开始时间,拉伸任务可调整计划完成时间,系统提示确认后才会保存。`); + steps.push(`日程保存失败或取消时任务会恢复原日期;保存成功后回到表单页重新查询,核对计划开始和计划完成是否同步。`); + } + if (procs.length) { + steps.push(`保存或提交成功后重新点击查询,确认页面数据已通过 ${procs.slice(0, 5).map(x => `\`${x}\``).join('、')} 等后台过程更新。`); + } + if (page.sapCalls.length) { + steps.push(`涉及 SAP/WMS 接口时,必须查看页面成功或失败提示;失败时先记录错误信息,不要连续重复提交同一单据。`); + } + + if (/SelfMakePlando[\\/]/.test(pathText)) { + steps.push(`在 \`指派数量\` 中输入小于计划数的数量时,表示本次只派出部分数量,剩余数量需要继续跟踪和后续派工。`); + steps.push(`点击 \`批量排产\` 前应选择同一生产订单的多道工序,系统会按订单行号排序并继承上一道工序的部分计划信息。`); + steps.push(`点击 \`排产完成\` 后,系统校验指派对象、指派数量、计划开始、计划完成,并同步生产订单最早开始和最晚完成。`); + } + if (/SelfMakePlandone[\\/]/.test(pathText)) { + steps.push(`已排产列表中仍可调整指派对象、指派数量、计划开始、计划完成、外协分组、最晚开始和二次派工;调整后要重新查询确认。`); + } + if (/MachiningCenter|AssemblyCenter/.test(pathText)) { + steps.push(`现场执行类操作必须按实际顺序处理:先确认任务和工位,再收料/开工,完成加工或装配后再报工/送检。`); + } + if (/QualityManagement/.test(pathText)) { + steps.push(`录入检验结果时先核对检验类型、订单、物料、批次/工序,再填写合格数、不合格数和检测明细,避免检验记录挂错任务。`); + } + if (/WorkHoursCheck/.test(pathText)) { + steps.push(`工时校验前先比对 MES 报工、设备工时和 SAP 工序资源;只对核对无误的记录执行提交。`); + } + if (/WorkstationManagement/.test(pathText)) { + steps.push(`工位新增或修改会影响 SAP 资源、派工、报工和看板,保存后要用排产或生产执行页面验证工位是否可选。`); + } + if (/MenuManagement|SystemRrolemaintenance|PersonnelManagement/.test(pathText)) { + steps.push(`权限类修改保存后,需要让相关用户重新登录或刷新权限,再验证菜单、按钮和数据范围是否生效。`); + } + + return steps.map((s, i) => `${i + 1}. ${s}`).join('\n'); +} + +function notes(page) { + const values = []; + if (/PlanManagement/.test(page.relative)) values.push('排产、派工和计划时间会影响生产看板、及时开工统计和 SAP 生产订单日期,提交前必须核对。'); + if (/ProductionManagement/.test(page.relative)) values.push('生产执行页面的数据会直接影响报工、工时、质检和库存任务,现场操作必须与实际加工进度一致。'); + if (/QualityManagement/.test(page.relative)) values.push('质检结果保存后会影响合格入库、不合格处理和后续工序,提交前必须核对数量。'); + if (/ProcessManagement|CraftManagement/.test(page.relative)) values.push('工艺、图纸和结构资料会被排产、生产、质检引用,版本错误会直接影响现场执行。'); + if (/DeviceManagement/.test(page.relative)) values.push('设备和采集数据用于看板、OEE 和报工分析,发现异常时应先确认设备编码和采集点位。'); + if (/SystemMaintenance/.test(page.relative)) values.push('系统维护类数据会影响登录、权限、菜单和业务可选项,修改后需要验证。'); + if (page.sapCalls.length) values.push('该页存在 SAP/WMS 调用,失败时应记录返回提示并确认是否已经生成外部单据。'); + if (page.hasCalendar) values.push('日程拖拽属于直接改计划时间的操作,拖拽前应确认任务未被现场执行锁定。'); + if (!values.length) values.push('操作后建议重新查询页面,确认列表、状态和明细已经刷新。'); + return values.map(v => `- ${v}`).join('\n'); +} + +function section(page, index) { + const query = queryItems(page); + const columns = tableItems(page); + const buttons = buttonItems(page); + const procs = procItems(page); + const sap = sapItems(page); + + return `### 21.${index} ${page.name} + +页面路径:\`${page.relative}\` +所属模块:${moduleName(page)} +建议使用人员:${roleFor(page)} + +页面用途:${purpose(page)} + +**具体操作步骤** +${detailedSteps(page)} + +**查询条件/输入项** +${lineList(query, '未识别到固定输入项,按现场页面提示操作。')} + +**结果表重点列** +${lineList(columns, '未识别到固定表格列,以页面实际显示为准。')} + +**页面按钮/状态/页签** +${lineList([...buttons, ...page.tabLabels].slice(0, 36), '未识别到明确按钮,以页面实际显示为准。')} + +**弹窗/表单重点项** +${lineList([...page.dialogs, ...page.formLabels].slice(0, 30), '未识别到固定弹窗或表单项。')} + +**后台处理/外部接口** +${lineList([...procs.map(x => `存储过程:${x}`), ...sap.map(x => `接口:${x}`)].slice(0, 30), '未发现页面级后台提交动作。')} + +**操作注意事项** +${notes(page)} +`; +} + +function moduleOrder(page) { + const order = [ + '404.vue', + 'AnomalousManagement', + 'CraftManagement', + 'DeviceManagement', + 'PlanManagement', + 'ProcessManagement', + 'ProductionManagement', + 'QualityManagement', + 'SaleManagement', + 'SystemMaintenance', + 'dashboard', + 'layout', + 'login' + ]; + const key = page.relative === 'src/views/404.vue' ? '404.vue' : page.module; + const idx = order.indexOf(key); + return idx >= 0 ? idx : 99; +} + +function moduleHeading(page) { + const key = page.relative === 'src/views/404.vue' ? '404.vue' : page.module; + const headings = { + '404.vue': '错误页', + AnomalousManagement: '异常管理', + CraftManagement: '产品结构维护', + DeviceManagement: '设备管理', + PlanManagement: '计划排产', + ProcessManagement: '工艺与图纸管理', + ProductionManagement: '生产执行管理', + QualityManagement: '质量管理', + SaleManagement: '销售与交付查询', + SystemMaintenance: '系统维护', + dashboard: '首页与看板', + layout: '布局与导航', + login: '登录' + }; + return headings[key] || key; +} + +function buildChapter(pages) { + const sorted = pages.sort((a, b) => { + const m = moduleOrder(a) - moduleOrder(b); + if (m !== 0) return m; + return a.relative.localeCompare(b.relative, 'zh-Hans-CN'); + }); + + const lines = []; + lines.push('## 二十一、逐页详细操作说明(按 src/views 页面)'); + lines.push(''); + lines.push('本章按源码页面逐页编写。每个页面都从实际 `v-model`、表格列、按钮、弹窗、页签、存储过程和 SAP/WMS 调用中提取操作线索,转换成用户可执行的步骤。'); + lines.push(''); + lines.push('通用阅读方法:'); + lines.push('- `查询条件/输入项` 是用户进入页面后可以填写、选择或用于筛选的字段。'); + lines.push('- `结果表重点列` 是查询后需要核对的表格列,表格可横向滚动时应继续向右查看。'); + lines.push('- `页面按钮/状态/页签` 是页面上能触发查询、查看、编辑、提交、导出、状态切换或页面切换的入口。'); + lines.push('- `后台处理/外部接口` 用于说明保存后可能调用的存储过程、SAP 或 WMS 接口,业务人员主要关注成功/失败提示。'); + lines.push('- 涉及排产、报工、质检、外协、SAP/WMS 的操作,提交前必须核对订单、物料、数量、人员、工位和日期。'); + lines.push(''); + + let current = ''; + let moduleIndex = 0; + sorted.forEach((page, i) => { + const heading = moduleHeading(page); + if (heading !== current) { + moduleIndex += 1; + current = heading; + lines.push(`## 21-${moduleIndex} ${heading}`); + lines.push(''); + } + lines.push(section(page, i + 1).trimEnd()); + lines.push(''); + }); + return lines.join('\n').trimEnd() + '\n'; +} + +function main() { + const pages = walk(viewsRoot) + .filter(file => !/node_modules/.test(file)) + .map(extractPage); + const chapter = buildChapter(pages); + const manual = readText(manualPath); + const marker = '## 二十一、逐页详细操作说明(按 src/views 页面)'; + const idx = manual.indexOf(marker); + if (idx < 0) throw new Error(`找不到章节标记:${marker}`); + const nextChapter = manual.slice(idx + marker.length).search(/\n## 二十二、/); + const head = manual.slice(0, idx).trimEnd() + '\n\n'; + const tail = nextChapter >= 0 ? manual.slice(idx + marker.length + nextChapter) : ''; + writeText(manualPath, head + chapter + (tail ? '\n' + tail.trimStart() : '')); + console.log(`rewrote chapter 21 for ${pages.length} pages`); +} + +main(); diff --git a/生产任务看板/dist.zip b/生产任务看板/dist.zip index 49c361fbe35eca3e8b06a8eef8730938e23d18ee..3f3df69ec657c3446836abeb508a146d0056d41e 100644 GIT binary patch delta 66462 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

Ha`e}zS86e;CSGB#Ca8Gh` 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