- MES(B): 工单/BOM/备料/工序字典/PLC下发/拧紧/扫码报工/半成品/AGV/追溯逻辑,WMS与海康RCS客户端,看板Redis缓存API(概览/设备/进度/报警/趋势)+SSE - WMS(C): JWT滑动续签、Excel导入、盘点、内部API、种子数据、独立Postgres配置 - WMS客户端(E): Go网关8891反向代理+内嵌Vue3十页 - 工位终端(D): SQLite本地缓存+模拟拧紧源+内嵌Vue3页面 - Dashboard(A): 看板数据改接MES内部缓存API,SSE实时刷新+vite代理 - 清理各项目球形磨遗留代码,新增部署手册.md
2 lines
8.7 KiB
JavaScript
2 lines
8.7 KiB
JavaScript
import{_ as ue,i as ie,D as b,w as a,h as d,r as u,o as s,a as t,c as N,F as k,k as q,f as c,l as H,e as se,H as re,d as x,t as $,g as P,E as g,I as j}from"./index-VJa6cW1h.js";import{r as z}from"./request-43HjEGU6.js";const de={style:{"margin-bottom":"8px"}},pe={style:{"margin-top":"12px"}},me={style:{"margin-top":"12px"}},ce={__name:"Inbound",setup(fe){const S=d([]),D=d([]);ie(async()=>{const[o,e]=await Promise.all([z.get("/material/list"),z.get("/zone/list")]);S.value=Array.isArray(o)?o:(o==null?void 0:o.list)||[],D.value=Array.isArray(e)?e:(e==null?void 0:e.list)||[]});const M=d(),U=d(!1),E=d(""),n=P({materialCode:"",batchNo:"",quantity:1,zoneCode:"",productionDate:"",supplier:""}),G={materialCode:[{required:!0,message:"请选择物料",trigger:"change"}],quantity:[{required:!0,message:"请输入数量",trigger:"blur"}]};async function J(){if(await M.value.validate(),!n.quantity||n.quantity<=0){g.warning("数量必须大于 0");return}U.value=!0;try{const o=await z.post("/inbound/create",{inboundType:"purchase",materialCode:n.materialCode,batchNo:n.batchNo.trim(),quantity:n.quantity,zoneCode:n.zoneCode,productionDate:n.productionDate,supplier:n.supplier.trim(),operator:j()});E.value=(o==null?void 0:o.inboundNo)||"",g.success(`入库成功:入库单号 ${(o==null?void 0:o.inboundNo)||""},数量 ${(o==null?void 0:o.quantity)??n.quantity}`),n.batchNo="",n.quantity=1}finally{U.value=!1}}const C=d(""),F=d(!1),r=d([]),v=P({materialCode:"",zoneCode:""});function O(){const o=String(C.value).split(/\s+/);for(let e of o){const p=e.trim();p&&(r.value.includes(p)||r.value.push(p))}C.value=""}function Q(o){r.value.splice(o,1)}async function W(){if(!v.materialCode){g.warning("请选择物料");return}if(!r.value.length){g.warning("请先扫码录入 SN(输入后回车追加)");return}F.value=!0;try{const o=await z.post("/inbound/create",{inboundType:"purchase",materialCode:v.materialCode,zoneCode:v.zoneCode,snList:[...r.value],operator:j()});g.success(`入库成功:入库单号 ${(o==null?void 0:o.inboundNo)||""},SN 共 ${r.value.length} 条`),r.value=[],C.value=""}finally{F.value=!1}}const V=d(),I=d([]),R=d(!1),y=d(null);function X(o,e){I.value=e.slice(-1)}function Z(o){V.value.clearFiles();const e=o[0];e&&V.value.handleStart(e)}async function ee(){var _,i,w;const o=I.value[0]||((i=(_=V.value)==null?void 0:_.uploadFiles)==null?void 0:i[0]),e=o==null?void 0:o.raw;if(!e){g.warning("请先选择 .xlsx 文件");return}const p=new FormData;p.append("file",e),R.value=!0;try{const m=await z.post("/inbound/batch-excel",p);y.value=m||{},g.success(`导入完成:共 ${(m==null?void 0:m.total)??0} 行,成功 ${(m==null?void 0:m.success)??0} 行`),(w=V.value)==null||w.clearFiles(),I.value=[]}finally{R.value=!1}}return(o,e)=>{const p=u("el-option"),_=u("el-select"),i=u("el-form-item"),w=u("el-input"),m=u("el-input-number"),le=u("el-date-picker"),h=u("el-button"),A=u("el-form"),L=u("el-alert"),B=u("el-tab-pane"),f=u("el-table-column"),Y=u("el-table"),te=u("el-upload"),ae=u("el-divider"),K=u("el-tag"),oe=u("el-tabs"),ne=u("el-card");return s(),b(ne,{shadow:"never"},{default:a(()=>[t(oe,null,{default:a(()=>[t(B,{label:"结构件入库"},{default:a(()=>[t(A,{ref_key:"batchRef",ref:M,model:n,rules:G,"label-width":"110px",style:{"max-width":"560px"}},{default:a(()=>[t(i,{label:"物料",prop:"materialCode"},{default:a(()=>[t(_,{modelValue:n.materialCode,"onUpdate:modelValue":e[0]||(e[0]=l=>n.materialCode=l),filterable:"",placeholder:"选择物料编码",style:{width:"100%"}},{default:a(()=>[(s(!0),N(k,null,q(S.value,l=>(s(),b(p,{key:l.id,value:l.code,label:`${l.code} ${l.name||""}`},null,8,["value","label"]))),128))]),_:1},8,["modelValue"])]),_:1}),t(i,{label:"批次号"},{default:a(()=>[t(w,{modelValue:n.batchNo,"onUpdate:modelValue":e[1]||(e[1]=l=>n.batchNo=l),placeholder:"留空则自动生成",clearable:""},null,8,["modelValue"])]),_:1}),t(i,{label:"数量",prop:"quantity"},{default:a(()=>[t(m,{modelValue:n.quantity,"onUpdate:modelValue":e[2]||(e[2]=l=>n.quantity=l),min:1,step:1,"step-strictly":"",style:{width:"100%"}},null,8,["modelValue"])]),_:1}),t(i,{label:"区域"},{default:a(()=>[t(_,{modelValue:n.zoneCode,"onUpdate:modelValue":e[3]||(e[3]=l=>n.zoneCode=l),placeholder:"选择库区",clearable:"",style:{width:"100%"}},{default:a(()=>[(s(!0),N(k,null,q(D.value,l=>(s(),b(p,{key:l.id,value:l.zoneCode,label:`${l.zoneCode} ${l.zoneName||""}`},null,8,["value","label"]))),128))]),_:1},8,["modelValue"])]),_:1}),t(i,{label:"生产日期"},{default:a(()=>[t(le,{modelValue:n.productionDate,"onUpdate:modelValue":e[4]||(e[4]=l=>n.productionDate=l),type:"date","value-format":"YYYY-MM-DD",placeholder:"选择生产日期",style:{width:"100%"}},null,8,["modelValue"])]),_:1}),t(i,{label:"供应商"},{default:a(()=>[t(w,{modelValue:n.supplier,"onUpdate:modelValue":e[5]||(e[5]=l=>n.supplier=l),placeholder:"供应商名称",clearable:""},null,8,["modelValue"])]),_:1}),t(i,null,{default:a(()=>[t(h,{type:"primary",loading:U.value,onClick:J},{default:a(()=>[...e[10]||(e[10]=[c("提交入库",-1)])]),_:1},8,["loading"])]),_:1})]),_:1},8,["model"]),E.value?(s(),b(L,{key:0,type:"success",closable:!1,title:`最近入库单号:${E.value}`,style:{"max-width":"560px"}},null,8,["title"])):H("",!0)]),_:1}),t(B,{label:`精密件 SN 入库${r.value.length?`(已扫 ${r.value.length})`:""}`},{default:a(()=>[t(A,{"label-width":"110px",style:{"max-width":"680px"}},{default:a(()=>[t(i,{label:"物料"},{default:a(()=>[t(_,{modelValue:v.materialCode,"onUpdate:modelValue":e[6]||(e[6]=l=>v.materialCode=l),filterable:"",placeholder:"选择物料编码",style:{width:"100%"}},{default:a(()=>[(s(!0),N(k,null,q(S.value,l=>(s(),b(p,{key:l.id,value:l.code,label:`${l.code} ${l.name||""}`},null,8,["value","label"]))),128))]),_:1},8,["modelValue"])]),_:1}),t(i,{label:"区域"},{default:a(()=>[t(_,{modelValue:v.zoneCode,"onUpdate:modelValue":e[7]||(e[7]=l=>v.zoneCode=l),placeholder:"选择库区(可空)",clearable:"",style:{width:"100%"}},{default:a(()=>[(s(!0),N(k,null,q(D.value,l=>(s(),b(p,{key:l.id,value:l.zoneCode,label:`${l.zoneCode} ${l.zoneName||""}`},null,8,["value","label"]))),128))]),_:1},8,["modelValue"])]),_:1}),t(i,{label:"扫码录入"},{default:a(()=>[t(w,{modelValue:C.value,"onUpdate:modelValue":e[8]||(e[8]=l=>C.value=l),type:"textarea",rows:4,autofocus:"",placeholder:"扫入或粘贴 SN 后按回车追加一行(支持一次多条,空白分隔)",onKeydown:se(re(O,["prevent"]),["enter"])},null,8,["modelValue","onKeydown"])]),_:1})]),_:1}),x("div",de,[e[11]||(e[11]=c(" 已录入 ",-1)),x("b",null,$(r.value.length),1),e[12]||(e[12]=c(" 条 SN ",-1))]),t(Y,{data:r.value.map((l,T)=>({i:T,v:l})),size:"small",border:"","max-height":"320","empty-text":"暂无 SN"},{default:a(()=>[t(f,{type:"index",label:"#",width:"56",align:"center"}),t(f,{prop:"v",label:"SN 序列号","min-width":"220"}),t(f,{label:"操作",width:"80",align:"center"},{default:a(({row:l})=>[t(h,{link:"",type:"danger",size:"small",onClick:T=>Q(l.i)},{default:a(()=>[...e[13]||(e[13]=[c("删除",-1)])]),_:1},8,["onClick"])]),_:1})]),_:1},8,["data"]),x("div",pe,[t(h,{type:"primary",loading:F.value,onClick:W},{default:a(()=>[...e[14]||(e[14]=[c("提交入库",-1)])]),_:1},8,["loading"]),t(h,{onClick:e[9]||(e[9]=l=>r.value=[])},{default:a(()=>[...e[15]||(e[15]=[c("清空列表",-1)])]),_:1})])]),_:1},8,["label"]),t(B,{label:"Excel 导入"},{default:a(()=>[t(L,{type:"info",closable:!1,title:"列头顺序(首行忽略):物料编码 | 批次号(可空自动生成) | 数量 | 生产日期 | 供应商 | 区域",style:{"max-width":"760px","margin-bottom":"14px"}}),t(te,{ref_key:"uploadRef",ref:V,drag:"",accept:".xlsx",limit:1,"auto-upload":!1,"on-change":X,"on-exceed":Z},{default:a(()=>[...e[16]||(e[16]=[x("div",{class:"dropzone"},"将 .xlsx 文件拖到此处,或点击选择文件",-1)])]),_:1},512),x("div",me,[t(h,{type:"primary",loading:R.value,onClick:ee},{default:a(()=>[...e[17]||(e[17]=[c("开始导入",-1)])]),_:1},8,["loading"])]),y.value?(s(),N(k,{key:0},[t(ae),x("h4",null,"导入结果:共 "+$(y.value.total)+" 行,成功 "+$(y.value.success)+" 行,失败 "+$(y.value.total-y.value.success)+" 行",1),t(Y,{data:y.value.rows||[],size:"small",border:"","max-height":"360"},{default:a(()=>[t(f,{prop:"row",label:"行号",width:"70",align:"center"}),t(f,{prop:"materialCode",label:"物料编码","min-width":"140"}),t(f,{prop:"batchNo",label:"批次号","min-width":"160"}),t(f,{prop:"quantity",label:"数量",width:"90",align:"center"}),t(f,{label:"结果","min-width":"200"},{default:a(({row:l})=>[l.error?(s(),b(K,{key:1,type:"danger",size:"small"},{default:a(()=>[c($(l.error),1)]),_:2},1024)):(s(),b(K,{key:0,type:"success",size:"small"},{default:a(()=>[...e[18]||(e[18]=[c("成功",-1)])]),_:1}))]),_:1})]),_:1},8,["data"])],64)):H("",!0)]),_:1})]),_:1})]),_:1})}}},ye=ue(ce,[["__scopeId","data-v-dbe6c848"]]);export{ye as default};
|