import{_ as g,j as y,H as P,o,n as S,w as E,d as e,t as r,c as n,p,f as u,F as f,m,r as h,i as D,b as W}from"./index-CeNpw27z.js";const k={class:"ph-inner"},A={class:"ph-banner"},C={class:"ph-banner-title"},x={key:0,class:"ph-overview"},T={key:1,class:"ph-section"},b={class:"ph-fname"},G={class:"ph-fsource"},V={class:"ph-fpurpose"},O={class:"ph-ffill"},q={key:0,class:"ph-sec-title"},F={key:1,class:"ph-sec-overview"},R={class:"ph-fname"},B={class:"ph-fsource"},L={class:"ph-fpurpose"},I={class:"ph-ffill"},K={__name:"PageHelp",props:{data:{type:Object,default:()=>({title:"操作说明",overview:"",fields:[]})},page:{type:String,default:""}},setup(s){const d=s,w=W(),t=D(!1);function v(){d.page&&w.name!==d.page||(t.value=!0)}return y(()=>window.addEventListener("mes:open-page-help",v)),P(()=>window.removeEventListener("mes:open-page-help",v)),(z,i)=>{const M=h("el-empty"),N=h("el-drawer");return o(),S(N,{modelValue:t.value,"onUpdate:modelValue":i[0]||(i[0]=l=>t.value=l),title:s.data.title||"操作说明",size:"520px","append-to-body":"",class:"ph-drawer"},{default:E(()=>[e("div",k,[e("div",A,[e("div",C,r(s.data.title||"操作说明"),1),i[1]||(i[1]=e("div",{class:"ph-banner-sub"},"页面整体说明",-1))]),s.data.overview?(o(),n("div",x,r(s.data.overview),1)):p("",!0),i[2]||(i[2]=e("div",{class:"ph-legend"},[e("span",{class:"lg"},[e("i",{class:"ic lg-source"}),u("来源:这个字段从哪来、谁填")]),e("span",{class:"lg"},[e("i",{class:"ic lg-purpose"}),u("用途:它起什么作用")]),e("span",{class:"lg"},[e("i",{class:"ic lg-fill"}),u("怎么填:具体填什么")])],-1)),s.data.fields&&s.data.fields.length?(o(),n("div",T,[(o(!0),n(f,null,m(s.data.fields,(l,c)=>(o(),n("div",{class:"ph-field",key:"top"+c},[e("div",b,[u(r(l.name)+" ",1),e("span",G,r(l.source),1)]),e("div",V,r(l.purpose),1),e("div",O,"👉 "+r(l.fill),1)]))),128))])):p("",!0),s.data.sections&&s.data.sections.length?(o(!0),n(f,{key:2},m(s.data.sections,(l,c)=>(o(),n("div",{key:c,class:"ph-section"},[l.title?(o(),n("div",q,r(l.title),1)):p("",!0),l.overview?(o(),n("div",F,r(l.overview),1)):p("",!0),(o(!0),n(f,null,m(l.fields,(a,_)=>(o(),n("div",{class:"ph-field",key:_},[e("div",R,[u(r(a.name)+" ",1),e("span",B,r(a.source),1)]),e("div",L,r(a.purpose),1),e("div",I,"👉 "+r(a.fill),1)]))),128))]))),128)):p("",!0),!s.data.fields&&!(s.data.sections&&s.data.sections.length)?(o(),S(M,{key:3,description:"该页面暂未编写操作说明","image-size":70})):p("",!0)])]),_:1},8,["modelValue","title"])}}},Y=g(K,[["__scopeId","data-v-e6951544"]]),j={title:"产品型号(档案维护)",overview:`产品型号 = 企业要生产哪些产品的分类档案,是整条产线的源头基础数据。 主数据链条:产品型号 → 工单(选产品型号+物料清单) → 物料清单(给该产品编号配料) → 日排产 → 备料单 → 库房出库 → 产线生产 → 完工成品自动回流 WMS 入库。 关系说明(几对几): · 产品型号 ↔ 工单:1 对 N。一个产品型号可以建多个工单(同一型号今天做一批、明天做一批,工单号不同、产品编号相同)。 · 产品型号 ↔ 物料清单:1 对多(选用制)。同一型号可并存多份物料清单(不同厂家供货/含半成品结构),用「物料清单名称」区分,工单建单时选定一份,备料/装机都按工单锁定的那份算。 · 产品型号 ↔ 备料单:间接。备料单由「日排产 × 工单锁定的物料清单」算出,与产品型号无直接约束。 · 强约束:工单/物料清单都挂在产品编号下,产品型号编码变了,下游关联会断,建议建好后不要改。 · 与 WMS 的关系:两套系统解耦。产品/图号主数据以 WMS 为单一来源,MES 实时拉取(WMS 不可达时允许手填、仅提示不强校验);成品完工后由系统自动生成 SN 回流 WMS 入库,无需人工对账。`,fields:[{name:"名称",source:"手工填写。用户自定义,无上游来源。",purpose:"产品型号的中文名,用于识别与下拉展示",fill:"如:智能电表、断路器、配电柜"},{name:"编码",source:"系统自动生成 + 可手动修改。新建时会自动带出(格式 PROD-YYYYMMDD-序号),你可直接使用或改为自定义编码;编辑时保留已存值。一个产品编号可对应多个工单(同一型号今天做一批、明天做一批,工单号不同,产品编号相同)。",purpose:"产品唯一编码。它是 MES 内部识别该产品的标识,决定该产品的物料清单内容,也是工单、备料、拧紧、追溯的挂靠键。",fill:'建议用有意义的编码,如 METER-01。要点:①编码主数据以 WMS(库房) 为单一来源,本系统实时从 WMS 拉取物料/产品档案;WMS 不可达时允许手填、仅提示不强校验;②成品完工后系统自动生成 SN 并回流 WMS 入库,无需人工对账;③如产品编号就是"产品型号",则直接沿用该类型编码即可;④建好后不要随意改,否则下游工单/追溯的关联会断。'},{name:"类别",source:"手工填写。可选,无上游来源。",purpose:"产品所属大类,便于分类统计",fill:"如:计量表 / 开关柜;可空"},{name:"启用",source:"开关选择。默认开启。",purpose:"启用后才允许在新建工单/备料的下拉里被选到",fill:"默认开启;暂时停产的可关闭(不删除,保留档案)"},{name:"备注",source:"手工填写。可选。",purpose:"补充说明",fill:"可不填"}]},Q={title:"工单管理(新建 / 编辑 / 删除工单)",overview:`工单 = 一个"合同/生产批次"的唯一载体,是生产执行和仓库出库挂靠的核心对象。 全流程:先有产品型号 → 建工单(选产品型号、选定物料清单、定数量、勾选工位组合) → 进"物料清单"给该产品配料 → 到"日排产"排哪天产多少 → 仓库按排产备料出库 → 产线装配/拧紧/报工 → 完工(成品 SN 系统自动生成,并自动回流 WMS 入库为"成品"品类)。 工单号会贯穿 备料单、拧紧查询、手动报工、工件追溯、操作日志 全链路。 工程编号:一个合同对应一个工程编号,一个工程编号下对应各个产品的产品序号——即「合同号 → 工程编号 → 产品序号」三级归属,用于按合同/工程项目归集与追溯。 查询:支持按 工单号 / 产品编号 / 产品名称(模糊) / 合同号 / 工程编号 / 状态 组合筛选;删除:仅「已创建 / 待排产 / 已发布」且无排产、备料、生产数据的工单可删除(操作列「删除」),生产中或已完成的工单不可删除。`,sections:[{title:"工单基本信息",fields:[{name:"工单号",source:"系统自动生成(WO+时间戳),可手工改。新建时自动带出。",purpose:"唯一标识一个工单,备料/出库/报工/追溯都挂在此号下",fill:"一般不用改;如改动须保证唯一"},{name:"产品型号",source:'下拉选择。数据来自"产品型号"页面已启用的记录。',purpose:"说明这批生产的是什么产品,并决定物料清单内容",fill:'先到"产品型号"页面建好记录再选择'},{name:"合同号",source:"手工填写。",purpose:"标记本工单所属的合同(一个合同对应一个工程编号)",fill:"如 HT-2026-001(可空)"},{name:"工程编号",source:"手工填写。",purpose:"标记本工单所属的工程编号(一个工程编号下挂多个产品序号)",fill:"如 GC-2026-001(可空)"},{name:"产品序号",source:"手工填写。",purpose:"本产品在该工程编号下的序号,用于区分同工程下的不同产品",fill:"如 01、02(可空)"},{name:"产品编号",source:"手工填写。通常与所选产品型号的编码一致。",purpose:"产品唯一编码,用于展示与追溯",fill:"如 METER-01,与产品型号编码对齐"},{name:"产品名称",source:"手工填写。通常与产品型号名称一致。",purpose:"产品中文名,用于展示",fill:"如 智能电表"},{name:"数量",source:"手工填写整数。",purpose:"本工单生产总数量(合同台数),决定需求量与排产上限",fill:"整数 ≥1,如 100"},{name:"工位组合",source:"勾选要经过的工位(工位数以数据库为准)。",purpose:"本工单要经过的工位集合,产线设备按此组合下发控制产线",fill:"勾选要经过的工位即可,系统自动按工位号顺序执行(传送带不回走);半成品再上线可只勾漏做的工位"},{name:"状态",source:'新建时选"已创建",后续由流程推进。',purpose:"工单生命周期:创建→发布→生产→完成",fill:'新建时选"已创建";也可在列表操作列点「状态」快捷流转(发布/开工/完工)'},{name:"完成日期",source:"手工填写,完工时必填。",purpose:"记录工单实际完成日期,用于交付与绩效统计",fill:"完工流转时选择日期,必填"},{name:"创建人",source:"系统自动记录(当前登录账号)。",purpose:"追溯工单由谁创建",fill:"只读,自动带入"}]},{title:'行内"工位组合"维护',overview:`对当前工单快速维护要经过的工位组合。 可自由勾选、补工位(半成品再上线):如本应走第3/5工位却做成半成品,可在此只勾第2工位重上线完成闭环。`,fields:[{name:"工位组合",source:"勾选要经过的工位。",purpose:"本工单经过的工位集合,产线设备组合下发",fill:"勾选即可,按工位号顺序执行;全选=全部工位"}]},{title:"自动排产(引导式)",overview:"列表页「自动排产」按钮:选工单 + 日期区间 + 排产方式,一键把工单未开工数量分摊到多天日排产。",fields:[{name:"日期区间",source:"日历选择起止日期。",purpose:"在哪段时间内排产",fill:"选开始/结束日期"},{name:"排产方式",source:"二选一:平均分摊 / 固定日产。",purpose:"决定每天排多少",fill:"平均分摊=总量÷天数自动均分;固定日产=每天排指定数量,排满为止"},{name:"每日数量",source:"固定日产方式下手工填写。",purpose:"固定每天的生产量",fill:"选固定日产时填写,如每天 20"},{name:"生成",source:"一键生成日排产记录。",purpose:"批量创建该工单的日排产,合计不超过工单未开工数量",fill:"确认后生成,可到「日排产」页查看/调整"}]}]},U={title:"日排产(生产计划)",overview:`日排产 = 安排"哪个工单、在哪天、生产多少",是备料和出库的触发依据。 数据链路:工单(总数) → 日排产(按天拆分量,合计不得超过工单总数) → 仓库按日排产备料出库 → 产线按日生产。 可以按 工单号 / 排产日期 两个维度查询,也可直接新增/编辑/删除排产。`,fields:[{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:"该排产已实际完成多少件",fill:"无需填写"},{name:"状态",source:"系统维护。只读。",purpose:"排产执行状态(待排产/已确认)",fill:"无需填写"},{name:"启用/停用",source:"行内开关。",purpose:"停用后该条排产不参与备料/生产,可临时挂起某天计划",fill:"拨动开关切换;停用的排产不计入备料"}]},X={title:"产品物料清单",overview:`物料清单 = 生产 1 台该产品需要哪些物料、各用多少。 按「产品编号 + 物料清单名称」维护:同一产品编号可并存多份物料清单(选用制)——不同厂家供货、含半成品的结构差异,都用不同的物料清单名称区分(缺省叫「默认」,不用 V1/V2 版本号)。 工单建单时选定其中一份,之后该工单的备料算料、装机绑定校验都锁定这份物料清单,不同厂家的料单互不串。 与 WMS 的关系:本页(MES)只维护「产品由哪几种料、各用几个」;每种物料叫什么、规格、是电气件(SN)还是结构件(批次)、库存有多少,统一在 WMS(库房)的「物料档案」里维护,两套系统互相解耦、通过图号对齐。 编码对应规则:本页的「图号」必须与 WMS 物料档案里的「图号」完全一致;「管理方式」也要对应(电气件=SN 逐件,结构件=批次)。编码对不上,WMS 将无法为对应工单备料/出库。 保护规则:某份物料清单一旦被工单选用过,就不允许再从中移除物料(防止历史工单追溯断链);新建/改名的物料清单名称在本页「物料清单名称」下拉直接输入即可创建。 数据链路:先建「产品型号」→ 到本页选产品编号 + 命名物料清单,逐条添加物料 → 建工单时选定物料清单 → 仓库才能为对应工单领料。`,fields:[{name:"物料清单名称",source:"下拉选择/输入(可搜索,输入新名即创建)。缺省「默认」。",purpose:"同一产品编号下多份物料清单的区分名,工单建单时按此选定",fill:"如「默认」「A厂料单」「含半成品」;同一型号下名称唯一"},{name:"产品编号",source:"下拉选择。来自「产品型号」里建的编码。",purpose:"要为哪个产品配置物料清单",fill:"在查询区或「添加物料」弹窗里选择产品编号"},{name:"图号",source:"手工填写。必须与 WMS(库房) 物料档案的图号一致。",purpose:"该物料在库房的全库唯一编码,两系统靠它关联",fill:"如 螺丝=GJ-LUOSI-M16;图号对不上 WMS 将无法备料"},{name:"物料名称",source:"手工填写。",purpose:"物料中文名,便于识别",fill:"如 十字螺丝、主控芯片"},{name:"规格",source:"手工填写。",purpose:"物料规格型号",fill:"如 M16×80 / SMT-48脚"},{name:"单位",source:"手工填写。",purpose:"计量单位,用于算量",fill:"个 / 件 / 套 / kg"},{name:"管理方式",source:"单选。按物料类型决定,与 WMS 一致。",purpose:"电气件=逐件按SN管理;结构件=按批次管理",fill:'电子件/电气件选"电气件 SN";螺丝等标准件选"结构件 批次"'},{name:"单台用量",source:"手工填写。",purpose:"生产 1 台产品用的该物料数量",fill:"如每台 8 颗螺丝 → 填 8"},{name:"损耗率%",source:"手工填写。",purpose:"考虑报废/损耗的加放比例",fill:"如 2% 填 2;0=不计算损耗"},{name:"需求量",source:"自动计算 = 数量×单台用量×(1+损耗率),可覆盖。",purpose:"该物料总需求,出库不能超它",fill:"一般自动算,不必改"},{name:"相关标准",source:"手工填写/导入带入。",purpose:"该物料对应的检验/工艺标准(如国标、图号标准),供质量检验与流程卡引用",fill:"如 GB/T xxx;可在导入模板中一列填入"},{name:"导入",source:"Excel 模板导入(列表页「导入」按钮)。",purpose:"批量维护物料清单,减少逐条录入",fill:"下载模板→填写→上传,系统预检(编码/管理方式/数值)并提示错误行,确认后入库"}]},J={title:"备料单(按日排产自动算料)",overview:`备料单 = 仓库备料的依据:某天要生产的所有工单,各需要哪些物料、各要多少。 操作方式:① 先到「日排产」排好某天的计划数量;② 回到本页选该「日期」;③ 点「按日排产生成备料」,系统按各产品物料清单自动计算(计划数量 × 单台用量 × (1+损耗率))并生成备料单明细;④ 仓库据此备料出库,由 AGV 配送到各工位。 数据链路:日排产 → 本页按日期自动算料生成备料单 → 仓库出库 → AGV 配送。`,sections:[{title:"生成备料",overview:"按所选日期,取当天所有排产工单,依据各自产品的物料清单自动汇总所需物料。",fields:[{name:"日期",source:"手动选择。",purpose:"按哪个排产日期生成备料",fill:"先选择排产日期,再点「按日排产生成备料」"}]},{title:"查询字段",fields:[{name:"工单号",source:"手动输入。筛选条件。",purpose:"只查看指定工单的备料",fill:"可空,空=看全部工单"},{name:"状态",source:"下拉。待备料/已确认。",purpose:"按备料进度筛选",fill:"可空"}]}]},Z={title:"工位组合下发(下发录入 / 下发记录)",overview:`这个菜单做什么用:把某工单/工件的「工位组合」写入产线设备(如 PLC 控制器),产线传送带据此只停靠勾选的工位,其余工位不加工。 页面分两个页签:「下发录入」(默认打开)、「下发记录」(点击才加载,可按工单号/状态筛选)。 操作流程:选工单号 → 下拉选出该工单已上线未完工的工件 SN(也可扫码/手输) → 系统按工件实际进度自动带出「当前工位」(只读) → 工位组合中 ≤ 当前工位的编号视为已完成,自动剔除且禁选 → 勾选剩余要走的工位 → 下发。 为什么单独一个菜单:产线偶尔需要人工干预——比如本该走 3 号工位却做成了半成品,人工在此只勾剩余工位重上线,完成闭环。 核心约束:系统遵循「上一条未收到完成信号,不下发下一条」,确保产线不串序。 数据链路:工单(含工位组合) → 本页下发到产线设备 → 产线设备驱动传送带/工位 → 收到完成信号再下发下一条。`,fields:[{name:"工单号",source:"下拉选择/输入。来自工单。",purpose:"当前生产的工单,选中后带出该工单可下发的工件 SN",fill:"选择或输入工单号"},{name:"工件SN",source:"下拉选择(该工单已上线未完工的 SN,可搜索),也可扫码枪扫入手输。",purpose:"当前流经的工件唯一序列号",fill:"优先下拉选已上线 SN;扫码手输时须是已上线的工件才能带出当前工位"},{name:"当前工位",source:"自动带出(只读)。按所选工件的实际生产进度识别。",purpose:"从哪一站开始继续下发",fill:"无需填写;未带出说明工件未上线或 SN 有误"},{name:"工位组合",source:"勾选要经过的工位;≤当前工位的编号已禁选(视为完成)。",purpose:"该工件还要经过的工位,产线设备控制停靠",fill:"勾选剩余要走的工位即可,按工位号顺序执行"}]},$={title:"拧紧数据(查询 / 统计 / 审核签字)",overview:`接收丹尼科尔拧紧工具的采集结果(扭矩/角度/时间/结果/操作人),用于质量追溯。 数据接入(TCP 抽象):拧紧枪数据由工位终端采集后自动上报 MES;内置模拟数据源供联调(正式丹尼科尔协议接入后直接插入同一链路,无需改页面)。本页不提供后台手工补录。 一级按「工单号 + SN + 工位」汇总,并按工艺文件自动判定「应拧 vs 实拧」是否满足;点「拧紧结果」进二级明细,逐颗查看并审核签字。`,sections:[{title:"查询条件",overview:"四条件复合取交集,SN / 工单号 不区分大小写。",fields:[{name:"SN / 工单号",source:"手工填写。",purpose:"按工件或工单缩小范围",fill:"可空=全部;不区分大小写"},{name:"工位",source:"手工填写。",purpose:"只看某道工位的拧紧汇总",fill:"如 3,可空"},{name:"日期区间",source:"日期选择器。",purpose:"按采集时间筛选",fill:"选开始/结束日期,含当天"}]},{title:"一级汇总与统计",overview:"每行代表一个工件在某工位的拧紧总体情况。",fields:[{name:"拧紧数量(应拧/实拧)",source:"应拧数来自工艺流程 isTorque 步骤数;实拧数来自拧紧记录。",purpose:"对比工艺要求与实际拧紧颗数",fill:"只读;应拧显示「未配置」表示该工位未绑定含扭矩步骤的工艺"},{name:"合格/不合格",source:"拧紧记录统计。",purpose:"看该工件合格与不合格颗数",fill:"只读;不合格>0 会标红"},{name:"拧紧结果",source:"系统判定:应拧>0 且 实拧>=应拧 且 无不合格 = 满足。",purpose:"一眼判定该工件拧紧是否达标",fill:"点「满足/不满足」链接进入二级明细"},{name:"审核状态",source:"系统统计。分组内全部记录已审核才计已审核。",purpose:"提示检验员是否已完成签字",fill:"只读"}]},{title:"二级明细与审核签字",overview:"抽屉顶部展示应拧/实拧/合格/不合格统计,下方逐颗列出拧紧记录。",fields:[{name:"螺丝号/扭矩/角度/结果",source:"拧紧枪自动采集上报。",purpose:"每颗螺丝的具体拧紧参数与判定",fill:"只读"},{name:"审核签字",source:"检验员操作,写入审核人/时间。",purpose:"两人签字:操作人(采集自动带入) + 审核人(当前登录账号)",fill:"点「审核签字」→ 填审核意见 → 确认;已审核不可重复"},{name:"留痕",source:"系统自动记录 torque_audit_log。",purpose:"展示该记录的审核/修改历史时间线",fill:"点「留痕」查看操作人/动作/改前改后/备注"}]}]},ee={title:"手动报工(工位工序步骤完成上报)",overview:`页面分两个页签:「报工录入」(默认打开)、「报工记录」(点击才加载,分页)。 录入流程:选择工位、扫入/输入工件 SN 后,系统自动载入该工位「启用」工艺流程的工序步骤(扭矩/角度/尺寸等采集项),逐参数录入提交;提交后写报工实绩 + 步骤数据,系统按考核标准自动判定 合格/不合格。 装机绑定:若该产品在本工序配置了需绑定的装配物料(物料清单「装配工位」),会出现装机绑定区——电气件扫 SN、结构件扫/输批次号,逐项绑齐(已绑/需绑)后才允许提交报工;未配置物料则不校验。 数据链路:工艺流程(工序步骤+考核标准) + 物料清单 装机配置 → 本页选工位扫 SN 自动载入 → 绑料+录参数 → 判 合格/不合格 → 工件追溯可见。`,fields:[{name:"工位",source:"下拉选择(工位数以数据库为准)。",purpose:"哪个工位在报工,选择后自动载入该工位的工序步骤",fill:"选择工位 1~12"},{name:"工件SN",source:"扫码枪扫描或手输。来自工件条码。",purpose:"工件的唯一序列号,报工对象",fill:"扫码枪扫入,与工位一起触发自动载入"},{name:"各步骤采集值",source:"手工填写 或 拧紧枪自动带出(视采集方式)。字段由【工艺流程】的工序步骤人为定义。",purpose:"收集该工位的扭矩/角度/尺寸等参数,按标准判定合格与否",fill:"逐条填采集值,未维护标准的步骤仅记录"},{name:"装机绑定(物料/已绑/需绑)",source:"来自物料清单的「装配工位」配置(按工单锁定的物料清单过滤)。",purpose:"该工件本工序应装哪些料;电气件按 SN、结构件按批次绑定,齐套后才允许报工",fill:"在绑定输入框扫码或录入后点「绑定」,绑齐后提交报工"},{name:"报工记录查询(SN / 工单号)",source:"「报工记录」页签筛选条件,分页查看。",purpose:"查历史报工实绩",fill:"可空=全部"}]},se={title:"关联工位(工位总览)",overview:`工位数以数据库为准(仅可修改名称,不增删工位)。本页是工位总览:查看每个工位当前绑定了哪个工艺流程,可修改工位名称。 绑定关系由本页单独维护:在下拉中选择「启用」的工艺流程即绑定到该工位;一个工位只能有一个启用的工艺流程(先停用旧流程再绑新流程);流程停用后自动解绑。 数据链路:关联工位页(选启用流程绑定) → 手动报工/工位终端按该流程的工序步骤采集 → 报工判定 合格/不合格。`,fields:[{name:"工位号",source:"系统固定(工位数以数据库为准),不可增删。",purpose:"产线物理工位编号",fill:"无需填写"},{name:"工位名称",source:"可编辑。默认如 装配工位1。",purpose:"工位的显示名称",fill:"如 一号装配工位"},{name:"绑定工艺流程",source:"自动来自本页:为工位选择「启用」的工艺流程即绑定。",purpose:"该工位执行的工艺流程(决定工序步骤/考核标准/PDF)",fill:"到本页为该工位选择启用流程;本页只读展示"},{name:"虚拟工位 0 / 13",source:"系统预置。工位号 0=上线位、13=下线位。",purpose:"产线进线口建档上线、出料口完工入库,由 PAD 操作,不连 PLC/拧紧枪",fill:"只读;上线位/下线位在工位终端(PAD)用「上线建档」「下线完工」面板操作"}]},le={title:"工件追溯",overview:`输入工件 SN,查它的完整履历:进线/完工时间、各工位时间线、步骤考核数据(扭矩/角度)、拧紧记录、以及它用了哪些批次/电气件。 数据来源:全部由前端各环节自动写入(扫码报工、拧紧采集、产线设备下发、工位完成),本页只读查询。`,fields:[{name:"工件SN",source:"扫码枪/手输。来自工件条码。",purpose:"要追溯的工件唯一序列号",fill:"扫 SN 或手动输入后点查询"}]},oe={title:"账号管理",overview:`管理可登录 MES 的账号:新建、编辑、停用,并为其分配角色(角色决定菜单与按钮权限)。 建议只给操作员分配其工位所需菜单权限。系统内置 admin 账号不可修改/删除。`,sections:[{title:"列表",fields:[{name:"状态",source:"行内开关。",purpose:"停用后该账号无法登录",fill:"直接拨动开关;内置账号(admin)已锁定"},{name:"工位终端/允许工位",source:"账号设置。",purpose:"是否允许登录工位终端及各终端允许的工位号",fill:"未开通=不能登录工位终端;允许工位留空=全部"}]},{title:"新建 / 编辑",fields:[{name:"用户名",source:"手工填写。",purpose:"登录账号,唯一;创建后不可改",fill:"如 operator1"},{name:"密码",source:"手工填写,保存时加密存储。",purpose:"登录密码",fill:"≥6位且不能纯数字;编辑时留空=不修改"},{name:"姓名",source:"手工填写。",purpose:"真实姓名,操作日志追溯用",fill:"如 张三"},{name:"角色",source:'下拉选择。来自"角色管理"页。',purpose:"决定该账号的菜单与功能权限",fill:"选择已建角色"},{name:"状态",source:"下拉选择。",purpose:"停用后无法登录",fill:"启用 / 停用"}]}]},re={title:"角色管理",overview:`角色决定账号能看哪些菜单(勾选菜单)与能用哪些功能(勾选其下按钮),勾选互不影响。 内置角色:超级管理员(全部权限)、生产操作员、质检员——不可删除;超级管理员权限不可编辑。`,sections:[{title:"新增 / 编辑权限",fields:[{name:"角色名称",source:"手工填写。",purpose:"角色中文名",fill:"如 库房管理员"},{name:"角色编码",source:"手工填写。",purpose:"角色唯一编码,创建后不可改",fill:"如 intro-manager"},{name:"权限树",source:"勾选。来自系统预置的权限菜单与按钮。",purpose:"决定该角色可见菜单与可用按钮",fill:"勾选菜单=可见;勾选按钮=可用(两者独立)"}]}]},ne={title:"操作日志",overview:`审计查看关键业务操作(工单/日排产/物料清单/备料/下发/拧紧/扫码报工/完工等),由系统自动写入,本页只读。 支持按业务域类型、工单号、操作人、时间范围筛选,分页查看。`,sections:[{title:"查询区",fields:[{name:"事件类型",source:"下拉。",purpose:"按业务域过滤(工单/日排产/报工…)",fill:"选一族或留空=全部"},{name:"工单号",source:"输入。",purpose:"只看某工单的全部操作",fill:"可空=全部"},{name:"操作人",source:"输入。",purpose:"只看某人的操作",fill:"可空=全部"},{name:"时间范围",source:"日历选择。",purpose:"限定发生时间区间",fill:"不选=全部时间"}]}]},ie={title:"工艺流程(作业指导,含工序步骤)",overview:`页面分「流程列表」「流程配置」两个页签:列表查看全部流程并做启用/停用/删除;配置页维护流程基本信息与工序步骤(新增与编辑共用,不再弹窗套弹窗)。 工艺流程 = 一份「菜谱」:只描述某个产品该怎么装配(步骤名、采集方式、考核标准),不绑定具体工位。 概念统一说明: · 工位:产线上的物理工位(工位数以数据库为准,仅改名称不增删),相当于「灶台」。 · 工艺流程:一份作业指导,可有多版本(如 总装流程_2026版);其启用状态决定是否参与生产。 · 工序步骤:流程内包含多个工序步骤(如:装配完成、拧紧扭矩、测试)。 绑定关系在「关联工位」页维护:在该页为某工位选择启用的工艺流程即绑定;一个工位只能有一个启用的流程。手动报工/工位终端按所选工位的绑定流程载入工序步骤。 数据链路:本页维护流程+工序步骤+考核标准 → 关联工位页绑定 → 手动报工/工位终端按工序步骤采集 → 报工按考核标准自动判 合格/不合格 → 工件追溯/绩效报表可见。`,sections:[{title:"流程基本信息",fields:[{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:"在步骤行上传该步骤图纸/附件(可多个);随工序自动分发到工位终端"}]},{title:"采集方式(每个工序步骤三选一)",overview:"决定该步骤的数值从哪里来。",fields:[{name:"拧紧枪自动",source:"拧紧枪设备自动回传。",purpose:"扭矩/角度等由拧紧枪采集,工人无需手输",fill:"选「拧紧枪自动」,并在「是否拧紧」打开开关"},{name:"手填",source:"工人在工位终端/报工页手动输入数值。",purpose:"无法自动采集的参数(如尺寸、电压)由人工录入",fill:"选「手填」"},{name:"仅记录",source:'无数据,只做操作步骤确认(如"装配完成")。',purpose:"记录该步骤已执行,不采集数值、不判定",fill:"选「仅记录」"}]},{title:"考核标准(每个步骤可设多条)",overview:"用于报工时自动判定该步骤「合格/不合格」。在哪用:工位终端/手动报工提交该步骤数值时,系统按此标准判 合格/不合格,结果进入工件追溯与流程卡。如何收集:数值来自上面的采集方式(拧紧枪自动或手填)。",fields:[{name:"指标名",source:"人为定义。",purpose:"标准叫什么(如 扭矩/角度/尺寸)",fill:"如 扭矩"},{name:"单位",source:"人为填写。",purpose:"数值单位",fill:"如 N·m、°、mm"},{name:"逻辑",source:"下拉选择 ≥/≤/>/