Files
bj_power/bj_power_mes/public_bak_20260918215750/assets/Trace-DeE3yuYq.js
T
SunYF 37f10d3a13 refactor: 重构产线工位与备料流程,移除冗余字段
1. 移除工单、工件、日排产中的冗余工位组合/接驳台字段
2. 新增工位接驳台编码字段与唯一约束,关联WMS接驳台主数据
3. 重构日排产为工位产量分配模式,替代原接驳台列表
4. 新增备料单工位级字段与分批出库支持
5. 移除定时同步可生产数量,改为WMS实时拉取接口
6. 过滤操作日志,排除登录/退出相关日志
7. 调整仪表盘工序展示逻辑为今日派工路线
8. 新增接驳台维护菜单与基础数据
2026-09-19 07:50:21 +08:00

5 lines
6.6 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import{c as x,a as e,w as t,k as J,F as S,r as i,o as c,g as Q,f as u,n as f,p as w,t as n,m as W,d as j,h as q,i as A,v as X}from"./index-CeNpw27z.js";import{o as Y}from"./print-CSppA1Xz.js";import{n as Z,P as ee}from"./help-92MqPoF4.js";const re={__name:"Trace",setup(te){const d=A(""),l=A(null),g=A("");async function V(){if(d.value){g.value="",l.value=null;try{l.value=await q.get("/trace",{params:{sn:d.value}})}catch(p){g.value=p.message||"查询失败"}}}async function z(){if(!d.value)return;let p=[];try{const s=await q.get("/process-card",{params:{sn:d.value,check:1}});p=(s==null?void 0:s.missing)||[]}catch{}if(p.length)try{await X.confirm(`以下数据不完整,是否继续打印?
${p.map(s=>"· "+s).join(`
`)}`,"打印流程卡",{type:"warning",confirmButtonText:"继续打印",cancelButtonText:"取消"})}catch{return}await Y("/process-card",{sn:d.value})}function I(p){return{CREATED:"已创建",ONLINE:"生产中",DONE:"已完工",SCRAPPED:"已报废"}[p]||p||"-"}function v(p){return p?String(p).replace("T"," ").slice(0,19):"-"}return(p,s)=>{const R=i("el-input"),k=i("el-form-item"),B=i("el-button"),F=i("el-form"),T=i("el-alert"),_=i("el-descriptions-item"),H=i("el-descriptions"),L=i("el-timeline-item"),G=i("el-timeline"),y=i("el-tab-pane"),r=i("el-table-column"),M=i("el-tag"),C=i("el-table"),U=i("el-tabs"),$=i("el-card");return c(),x(S,null,[e($,null,{default:t(()=>[e(F,{inline:""},{default:t(()=>[e(k,{label:"工件SN"},{default:t(()=>[e(R,{modelValue:d.value,"onUpdate:modelValue":s[0]||(s[0]=a=>d.value=a),style:{width:"220px"},placeholder:"输入SN查询追溯",onKeyup:Q(V,["enter"])},null,8,["modelValue"])]),_:1}),e(k,null,{default:t(()=>[e(B,{type:"primary",onClick:V},{default:t(()=>[...s[1]||(s[1]=[u("追溯查询",-1)])]),_:1})]),_:1}),e(k,null,{default:t(()=>[e(B,{type:"warning",disabled:!d.value,onClick:z},{default:t(()=>[...s[2]||(s[2]=[u("打印流程卡",-1)])]),_:1},8,["disabled"])]),_:1})]),_:1}),g.value?(c(),f(T,{key:0,title:g.value,type:"error","show-icon":"",closable:"",style:{"margin-bottom":"10px"}},null,8,["title"])):w("",!0),l.value?(c(),x(S,{key:1},[e(H,{column:4,border:"",style:{"margin-bottom":"12px"},title:"工件信息"},{default:t(()=>{var a,m,h,N,b;return[e(_,{label:"工件SN"},{default:t(()=>{var o;return[u(n((o=l.value.workpiece)==null?void 0:o.sn),1)]}),_:1}),e(_,{label:"所属工单"},{default:t(()=>{var o;return[u(n((o=l.value.workpiece)==null?void 0:o.orderNo),1)]}),_:1}),(a=l.value.workpiece)!=null&&a.productCode||(m=l.value.order)!=null&&m.productCode?(c(),f(_,{key:0,label:"产品型号"},{default:t(()=>{var o,E,P,D,K,O;return[u(n(((o=l.value.workpiece)==null?void 0:o.productCode)||((E=l.value.order)==null?void 0:E.productCode))+n((P=l.value.workpiece)!=null&&P.productName||(D=l.value.order)!=null&&D.productName?""+(((K=l.value.workpiece)==null?void 0:K.productName)||((O=l.value.order)==null?void 0:O.productName))+"":""),1)]}),_:1})):w("",!0),e(_,{label:"状态"},{default:t(()=>{var o;return[u(n(I((o=l.value.workpiece)==null?void 0:o.status)),1)]}),_:1}),(h=l.value.workpiece)!=null&&h.currentProcess?(c(),f(_,{key:1,label:"当前工位"},{default:t(()=>{var o;return[u(n((o=l.value.workpiece)==null?void 0:o.currentProcess),1)]}),_:1})):w("",!0),(N=l.value.workpiece)!=null&&N.onlineAt?(c(),f(_,{key:2,label:"进线时间"},{default:t(()=>{var o;return[u(n(v((o=l.value.workpiece)==null?void 0:o.onlineAt)),1)]}),_:1})):w("",!0),(b=l.value.workpiece)!=null&&b.doneAt?(c(),f(_,{key:3,label:"完工时间"},{default:t(()=>{var o;return[u(n(v((o=l.value.workpiece)==null?void 0:o.doneAt)),1)]}),_:1})):w("",!0)]}),_:1}),e(T,{type:"info",closable:!1,style:{"margin-bottom":"12px"},title:"追溯链路:产品型号(物)→ 工单(批次任务)→ 工件(实例SN)。本页展示单个工件的完整生命周期。"}),e(U,null,{default:t(()=>[e(y,{label:"工位时间线"},{default:t(()=>[e(G,null,{default:t(()=>[(c(!0),x(S,null,W(l.value.processTimeline||[],a=>(c(),f(L,{key:a.id,timestamp:a.operator?a.operator+" · "+v(a.endedAt):v(a.endedAt),type:a.result==="NG"?"danger":"success"},{default:t(()=>[u(n(a.processName)+"(工位 "+n(a.stationNo||a.processCode)+")— "+n(a.result),1)]),_:2},1032,["timestamp","type"]))),128))]),_:1})]),_:1}),e(y,{label:"步骤考核数据"},{default:t(()=>[e(C,{data:l.value.stepData||[],border:"",size:"small"},{default:t(()=>[e(r,{prop:"stepName",label:"步骤","min-width":"110"}),e(r,{prop:"criterionName",label:"考核项","min-width":"110"}),e(r,{prop:"value",label:"数值",width:"100"}),e(r,{prop:"isOK",label:"合格",width:"80"},{default:t(({row:a})=>[e(M,{type:a.isOK?"success":"danger"},{default:t(()=>[u(n(a.isOK?"合格":"不合格"),1)]),_:2},1032,["type"])]),_:1}),e(r,{prop:"operator",label:"操作人",width:"90"})]),_:1},8,["data"])]),_:1}),e(y,{label:"拧紧数据"},{default:t(()=>[e(C,{data:l.value.torqueRecords||[],border:"",size:"small"},{default:t(()=>[e(r,{prop:"stationNo",label:"工位",width:"80"}),e(r,{prop:"torque",label:"扭矩",width:"100"}),e(r,{prop:"angle",label:"角度",width:"90"}),e(r,{prop:"result",label:"结果",width:"80"}),e(r,{prop:"operator",label:"操作人",width:"90"}),e(r,{prop:"time",label:"时间","min-width":"160"})]),_:1},8,["data"])]),_:1}),e(y,{label:"成品关联"},{default:t(()=>{var a,m;return[j("p",null,"批次号:"+n((((a=l.value.associationTrace)==null?void 0:a.batchItems)||[]).join(", ")||"无"),1),j("p",null,"电气件SN"+n((((m=l.value.associationTrace)==null?void 0:m.serialItems)||[]).join(", ")||"无"),1)]}),_:1}),e(y,{label:"装机绑定"},{default:t(()=>{var a,m,h,N;return[e(T,{type:(a=l.value.bindTrace)!=null&&a.complete?"success":"warning",closable:!1,style:{"margin-bottom":"10px"},title:(m=l.value.bindTrace)!=null&&m.complete?"装配物料已全部绑齐 ✓":"装配物料未绑齐:"+(((h=l.value.bindTrace)==null?void 0:h.missing)||""),"show-icon":""},null,8,["type","title"]),e(C,{data:((N=l.value.bindTrace)==null?void 0:N.binds)||[],border:"",size:"small"},{default:t(()=>[e(r,{prop:"processCode",label:"工序",width:"70"}),e(r,{prop:"materialCode",label:"图号","min-width":"110"}),e(r,{prop:"materialName",label:"物料名称","min-width":"110"}),e(r,{prop:"spec",label:"规格","min-width":"90"}),e(r,{prop:"bindType",label:"类型",width:"70"},{default:t(({row:b})=>[u(n(b.bindType==="SN"?"电气件SN":"批次"),1)]),_:1}),e(r,{prop:"bindValue",label:"绑定值(SN/批次)","min-width":"140"}),e(r,{prop:"operator",label:"绑定人",width:"90"}),e(r,{prop:"createdAt",label:"绑定时间","min-width":"165"},{default:t(({row:b})=>[u(n(v(b.createdAt)),1)]),_:1})]),_:1},8,["data"])]}),_:1})]),_:1})],64)):w("",!0)]),_:1}),e(ee,{data:J(Z),page:"Trace"},null,8,["data"])],64)}}};export{re as default};