1. 移除工单、工件、日排产中的冗余工位组合/接驳台字段 2. 新增工位接驳台编码字段与唯一约束,关联WMS接驳台主数据 3. 重构日排产为工位产量分配模式,替代原接驳台列表 4. 新增备料单工位级字段与分批出库支持 5. 移除定时同步可生产数量,改为WMS实时拉取接口 6. 过滤操作日志,排除登录/退出相关日志 7. 调整仪表盘工序展示逻辑为今日派工路线 8. 新增接驳台维护菜单与基础数据
2 lines
5.5 KiB
JavaScript
2 lines
5.5 KiB
JavaScript
import{j as G,h as v,c as C,a as e,w as t,k as T,F as V,i as _,r as s,o as p,m as U,n as N,f as c,t as S,p as J,l as z,x as K,E as y}from"./index-CeNpw27z.js";import{c as Q}from"./perm-DCTK2KrM.js";import{d as W,P as X}from"./help-92MqPoF4.js";import{P as Y}from"./ProcessSeqPicker-Ai-sBBs6.js";import"./stations-DTFB--m9.js";const ae={__name:"PlcSend",setup(Z){const h=_("send"),a=z({orderNo:"",sn:"",stationNo:0,processCombination:""}),m=z({orderNo:"",status:""}),w=_([]),P=_([]),g=_([]),u=_(0),q=n=>n==="DONE"?"已完成":"已下发",B=K(()=>u.value?Array.from({length:u.value},(n,l)=>l+1):[]);function L(){if(u.value=0,!a.sn)return;const n=g.value.find(b=>b.sn===a.sn),l=Number((n==null?void 0:n.currentProcess)||(n==null?void 0:n.currentStation)||0);if(u.value=l,l>0&&a.processCombination){const b=String(a.processCombination).split(",").map(Number).filter(d=>d>l).sort((d,f)=>d-f);a.processCombination=b.join(",")}}async function j(){if(a.sn="",u.value=0,g.value=[],!a.orderNo)return;const n=await v.get("/workpieces",{params:{orderNo:a.orderNo}})||[];g.value=n.filter(l=>l.status!=="DONE"&&l.status!=="SCRAPPED")}async function A(){if(!a.orderNo||!a.processCombination)return y.warning("请选择工单号和工位组合");if(!a.sn)return y.warning("请选择/扫码输入该工单下的工件 SN");if(!u.value)return y.warning("未识别到工件当前工位,请先选择已上线工件的 SN");a.stationNo=u.value;try{await v.post("/plc/send-process",{...a}),y.success("工位码下发成功(未收到完成信号不会下发下一条)"),a.processCombination=""}catch{}}async function x(){w.value=await v.get("/plc/send-logs",{params:m})||[]}function F(n){n==="logs"&&!w.value.length&&x()}return G(async()=>{P.value=await v.get("/work-orders")||[]}),(n,l)=>{const b=s("el-alert"),d=s("el-option"),f=s("el-select"),i=s("el-form-item"),k=s("el-tag"),E=s("el-form"),O=s("el-button"),D=s("el-tab-pane"),M=s("el-input"),r=s("el-table-column"),H=s("el-table"),I=s("el-tabs"),R=s("el-card");return p(),C(V,null,[e(R,null,{default:t(()=>[e(b,{type:"info",closable:!1,style:{"margin-bottom":"12px"},title:"工位组合下发:把某工单/工件要经过的「工位组合」写入产线设备(如 PLC 控制器),产线传送带据此只停靠对应工位。系统保证「上一条未收到完成信号前不下发下一条」,避免串序。"}),e(I,{modelValue:h.value,"onUpdate:modelValue":l[5]||(l[5]=o=>h.value=o),onTabChange:F},{default:t(()=>[e(D,{label:"下发录入",name:"send"},{default:t(()=>[e(E,{inline:""},{default:t(()=>[e(i,{label:"工单号"},{default:t(()=>[e(f,{modelValue:a.orderNo,"onUpdate:modelValue":l[0]||(l[0]=o=>a.orderNo=o),filterable:"","allow-create":"",clearable:"",placeholder:"请选择/输入工单号",style:{width:"200px"},onChange:j},{default:t(()=>[(p(!0),C(V,null,U(P.value,o=>(p(),N(d,{key:o.workOrderNo,label:o.workOrderNo,value:o.workOrderNo},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1}),e(i,{label:"工件SN"},{default:t(()=>[e(f,{modelValue:a.sn,"onUpdate:modelValue":l[1]||(l[1]=o=>a.sn=o),filterable:"","allow-create":"",clearable:"",placeholder:"选该工单已上线SN,或扫码手输",style:{width:"220px"},onChange:L},{default:t(()=>[(p(!0),C(V,null,U(g.value,o=>(p(),N(d,{key:o.sn,label:o.sn,value:o.sn},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1}),e(i,{label:"当前工位"},{default:t(()=>[u.value>0?(p(),N(k,{key:0,type:"success",size:"large"},{default:t(()=>[c("工位 "+S(u.value),1)]),_:1})):(p(),N(k,{key:1,type:"info",size:"large"},{default:t(()=>[...l[6]||(l[6]=[c("未带出(选择 SN 后自动识别)",-1)])]),_:1}))]),_:1})]),_:1}),e(i,{label:"工位组合"},{default:t(()=>[e(Y,{modelValue:a.processCombination,"onUpdate:modelValue":l[2]||(l[2]=o=>a.processCombination=o),"disabled-codes":B.value},null,8,["modelValue","disabled-codes"])]),_:1}),e(i,null,{default:t(()=>[T(Q)("produce.plc:send")?(p(),N(O,{key:0,type:"primary",onClick:A},{default:t(()=>[...l[7]||(l[7]=[c("下发工位码",-1)])]),_:1})):J("",!0)]),_:1})]),_:1}),e(D,{label:"下发记录",name:"logs",lazy:""},{default:t(()=>[e(E,{inline:""},{default:t(()=>[e(i,{label:"工单号"},{default:t(()=>[e(M,{modelValue:m.orderNo,"onUpdate:modelValue":l[3]||(l[3]=o=>m.orderNo=o),clearable:"",style:{width:"160px"},placeholder:"不区分大小写"},null,8,["modelValue"])]),_:1}),e(i,{label:"状态"},{default:t(()=>[e(f,{modelValue:m.status,"onUpdate:modelValue":l[4]||(l[4]=o=>m.status=o),clearable:"",placeholder:"全部",style:{width:"120px"}},{default:t(()=>[e(d,{label:"已下发",value:"SENT"}),e(d,{label:"已完成",value:"DONE"})]),_:1},8,["modelValue"])]),_:1}),e(i,null,{default:t(()=>[e(O,{onClick:x},{default:t(()=>[...l[8]||(l[8]=[c("刷新",-1)])]),_:1})]),_:1})]),_:1}),e(H,{data:w.value,border:"",size:"small"},{default:t(()=>[e(r,{prop:"id",label:"ID",width:"60"}),e(r,{prop:"orderNo",label:"工单号","min-width":"130"}),e(r,{prop:"sn",label:"SN","min-width":"130"}),e(r,{prop:"stationNo",label:"工位",width:"70"}),e(r,{prop:"processCombination",label:"工位组合",width:"140"}),e(r,{label:"状态",width:"90"},{default:t(({row:o})=>[e(k,{type:o.status==="DONE"?"success":"warning",size:"small"},{default:t(()=>[c(S(q(o.status)),1)]),_:2},1032,["type"])]),_:1}),e(r,{prop:"ack",label:"完成",width:"70"},{default:t(({row:o})=>[c(S(o.ack?"是":"否"),1)]),_:1}),e(r,{prop:"sendTime",label:"下发时间",width:"170"}),e(r,{prop:"doneTime",label:"完成时间",width:"170"}),e(r,{prop:"operator",label:"操作人",width:"90"})]),_:1},8,["data"])]),_:1})]),_:1},8,["modelValue"])]),_:1}),e(X,{data:T(W),page:"PlcSend"},null,8,["data"])],64)}}};export{ae as default};
|