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

2 lines
9.4 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{j as le,c as v,a as e,w as n,k as I,F as $,i as c,l as Q,E as _,h as V,r as d,o,m as A,n as u,f as y,p as b,d as w,t as g,B as te,g as ae}from"./index-CeNpw27z.js";import{c as ne}from"./perm-DCTK2KrM.js";import{m as oe,P as se}from"./help-92MqPoF4.js";import{l as ie}from"./stations-DTFB--m9.js";const re={slot:"header",style:{display:"flex","justify-content":"space-between","align-items":"center"}},ue={key:1},de={key:1,style:{color:"#909399"}},pe={slot:"header",style:{display:"flex","justify-content":"space-between","align-items":"center"}},me={key:0,style:{color:"#909399"}},ce={style:{display:"flex",gap:"4px"}},be={__name:"Scan",setup(fe){const L=c("entry"),U=c(1),O=c(20),G=c(0),s=Q({stationNo:1,sn:""}),f=c([]),T=c(""),J=c(!1),r=c(null),E=c(!1),x=Q({sn:"",orderNo:""}),q=c([]),K=c([]);function W(t){switch(t.logic){case"GE":return` ≥${t.target}${t.unit}`;case"LE":return` ≤${t.target}${t.unit}`;case"GT":return` >${t.target}${t.unit}`;case"LT":return` <${t.target}${t.unit}`;case"RANGE":return` [${t.min},${t.max}]${t.unit}`;case"EQUAL":return` =${t.target}${t.unit}`;default:return t.name||""}}async function B(){if(!s.sn)return _.warning("请先输入工件SN");r.value=null;try{const t=await V.get("/process-steps",{params:{stationNo:s.stationNo}})||[];f.value=t.map(a=>({...a,value:"",text:""})),T.value="",f.value.length||_.warning(`工位${s.stationNo} 未配置启用的工艺流程,请到「工艺流程」维护`),F()}catch{f.value=[]}}async function F(){if(s.sn)try{const t=await V.get("/bind-panel",{params:{sn:s.sn,processCode:s.stationNo}})||null;t!=null&&t.required&&t.required.forEach(a=>{a._input=""}),r.value=t}catch{r.value=null}}async function R(t){const a=(t._input||"").trim();if(!a)return _.warning("请先输入绑定值(电气件扫码SN / 结构件批次号)");E.value=!0;try{await V.post("/binds",{sn:s.sn,orderNo:"",processCode:s.stationNo,stationNo:s.stationNo,items:[{materialCode:t.materialCode,bindValue:a}]}),_.success("绑定成功"),F()}catch{}E.value=!1}async function X(){var a,S;if(!s.sn)return _.warning("请输入SN");if(!f.value.length)return _.warning("该工位未配置工艺步骤,无法报工");if((a=r.value)!=null&&a.enabled&&!((S=r.value)!=null&&S.complete))return _.warning("装配物料未绑齐,请先完成装机绑定:"+(r.value.missing||""));const t=f.value.filter(m=>m.collectType!=="NONE"&&(m.text!==""||m.value!=="")).map(m=>({stepId:m.id,name:m.name,value:Number(m.value)||0,text:m.text||String(m.value||"")}));await V.post("/workpiece/process/report",{sn:s.sn,processCode:s.stationNo,stationNo:s.stationNo,steps:t}),_.success("报工成功"),f.value=[],r.value=null,Object.assign(s,{sn:""}),C()}async function C(){const t=await V.get("/scan/records",{params:{...x,page:U.value,pageSize:O.value}});q.value=(t==null?void 0:t.list)||[],G.value=(t==null?void 0:t.total)||0}function Y(t){t==="records"&&!q.value.length&&C()}return le(async()=>{K.value=await ie(),s.stationNo&&B()}),(t,a)=>{const S=d("el-option"),m=d("el-select"),N=d("el-form-item"),k=d("el-input"),h=d("el-tag"),D=d("el-form"),M=d("el-button"),i=d("el-table-column"),P=d("el-table"),j=d("el-card"),z=d("el-alert"),H=d("el-tab-pane"),Z=d("el-pagination"),ee=d("el-tabs");return o(),v($,null,[e(j,null,{default:n(()=>[e(ee,{modelValue:L.value,"onUpdate:modelValue":a[5]||(a[5]=l=>L.value=l),onTabChange:Y},{default:n(()=>[e(H,{label:"报工录入",name:"entry"},{default:n(()=>[e(D,{inline:""},{default:n(()=>[e(N,{label:"工位"},{default:n(()=>[e(m,{modelValue:s.stationNo,"onUpdate:modelValue":a[0]||(a[0]=l=>s.stationNo=l),placeholder:"请选择工位",style:{width:"120px"},onChange:B},{default:n(()=>[(o(!0),v($,null,A(K.value,l=>(o(),u(S,{key:l,value:l,label:`工位${l}`},null,8,["value","label"]))),128))]),_:1},8,["modelValue"])]),_:1}),e(N,{label:"工件SN"},{default:n(()=>[e(k,{modelValue:s.sn,"onUpdate:modelValue":a[1]||(a[1]=l=>s.sn=l),placeholder:"扫码或手输",style:{width:"190px"},onChange:B},null,8,["modelValue"])]),_:1}),e(N,null,{default:n(()=>[f.value.length?(o(),u(h,{key:0,type:"success",size:"small"},{default:n(()=>[...a[6]||(a[6]=[y("已自动载入当前工位应做步骤",-1)])]),_:1})):b("",!0)]),_:1})]),_:1}),f.value.length?(o(),u(j,{key:0,shadow:"never",style:{"margin-bottom":"12px"}},{default:n(()=>[w("div",re,[w("b",null,"工位 "+g(s.stationNo)+" 参数采集"+g(T.value?""+T.value+"":""),1),I(ne)("produce.scan")?(o(),u(M,{key:0,type:"primary",size:"small",loading:J.value,onClick:X},{default:n(()=>[...a[7]||(a[7]=[y("提交报工",-1)])]),_:1},8,["loading"])):b("",!0)]),e(P,{data:f.value,border:"",size:"small"},{default:n(()=>[e(i,{prop:"seq",label:"步骤",width:"60",align:"center"}),e(i,{prop:"name",label:"步骤名称","min-width":"130"}),e(i,{label:"采集方式",width:"130",align:"center"},{default:n(({row:l})=>[l.collectType==="AUTO"?(o(),u(h,{key:0,type:"warning",size:"small"},{default:n(()=>[...a[8]||(a[8]=[y("拧紧枪自动",-1)])]),_:1})):l.collectType==="MANUAL"?(o(),u(h,{key:1,type:"primary",size:"small"},{default:n(()=>[...a[9]||(a[9]=[y("手填",-1)])]),_:1})):(o(),u(h,{key:2,type:"info",size:"small"},{default:n(()=>[...a[10]||(a[10]=[y("仅记录",-1)])]),_:1}))]),_:1}),e(i,{label:"采集值","min-width":"180"},{default:n(({row:l})=>[l.collectType!=="NONE"?(o(),u(k,{key:0,modelValue:l.value,"onUpdate:modelValue":p=>l.value=p,placeholder:"采集值(可空)",style:{width:"130px"}},null,8,["modelValue","onUpdate:modelValue"])):(o(),v("span",ue,"-"))]),_:1}),e(i,{label:"判定标准","min-width":"200"},{default:n(({row:l})=>[l.criteria.length?(o(!0),v($,{key:0},A(l.criteria,p=>(o(),u(h,{key:p.id,size:"small",style:{"margin-right":"4px"}},{default:n(()=>[y(g(p.name)+g(W(p)),1)]),_:2},1024))),128)):(o(),v("span",de,"未设标准"))]),_:1})]),_:1},8,["data"])]),_:1})):b("",!0),r.value?(o(),u(j,{key:1,shadow:"never",style:{"margin-bottom":"12px","border-color":"var(--el-color-primary)"}},{default:n(()=>[w("div",pe,[w("b",null,"装配工位 "+g(s.stationNo)+" 装机绑定(装配物料)",1),r.value.enabled&&!r.value.complete?(o(),u(z,{key:0,type:"warning",closable:!1,"show-icon":"",style:{flex:"1","margin-left":"16px"},title:"尚未绑齐:"+r.value.missing},null,8,["title"])):r.value.enabled&&r.value.complete?(o(),u(z,{key:1,type:"success",closable:!1,"show-icon":"",style:{flex:"1","margin-left":"16px"},title:"装配物料已绑齐,可提交报工"})):(o(),u(z,{key:2,type:"info",closable:!1,style:{flex:"1","margin-left":"16px"},title:"该产品未在当前装配工位配置需绑定物料(物料清单「装配工位」为空),不校验"}))]),r.value.required&&r.value.required.length?(o(),u(P,{key:0,data:r.value.required,border:"",size:"small"},{default:n(()=>[e(i,{prop:"materialCode",label:"图号","min-width":"110"}),e(i,{prop:"materialName",label:"物料名称","min-width":"120"}),e(i,{prop:"manageMode",label:"管理方式",width:"120"},{default:n(({row:l})=>[y(g(l.manageMode==="2"?"电气件(SN)":"结构件(批次)"),1)]),_:1}),e(i,{label:"已绑/需绑",width:"100",align:"center"},{default:n(({row:l})=>[w("b",{style:te({color:l.complete?"var(--el-color-success)":"var(--el-color-danger)"})},g(l.boundCount)+"/"+g(l.need),5)]),_:1}),e(i,{label:"已绑定值","min-width":"170"},{default:n(({row:l})=>[(o(!0),v($,null,A(l.bound,p=>(o(),u(h,{key:p,size:"small",style:{"margin-right":"4px"}},{default:n(()=>[y(g(p),1)]),_:2},1024))),128)),l.bound.length?b("",!0):(o(),v("span",me,"未绑定"))]),_:1}),e(i,{label:"绑定操作",width:"230"},{default:n(({row:l})=>[w("div",ce,[e(k,{modelValue:l._input,"onUpdate:modelValue":p=>l._input=p,placeholder:l.manageMode==="2"?"扫码SN":"扫码/输入批次号",size:"small",onKeyup:ae(p=>R(l),["enter"])},null,8,["modelValue","onUpdate:modelValue","placeholder","onKeyup"]),e(M,{size:"small",type:"primary",loading:E.value,onClick:p=>R(l)},{default:n(()=>[...a[11]||(a[11]=[y("绑定",-1)])]),_:1},8,["loading","onClick"])])]),_:1})]),_:1},8,["data"])):b("",!0)]),_:1})):b("",!0),!f.value.length&&!r.value?(o(),u(z,{key:2,type:"info",closable:!1,title:"请选择工位、输入SN后点【载入工艺步骤】;若提示未配置工序步骤,请到「工艺流程」为该工位启用流程并维护工艺步骤"})):b("",!0)]),_:1}),e(H,{label:"报工记录",name:"records",lazy:""},{default:n(()=>[e(D,{inline:""},{default:n(()=>[e(N,{label:"SN"},{default:n(()=>[e(k,{modelValue:x.sn,"onUpdate:modelValue":a[2]||(a[2]=l=>x.sn=l),clearable:"",style:{width:"160px"}},null,8,["modelValue"])]),_:1}),e(N,{label:"工单号"},{default:n(()=>[e(k,{modelValue:x.orderNo,"onUpdate:modelValue":a[3]||(a[3]=l=>x.orderNo=l),clearable:"",style:{width:"160px"}},null,8,["modelValue"])]),_:1}),e(N,null,{default:n(()=>[e(M,{onClick:C},{default:n(()=>[...a[12]||(a[12]=[y("刷新",-1)])]),_:1})]),_:1})]),_:1}),e(P,{data:q.value,border:"",size:"small"},{default:n(()=>[e(i,{prop:"sn",label:"SN","min-width":"130"}),e(i,{prop:"orderNo",label:"工单号","min-width":"130"}),e(i,{prop:"station",label:"工位",width:"80"}),e(i,{prop:"type",label:"类型",width:"110"}),e(i,{prop:"processCode",label:"工位号",width:"80"}),e(i,{prop:"operator",label:"操作人",width:"90"}),e(i,{prop:"time",label:"时间","min-width":"170"})]),_:1},8,["data"]),e(Z,{style:{"margin-top":"12px","justify-content":"flex-end"},background:"",layout:"total, prev, pager, next",total:G.value,"page-size":O.value,"current-page":U.value,"onUpdate:currentPage":a[4]||(a[4]=l=>U.value=l),onCurrentChange:C},null,8,["total","page-size","current-page"])]),_:1})]),_:1},8,["modelValue"])]),_:1}),e(se,{data:I(oe),page:"Scan"},null,8,["data"])],64)}}};export{be as default};