refactor: 重构工艺工序相关命名与数据模型

1.  全局替换"工序"为"工艺"统一术语,包括页面文案、枚举、注释
2.  重构工单与工件工艺数据模型:
    - 新增工艺组合表flow_material作为备料/齐套唯一源头
    - 新增工位状态表station_state支持自主停单/恢复接单
    - 移除station_process派工表,改用工单工艺组合作为路线唯一源头
    - 替换processCode为flowId作为工艺关联标识
    - 重构工件当前进度字段为currentStationNo
3.  删除冗余的静态备份资源文件
4.  调整物料选择组件默认启用仅显示激活物料
5.  优化工单创建/编辑逻辑,新增工艺组合校验与保存
This commit is contained in:
SunYF
2026-09-22 11:32:29 +08:00
parent 932700ca65
commit d609ff8a9e
185 changed files with 8623 additions and 4501 deletions
+36 -32
View File
@@ -24,7 +24,7 @@ export const helpProductType = {
export const helpWorkOrder = {
title: '工单管理(新建 / 编辑 / 删除工单)',
overview:
'工单 = 一个"合同/生产批次"的唯一载体,是生产执行和仓库出库挂靠的核心对象。\n\n全流程:先有产品型号(在「物料档案」里建档) → 建工单(选产品型号、选定物料清单、定数量、勾选工位组合) → 进"物料清单"给该产品配料 → 到"日排产"排哪天产多少 → 仓库按排产备料出库 → 产线装配/拧紧/报工 → 完工(成品 SN 系统自动生成,并自动回流 WMS 入库为"成品"品类)。\n工单号会贯穿 备料单、拧紧查询、工件追溯、操作日志 全链路。\n\n工程编号:一个合同对应一个工程编号,一个工程编号下对应各个产品的产品序号——即「合同号 → 工程编号 → 产品序号」三级归属,用于按合同/工程项目归集与追溯。\n\n查询:支持按 工单号 / 产品编号 / 产品名称(模糊) / 合同号 / 工程编号 / 状态 组合筛选;删除:仅「已创建 / 待排产 / 已发布」且无排产、备料、生产数据的工单可删除(操作列「删除」),生产中或已完成的工单不可删除。',
'工单 = 一个"合同/生产批次"的唯一载体,是生产执行和仓库出库挂靠的核心对象。\n\n全流程:先有产品型号(在「物料档案」里建档) → 建工单(选产品型号、选定物料清单、定数量、勾选工艺组合) → 进"工艺"给工艺维护工艺步骤与物料清单 → 到"日排产"排哪天产多少 → 仓库按排产备料出库 → 产线装配/拧紧/报工 → 完工(成品 SN 系统自动生成,并自动回流 WMS 入库为"成品"品类)。\n工单号会贯穿 备料单、拧紧查询、工件追溯、操作日志 全链路。\n\n工程编号:一个合同对应一个工程编号,一个工程编号下对应各个产品的产品序号——即「合同号 → 工程编号 → 产品序号」三级归属,用于按合同/工程项目归集与追溯。\n\n查询:支持按 工单号 / 产品编号 / 产品名称(模糊) / 合同号 / 工程编号 / 状态 组合筛选;删除:仅「已创建 / 待排产 / 已发布」且无排产、备料、生产数据的工单可删除(操作列「删除」),生产中或已完成的工单不可删除。',
sections: [
{
title: '工单基本信息',
@@ -38,17 +38,17 @@ export const helpWorkOrder = {
{ name: '产品编号', source: '手工填写。通常与所选产品型号的编码一致。', purpose: '产品唯一编码,用于展示与追溯', fill: '如 METER-01,与产品型号编码对齐' },
{ name: '产品名称', source: '手工填写。通常与产品型号名称一致。', purpose: '产品中文名,用于展示', fill: '如 智能电表' },
{ name: '数量', source: '手工填写整数。', purpose: '本工单生产总数量(合同台数),决定需求量与排产上限', fill: '整数 ≥1,如 100' },
{ name: '工位组合', source: '勾选要经过的工位(工位数以数据库为准)。', purpose: '本工单要经过的工位集合,产线设备按此组合下发控制产线', fill: '勾选要经过的工位即可,系统自动按工位号顺序执行(传送带不回走);半成品再上线可只勾漏做的工位' },
{ name: '工艺组合', source: '按工艺分组勾选工位(数据来自「工位绑定」页的工位↔工艺绑定)。保存为 [{flowId,stationNo}]。', purpose: '本工单的执行路线;自动排产/备料拆分/产线下发均按此组合派生', fill: '默认每个已绑定工艺的工位全选;至少选一道工艺;全不选某工艺则该工艺不进入组合;执行顺序=工位号升序,可跳过未选工位' },
{ name: '状态', source: '新建时选"已创建",后续由流程推进。', purpose: '工单生命周期:创建→发布→生产→完成', fill: '新建时选"已创建";也可在列表操作列点「状态」快捷流转(发布/开工/完工)' },
{ name: '完成日期', source: '手工填写,完工时必填。', purpose: '记录工单实际完成日期,用于交付与绩效统计', fill: '完工流转时选择日期,必填' },
{ name: '创建人', source: '系统自动记录(当前登录账号)。', purpose: '追溯工单由谁创建', fill: '只读,自动带入' }
]
},
{
title: '行内"工位组合"维护',
overview: '对当前工单快速维护要经过的工位组合。\n可自由勾选、补工位(半成品再上线):如本应走第3/5工位却做成半成品,可在此只勾第2工位重上线完成闭环。',
title: '工艺组合(路线)',
overview: '新建/编辑工单时勾选「工艺组合」:按工艺分组,每组勾选该工艺要执行的工位。\n组合结果按工位号升序只读展示为路线条(如 2→5→6→8)——执行顺序=工位号升序,可跳过未选工位。\n「自动排产」要求工单已配置工艺组合:组合为空时按钮置灰,提示"请先选择工艺组合"。\n半成品再上线:编辑工单,只勾剩余要走的工位即可。',
fields: [
{ name: '工位组合', source: '勾选要经过的工位。', purpose: '本工单经过的工位集合,产线设备组合下发', fill: '勾选即可,按工位号顺序执行;全选=全部工位' }
{ name: '工艺组合', source: '按工艺分组勾选工位。', purpose: '本工单经过的工位与其工艺,产线设备按组合下发', fill: '勾选即可,按工位号升序执行;至少选一道' }
]
},
{
@@ -72,7 +72,9 @@ export const helpDailyPlan = {
{ name: '工单号', source: '下拉选择。来自"工单管理"已建的工单。', purpose: '该排产对应哪个生产工单', fill: '选择工单号;也可手动输入未列出的工单号' },
{ name: '排产日期', source: '日历选择。', purpose: '计划在哪一天生产', fill: '选具体日期,如 2026-08-29' },
{ name: '计划数量', source: '手工填写整数。', purpose: '这一天计划生产多少件', fill: '整数≥1;注意:该工单所有日排产的数量合计不能超过工单总数量' },
{ name: '送达接驳台', source: '排产时人工确认(可多选 DOCK01~20产线 / DOCK21库房)。', purpose: '该工单物料经 AGV 送到哪些接驳台(DOCK n↔工位n),备料单据此填 target_dock', fill: '默认推荐该工单上次使用的接驳台,可修改;至少选一个。AGV 按把这些料送到对应工位' },
{ name: '送达接驳台', source: '由工单「工艺组合」派生(工位号→接驳台编码去重),此处无需手填。', purpose: '该工单物料经 AGV 送到哪些接驳台(DOCK n↔工位n),备料单据此填 target_dock', fill: '随工艺组合自动展示;如需调整路线,到「工单管理」编辑工单的工艺组合' },
{ name: '各工位分产量', source: '启用后点「编辑」,按工单工艺组合的工位逐个填写。', purpose: '各工位分产量决定备料拆分;未配置则同工艺工位平均分;备料需求 = 分产量 × 单台用量 × (1+损耗率%)', fill: '留空或 0 的工位不分担产量;建议合计=计划数量' },
{ name: '停单/恢复', source: '工人在工位终端自主停单/恢复,管理端同步展示当日停单状态。', purpose: '现场异常(缺料/设备故障)时暂停该工位当日出产', fill: '管理端只读展示;恢复由工人或授权人员在工位终端操作' },
{ name: '已完成', source: '系统自动累计。只读。', purpose: '该排产已实际完成多少件', fill: '无需填写' },
{ name: '状态', source: '系统维护。只读。', purpose: '排产执行状态(待排产/已确认)', fill: '无需填写' },
{ name: '启用/停用', source: '行内开关。', purpose: '停用后该条排产不参与备料/生产,可临时挂起某天计划', fill: '拨动开关切换;停用的排产不计入备料' }
@@ -121,7 +123,7 @@ export const helpMaterial = {
{
title: '物料去向对账',
overview:
'点「物料去向对账」查看工单物料的完整去向(只读汇总,不新增账本):需求总量、已发出(仓库已出库)、已退回、已消耗(报工核销)、在途(已发出−已接料)、工位余(已接料−已消耗−已退回)、待发缺口。可展开行看接料明细(每张备料单的实收与确认人),并可导出 CSV。\n\n对账状态只标三类硬异常,其余一律「正常」:① 超领 = 净领用(已发出−已退回)超过需求,超领原因在 WMS「出库管理」留痕可查;② 完结剩料 = 台账已领料完结但工位仍压料(没耗也没退),请催报工或发起退料;③ 在途等待 = 已发出未接料(含已送达未扫码),请看 WMS 出库单是否已送达或催工位扫码。生产中的待发缺口属正常状态,不标色。\n\n消耗明细与出库明细不跨系统重复展示:消耗按工序合计的留痕在 WMS 操作日志按工单号查询;出库明细与超领原因在 WMS「出库管理」按工单号查询。',
'点「物料去向对账」查看工单物料的完整去向(只读汇总,不新增账本):需求总量、已发出(仓库已出库)、已退回、已消耗(报工核销)、在途(已发出−已接料)、工位余(已接料−已消耗−已退回)、待发缺口。可展开行看接料明细(每张备料单的实收与确认人),并可导出 CSV。\n\n对账状态只标三类硬异常,其余一律「正常」:① 超领 = 净领用(已发出−已退回)超过需求,超领原因在 WMS「出库管理」留痕可查;② 完结剩料 = 台账已领料完结但工位仍压料(没耗也没退),请催报工或发起退料;③ 在途等待 = 已发出未接料(含已送达未扫码),请看 WMS 出库单是否已送达或催工位扫码。生产中的待发缺口属正常状态,不标色。\n\n消耗明细与出库明细不跨系统重复展示:消耗按工位合计的留痕在 WMS 操作日志按工单号查询;出库明细与超领原因在 WMS「出库管理」按工单号查询。',
fields: [
{ name: '物料去向对账', source: 'WMS 台账 + 本系统已接料量实时合成,前端现算异常。', purpose: '一眼看清料到哪一步了、账对不对', fill: '按当前筛选条件查询,弹窗展示;行可展开看接料明细,右下角可导出 CSV' }
]
@@ -163,12 +165,12 @@ export const helpQtyReport = {
export const helpPlc = {
title: '工位组合下发(下发录入 / 下发记录)',
overview:
'这个菜单做什么用:把某工单/工件的「工位组合」写入产线设备(如 PLC 控制器),产线传送带据此只停靠勾选的工位,其余工位不加工。\n\n页面分两个页签:「下发录入」(默认打开)、「下发记录」(点击才加载,可按工单号/状态筛选)。\n\n操作流程:选工单号 → 下拉选出该工单已上线未完工的工件 SN(也可扫码/手输) → 系统按工件实际进度自动带出「当前工位」(只读) → 工位组合中 ≤ 当前工位的编号视为已完成,自动剔除且禁选 → 勾选剩余要走的工位 → 下发。\n\n为什么单独一个菜单:产线偶尔需要人工干预——比如本该走 3 号工位却做成了半成品,人工在此只勾剩余工位重上线,完成闭环。\n\n核心约束:系统遵循「上一条未收到完成信号,不下发下一条」,确保产线不串序。\n\n数据链路:工单(含工位组合) → 本页下发到产线设备 → 产线设备驱动传送带/工位 → 收到完成信号再下发下一条。',
'这个菜单做什么用:把某工单/工件的「工位组合」写入产线设备(如 PLC 控制器),产线传送带据此只停靠勾选的工位,其余工位不加工。\n\n页面分两个页签:「下发录入」(默认打开)、「下发记录」(点击才加载,可按工单号/状态筛选)。\n\n操作流程:选工单号 → 下拉选出该工单已上线未完工的工件 SN(也可扫码/手输) → 系统按工件实际进度自动带出「当前工位」(只读) → 工位组合由工单「工艺组合」按工位号升序自动派生 → 下发。\n\n为什么单独一个菜单:产线偶尔需要人工干预——比如本该走 3 号工位却做成了半成品,可到「工单管理」编辑工单的工艺组合(只勾剩余工位)后重上线,完成闭环。\n\n核心约束:系统遵循「上一条未收到完成信号,不下发下一条」,确保产线不串序。\n\n数据链路:工单(含工艺组合) → 本页下发到产线设备 → 产线设备驱动传送带/工位 → 收到完成信号再下发下一条。',
fields: [
{ name: '工单号', source: '下拉选择/输入。来自工单。', purpose: '当前生产的工单,选中后带出该工单可下发的工件 SN', fill: '选择或输入工单号' },
{ name: '工件SN', source: '下拉选择(该工单已上线未完工的 SN,可搜索),也可扫码枪扫入手输。', purpose: '当前流经的工件唯一序列号', fill: '优先下拉选已上线 SN;扫码手输时须是已上线的工件才能带出当前工位' },
{ name: '当前工位', source: '自动带出(只读)。按所选工件的实际生产进度识别。', purpose: '从哪一站开始继续下发', fill: '无需填写;未带出说明工件未上线或 SN 有误' },
{ name: '工位组合', source: '勾选要经过的工位;≤当前工位的编号已禁选(视为完成)。', purpose: '该工件还要经过的工位,产线设备控制停靠', fill: '勾选剩余要走的工位即可,按工位号顺序执行' }
{ name: '工位组合', source: '由工单「工艺组合」按工位号升序自动派生,无需手选。', purpose: '该工件要经过的工位,产线设备控制停靠', fill: '如需调整路线,到「工单管理」编辑工单的工艺组合' }
]
}
@@ -190,7 +192,7 @@ export const helpTorque = {
title: '一级汇总与统计',
overview: '每行代表一个工件在某工位的拧紧总体情况。',
fields: [
{ name: '拧紧数量(应拧/实拧)', source: '应拧数来自工艺流程 isTorque 步骤数;实拧数来自拧紧记录。', purpose: '对比工艺要求与实际拧紧颗数', fill: '只读;应拧显示「未配置」表示该工位未绑定含扭矩步骤的工艺' },
{ name: '拧紧数量(应拧/实拧)', source: '应拧数来自工艺 isTorque 步骤数;实拧数来自拧紧记录。', purpose: '对比工艺要求与实际拧紧颗数', fill: '只读;应拧显示「未配置」表示该工位未绑定含扭矩步骤的工艺' },
{ name: '合格/不合格', source: '拧紧记录统计。', purpose: '看该工件合格与不合格颗数', fill: '只读;不合格>0 会标红' },
{ name: '拧紧结果', source: '系统判定:应拧>0 且 实拧>=应拧 且 无不合格 = 满足。', purpose: '一眼判定该工件拧紧是否达标', fill: '点「满足/不满足」链接进入二级明细' },
{ name: '审核状态', source: '系统统计。分组内全部记录已审核才计已审核。', purpose: '提示检验员是否已完成签字', fill: '只读' }
@@ -209,17 +211,18 @@ export const helpTorque = {
}
export const helpStation = {
title: '关联工位(工位总览)',
title: '工位绑定(工位总览)',
overview:
'工位数以数据库为准。工位分「内置」与「自定义」两类:内置工位由种子/初始化数据产生(数据库 is_builtin=true),对应实体产线位置,需与 PLC 通讯并必须按工位号顺序流转,不允许修改工位类型、不允许删除;自定义工位是在本页点击「新增工位」创建的,可修改类型、可删除。\n\n本页是工位总览:查看每个工位当前绑定了哪个工艺流程,可修改工位名称、删除自定义工位。\n\n绑定关系由本页单独维护:在下拉中选择「启用」的工艺流程即绑定到该工位;一个工位只能有一个启用的工艺流程(先停用旧流程再绑新流程);流程停用后自动解绑。\n\n「是否有接驳台」对应实体位置(1~10 号工位各 2 个接驳台;0/11/12/13 号无),由内置数据给定,页面不可手动更改。\n\n数据链路:关联工位页(选启用流程绑定) → 工位终端按该流程的工序步骤采集 → 报工判定 合格/不合格。',
'工位数以数据库为准。本页可新增工位与改名;每个工位在下方下拉选择启用的工艺即完成绑定;一个工位只能绑定一个工艺;内置工位不允许删除。\n\n工位分「内置」与「自定义」两类:内置工位由种子/初始化数据产生(数据库 is_builtin=true),对应实体产线位置,需与 PLC 通讯并按工位号顺序流转,不允许修改工位类型、不允许删除;自定义工位是在本页点击「新增工位」创建的,可修改类型、可删除。\n\n绑定关系即本页下拉:选择「启用」的工艺即完成绑定(工位号即顺序号);工单的执行路线由工单的「工艺组合」决定,本页只维护工位↔工艺绑定,不再有按日派工。\n\n停单/恢复:工人在工位终端自主停单/恢复,管理端在本页/日排产侧同步展示当日停单状态(只读)。\n\n数据链路:本页绑定工艺 → 工单勾选工艺组合 → 工位终端按绑定工艺的工艺步骤采集 → 报工按考核标准自动判 合格/不合格。',
fields: [
{ name: '工位号', source: '内置工位由系统预置;自定义工位由本页「新增工位」填写。', purpose: '产线物理工位编号', fill: '新增时自定义,可与现有工位不连续(如 14、15…)' },
{ name: '工位号', source: '内置工位由系统预置;自定义工位由本页「新增工位」填写。', purpose: '产线物理工位编号,工位号即顺序号', fill: '新增时自定义,可与现有工位不连续(如 14、15…)' },
{ name: '工位名称', source: '可编辑。默认如 装配工位1。', purpose: '工位的显示名称', fill: '如 一号装配工位' },
{ name: '类型', source: '内置工位由系统给定且不可修改;自定义工位可改。', purpose: '线上位(连 PLC)/线下位(虚拟,不连 PLC)', fill: '内置工位只读;自定义工位可在改名弹窗切换' },
{ name: '来源', source: '系统标识(数据库 is_builtin)。', purpose: '区分内置工位与自定义工位', fill: '只读' },
{ name: '接驳台', source: '内置数据给定(对应实体位置),不可手动更改。', purpose: '该工位位置是否有接驳台', fill: '只读' },
{ name: '绑定工艺流程', source: '自动来自本页:为工位选择「启用」的工艺流程即绑定。', purpose: '该工位执行的工艺流程(决定工序步骤/考核标准/PDF)', fill: '到本页为该工位选择启用流程;本页只读展示' },
{ name: '删除', source: '本页操作。', purpose: '删除自定义工位', fill: '仅自定义工位可删除;内置工位不显示删除按钮' },
{ name: '接驳台编码', source: '系统预置(种子初始化),与工位 1:1。', purpose: '该工位绑定的接驳台唯一标识', fill: '只读;由种子初始化,页面不可更改' },
{ name: '绑定工艺', source: '本页下拉选择「启用」的工艺即完成绑定。', purpose: '该工位执行的工艺(决定工艺步骤/考核标准/PDF/物料清单);一个工位只能绑定一个工艺', fill: '在本页下拉为该工位选择启用工艺;工单执行路线由工单工艺组合决定' },
{ name: '删除', source: '本页操作。', purpose: '删除自定义工位', fill: '仅自定义工位可删除;内置工位不允许删除' },
{ name: '虚拟工位 0 / 13', source: '系统预置。工位号 0=上线位、13=下线位。', purpose: '产线进线口建档上线、出料口完工入库,由 PAD 操作,不连 PLC/拧紧枪', fill: '只读;上线位/下线位在工位终端(PAD)用「上线建档」「下线完工」面板操作' }
]
}
@@ -308,23 +311,24 @@ export const helpEventLog = {
}
export const helpProcessFlow = {
title: '工艺流程(作业指导,含工序步骤)',
title: '工艺(作业指导,含工艺步骤与物料清单)',
overview:
'页面分「流程列表」「流程配置」两个页签:列表查看全部流程并做启用/停用/删除;配置页维护流程基本信息与工序步骤(新增与编辑共用,不再弹窗套弹窗)。\n\n工艺流程 = 一份「菜谱」:只描述某个产品该怎么装配(步骤名、采集方式、考核标准),不绑定具体工位。\n\n概念统一说明:\n· 工位:产线上的物理工位(工位数以数据库为准,仅改名称不增删),相当于「灶台」。\n· 工艺流程:一份作业指导,可有多版本(如 总装流程_2026版);其启用状态决定是否参与生产。\n· 工序步骤:流程内包含多个工序步骤(如:装配完成、拧紧扭矩、测试)。\n\n绑定关系在「关联工位」页维护:在该页为某工位选择启用的工艺流程即绑定;一个工位只能有一个启用的流程。工位终端按所选工位的绑定流程载入工序步骤。\n\n数据链路:本页维护流程+工序步骤+考核标准 → 关联工位页绑定 → 工位终端按工序步骤采集 → 报工按考核标准自动判 合格/不合格 → 工件追溯/绩效报表可见。',
'页面分「工艺列表」「工艺配置」两个页签:列表查看全部工艺并做启用/停用/删除;配置页维护工艺基本信息、工艺步骤与物料清单(新增与编辑共用,不再弹窗套弹窗)。\n\n工艺 = 一份「菜谱」:只描述某个产品该怎么装配(工艺步骤名、采集方式、考核标准、所需物料),可被多个工位绑定,不隶属某个工位。\n\n概念统一说明:\n· 工位:产线上的物理工位(工位数以数据库为准),工位号即顺序号,相当于「灶台」。\n· 工艺:一份作业指导(PDF + 工艺步骤 + 物料清单);其启用状态决定是否参与生产。\n· 工艺步骤:工艺内包含多个步骤(如:装配完成、拧紧扭矩、测试)。\n· 物料清单:该工艺装配所需物料(编码/名称/规格/单位/管控方式/单台用量/损耗率),整表覆盖保存。\n\n绑定关系在「工位绑定」页维护:为某工位选择启用的工艺即绑定;一个工位只能绑定一个工艺。工单在「工单管理」勾选「工艺组合」确定执行路线(工位号升序)。\n\n数据链路:本页维护工艺+工艺步骤+物料清单+考核标准 → 工位绑定页绑定 → 工单勾选工艺组合 → 工位终端按工艺步骤采集 → 报工按考核标准自动判 合格/不合格 → 工件追溯/绩效报表可见。',
sections: [
{
title: '流程基本信息',
title: '工艺基本信息',
fields: [
{ name: '流程名称', source: '手工填写。人为定义。', purpose: '流程版本名,用于区分同一工位的不同版本', fill: '如 总装流程 / 总装流程_2026版' },
{ name: '工艺名称', source: '手工填写。人为定义。', purpose: '工艺名,用于区分与绑定展示', fill: '如 总装工艺 / 总装工艺_2026版' },
{ name: '状态', source: '下拉选择 启用/停用。也可在列表操作列点「启用/停用」快捷切换。', purpose: '启用=该流程可被「关联工位」页绑定到工位并参与生产;停用=不可绑定、不参与生产', fill: '启用后可在「关联工位」页绑定到工位;停用后不可绑定' },
{ name: '工艺图纸(PDF)', source: '本页上传。文件由 MES 服务器保存。', purpose: '该工位的作业指导图,工位终端打开预览', fill: '选择 PDF 上传,成功后显示文件名可预览' },
{ name: '工序步骤', source: '本页维护(步骤名/采集方式/是否拧紧/考核标准)。', purpose: '工位终端报工时按此动态渲染参数输入', fill: '一个流程可含多个工序步骤,按序号顺序执行' },
{ name: '步骤附件/图纸', source: '每个工序步骤单独上传(绑定式)。文件由 MES 服务器保存。', purpose: '把图纸精确绑定到具体步骤,工位终端按当前步骤自动展示对应图纸', fill: '在步骤行上传该步骤图纸/附件(可多个);随工序自动分发到工位终端' }
{ name: '状态', source: '下拉选择 启用/停用。也可在列表操作列点「启用/停用」快捷切换。', purpose: '启用=该工艺可被「工位绑定」页绑定到工位并参与生产;停用=不可绑定、不参与生产', fill: '启用后可在「工位绑定」页绑定到工位;停用后不可绑定' },
{ name: '作业指导PDF', source: '本页上传。文件由 MES 服务器保存。', purpose: '该工艺的作业指导图,工位终端打开预览', fill: '选择 PDF 上传,成功后显示文件名可预览' },
{ name: '工艺步骤', source: '本页维护(步骤名/采集方式/是否拧紧/考核标准)。', purpose: '工位终端报工时按此动态渲染参数输入', fill: '一个工艺可含多个工艺步骤,按序号顺序执行' },
{ name: '步骤附件/图纸', source: '每个工艺步骤单独上传(绑定式)。文件由 MES 服务器保存。', purpose: '把图纸精确绑定到具体步骤,工位终端按当前步骤自动展示对应图纸', fill: '在步骤行上传该步骤图纸/附件(可多个);随步骤自动分发到工位终端' },
{ name: '物料清单', source: '本页维护:物料编码/名称/规格/单位/管控方式/单台用量/损耗率%,整表覆盖保存。', purpose: '该工艺装配所需物料;备料需求 = 各工位分产量 × 单台用量 × (1+损耗率%)', fill: '物料编码/名称/规格/单位可手填,须属于产品物料清单范围,工单保存时校验;管控方式:批次·结构件=1、序列号·电气件=2' }
]
},
{
title: '采集方式(每个工序步骤三选一)',
title: '采集方式(每个工艺步骤三选一)',
overview: '决定该步骤的数值从哪里来。',
fields: [
{ name: '拧紧枪自动', source: '拧紧枪设备自动回传。', purpose: '扭矩/角度等由拧紧枪采集,工人无需手输', fill: '选「拧紧枪自动」,并在「是否拧紧」打开开关' },
@@ -396,10 +400,10 @@ export const helpInspect = {
{
title: '过程巡检(按步骤逐条提交)',
overview:
'选择工单后,系统自动拉出该工单「工位组合」里每个工位绑定的工艺步骤,逐步骤填报巡检结果——与工位终端的执行顺序一致,确保每一道工序都有检验留痕。\n\n全部步骤提交完成后,点「一键生成《工序间检验记录》」,系统把该工单的 PROCESS 类巡检按步骤汇总成一张可核对/打印的记录表。',
'选择工单后,系统自动拉出该工单「工艺组合」里每个工位对应工艺的工艺步骤,逐步骤填报巡检结果——与工位终端的执行顺序一致,确保每一步都有检验留痕。\n\n全部步骤提交完成后,点「一键生成《工序间检验记录》」,系统把该工单的 PROCESS 类巡检按步骤汇总成一张可核对/打印的记录表。',
fields: [
{ name: '工单号', source: '手动选择/搜索。来自【工单管理】已建工单。', purpose: '对哪个工单巡检', fill: '搜索选择工单号' },
{ name: '步骤列表', source: '自动带出:该工单工位组合 → 各工位 station.flow_id 指向的工艺流程步骤。', purpose: '逐步骤填报,避免漏检', fill: '只读,系统自动展开' },
{ name: '步骤列表', source: '自动带出:该工单工艺组合 → 各工位绑定工艺的工艺步骤。', purpose: '逐步骤填报,避免漏检', fill: '只读,系统自动展开' },
{ name: '实测值', source: '手动填写该步骤的实测数据。', purpose: '留存检验实测量', fill: '按步骤要求填写' },
{ name: '合格/不合格', source: '手动选择。', purpose: '该步骤的巡检结论', fill: '选择合格或不合格' },
{ name: '签字', source: '输入检验人姓名。', purpose: '检验人签字留证', fill: '输入签字内容' },
@@ -437,12 +441,12 @@ export const helpInspect = {
export const helpProcessCard = {
title: '生产流程卡(产品型号级全景流程卡)',
overview:
'这个菜单做什么用:按**产品型号**全方位展示该型号的完整制造定义,用于工艺交底、审核与客户查阅;与「工件追溯」页里按单个 SN 打印的流程卡互补——后者记的是“这一件实际怎么做的”,本页讲的是“这个型号应该怎么做”。\n\n内容构成(页面按页签展示,打印时全部输出):①工位流程总览——工位组合、每工位绑定的工艺流程、流程状态、步骤数、检验点数、拧紧步骤数、工艺图纸、该型号的历史作业时间;②工艺流程与步骤——逐工位列出每条步骤的采集方式(手工录入/自动采集/无需采集)、是否需检测确认、是否拧紧采集、考核标准(含上下限);③物料清单——该型号的物料清单明细,按物料清单名称分组,含图号/名称/规格/单位/管理方式/装配工位/单台用量/损耗率/需求总量;④检验卡项——把所有「需要检测确认」的步骤汇总成检验项清单,含判定标准。\n\n工位组合从哪来:优先取该产品编号最近一张工单的「工位组合」;若该型号还没有工单,则按全产线工位顺序(升序)展示,页面顶部会标注来源。\n\n打印/导出:点「打印 / 导出 PDF」,系统会在新窗口打开排版好的 A4 卡片版式,用浏览器打印即可(选择“另存为 PDF”即导出电子档)。',
'这个菜单做什么用:按**产品型号**全方位展示该型号的完整制造定义,用于工艺交底、审核与客户查阅;与「工件追溯」页里按单个 SN 打印的流程卡互补——后者记的是“这一件实际怎么做的”,本页讲的是“这个型号应该怎么做”。\n\n内容构成(页面按页签展示,打印时全部输出):①工位流程总览——工艺组合、每工位绑定的工艺、工艺状态、步骤数、检验点数、拧紧步骤数、工艺图纸、该型号的历史作业时间;②工艺与步骤——逐工位列出每条步骤的采集方式(手工录入/自动采集/无需采集)、是否需检测确认、是否拧紧采集、考核标准(含上下限);③物料清单——该型号的物料清单明细,按物料清单名称分组,含图号/名称/规格/单位/管理方式/单台用量/损耗率/需求总量;④检验卡项——把所有「需要检测确认」的步骤汇总成检验项清单,含判定标准。\n\n工艺组合从哪来:优先取该产品编号最近一张工单的「工艺组合」;若该型号还没有工单,则按全产线工位顺序(升序)展示,页面顶部会标注来源。\n\n打印/导出:点「打印 / 导出 PDF」,系统会在新窗口打开排版好的 A4 卡片版式,用浏览器打印即可(选择“另存为 PDF”即导出电子档)。',
fields: [
{ name: '产品型号', source: '下拉选择,来自「物料档案」页。', purpose: '要查看哪个型号的全景流程', fill: '选定后自动带出产品编号' },
{ name: '产品编号', source: '自动带出(也可手工填写,直接按编号生成)。', purpose: '匹配工单、物料清单的关键字', fill: '一般无需手填' },
{ name: '工位组合', source: '只读,自动带出。', purpose: '该型号要走哪些工位、按什么顺序', fill: '-' },
{ name: '工位流程总览-工艺图纸', source: '来自「工艺流程」页上传的图纸文件名。', purpose: '该工位是否有可查阅的工艺图', fill: '-' },
{ name: '工艺组合', source: '只读,自动带出。', purpose: '该型号要走哪些工位、按什么顺序', fill: '-' },
{ name: '工位流程总览-工艺图纸', source: '来自「工艺」页上传的图纸文件名。', purpose: '该工位是否有可查阅的工艺图', fill: '-' },
{ name: '工位流程总览-作业时间', source: '按本型号历史报工实绩聚合的首末作业时间。', purpose: '了解各环节实际耗时', fill: '无实绩时显示“暂无实绩”' },
{ name: '检验卡项', source: '自动汇总所有「检测确认」步骤。', purpose: '作为检验清单使用', fill: '-' }
]
@@ -474,7 +478,7 @@ export const helpWip = {
{ name: '工单号', source: '手动输入。筛选条件。', purpose: '只看某个工单的在制品', fill: '可空=全部;支持模糊匹配,回车即查' },
{ name: '当前工位', source: '按工件状态与工位组合推算。', purpose: '工件此刻停在哪一工位', fill: '只读,可筛选' },
{ name: '状态', source: '系统维护。', purpose: '已上线/在制/返修', fill: '只读,可筛选' },
{ name: '进度', source: '已完成工序数 / 工位组合总工序数。', purpose: '看该件走到第几步', fill: '只读' },
{ name: '进度', source: '已完成步骤数 / 工艺组合总步骤数。', purpose: '看该件走到第几步', fill: '只读' },
{ name: '停留时长', source: '自上线时间起算。', purpose: '发现长时间滞留的在制品', fill: '只读' }
]
}
@@ -499,10 +503,10 @@ export const helpAlertCenter = {
export const helpAttachment = {
title: '附件中心(统一存储与查阅)',
overview:
'附件中心集中登记并查阅全系统附件(图纸、检验照片、检验报告、工艺流程、流程卡、包装照片、Excel 导入等),新增在各业务页面内完成,本页负责查阅、下载、删除与归档清理。\n\n统一存储规则:所有附件按「附件根目录/年/月/日/文件类型/文件」分层存放,文件类型目录全部大写(PROCESS_PDF、INSPECTION_PHOTO、INSPECTION_PDF、DRAWING、PROCESS_CARD、PACKAGE_PHOTO、EXCEL_IMPORT、OTHER);文件名统一用 UUID,扩展名小写,不含中文与特殊字符;数据库只存相对路径(如 2026/09/19/INSPECTION_PHOTO/xxx.jpg),不存绝对路径。附件根目录由配置文件 Upload.Dir 指定,不硬编码。\n\n上传为流式写入(边写边算 MD5),同业务对象同 MD5 自动秒传不重复占空间;单文件大小按文件类型配置上限(默认 20MB)。\n\n删除为逻辑删除:库内标记「已删除」并记录删除人/时间,物理文件保留,勾选「含已删除」可追溯。\n\n归档清理:本地只保留最近「配置的年数」(默认 1 年),更早的附件可一键归档到外部备份目录并标记「已归档」,释放本地磁盘。\n\n磁盘空间监控:系统每天早上 7 点自动检测磁盘剩余空间,剩余低于 20% 告警、低于 10% 提示执行备份归档清理(本页顶部同步横幅提示,critical 时可直接点「立即归档清理」)。',
'附件中心集中登记并查阅全系统附件(图纸、检验照片、检验报告、工艺、流程卡、包装照片、Excel 导入等),新增在各业务页面内完成,本页负责查阅、下载、删除与归档清理。\n\n统一存储规则:所有附件按「附件根目录/年/月/日/文件类型/文件」分层存放,文件类型目录全部大写(PROCESS_PDF、INSPECTION_PHOTO、INSPECTION_PDF、DRAWING、PROCESS_CARD、PACKAGE_PHOTO、EXCEL_IMPORT、OTHER);文件名统一用 UUID,扩展名小写,不含中文与特殊字符;数据库只存相对路径(如 2026/09/19/INSPECTION_PHOTO/xxx.jpg),不存绝对路径。附件根目录由配置文件 Upload.Dir 指定,不硬编码。\n\n上传为流式写入(边写边算 MD5),同业务对象同 MD5 自动秒传不重复占空间;单文件大小按文件类型配置上限(默认 20MB)。\n\n删除为逻辑删除:库内标记「已删除」并记录删除人/时间,物理文件保留,勾选「含已删除」可追溯。\n\n归档清理:本地只保留最近「配置的年数」(默认 1 年),更早的附件可一键归档到外部备份目录并标记「已归档」,释放本地磁盘。\n\n磁盘空间监控:系统每天早上 7 点自动检测磁盘剩余空间,剩余低于 20% 告警、低于 10% 提示执行备份归档清理(本页顶部同步横幅提示,critical 时可直接点「立即归档清理」)。',
fields: [
{ name: '文件类型', source: '上传时由业务场景指定或按扩展名推断(大写枚举)。', purpose: '决定存储目录分层,也是查阅时的主要筛选维度', fill: '下拉单选八类之一,留空=全部' },
{ name: '业务类型', source: '上传时随附件记录写入(工单/物料/工艺流程/检验/入库 等)。', purpose: '区分附件挂在哪种业务单据上', fill: '下拉单选,留空=全部' },
{ name: '业务类型', source: '上传时随附件记录写入(工单/物料/工艺/检验/入库 等)。', purpose: '区分附件挂在哪种业务单据上', fill: '下拉单选,留空=全部' },
{ name: '业务ID', source: '上传时写入的业务键(工单号/图号/SN)。', purpose: '定位某个具体单据的全部附件', fill: '支持模糊匹配,如输入工单号' },
{ name: '文件名', source: '上传时的原始文件名。', purpose: '按名称模糊查找', fill: '支持模糊匹配' },
{ name: '上传时间', source: '系统记录上传时刻。', purpose: '按时间区间缩小范围', fill: '可选起止日期,留空=不限' },