- 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
8 lines
4.7 KiB
JavaScript
8 lines
4.7 KiB
JavaScript
import{_ as Q,I as E,c as B,a as t,w as n,D as C,r as i,h as $,J as K,o as m,H as T,e as F,p as I,f as y,K as Z,t as g,d as j,L as A,E as h,g as R,M as U,m as H}from"./index-VJa6cW1h.js";import{r as z}from"./request-43HjEGU6.js";const J={key:1,style:{color:"#67c23a"}},L={__name:"Outbound",setup(G){const v=R({orderNo:""}),k=E(),f=$(""),N=$(!1),S=$(!1),_=$([]),D=H(()=>_.value.filter(e=>e.status!=="领料完结"));function x(e){return Math.max((e.totalQty||0)-(e.outQty||0),0)}async function q(){if(!v.orderNo.trim()){h.warning("请输入工单号");return}N.value=!0;try{const e=await z.get("/ledger/query",{params:{orderNo:v.orderNo.trim(),page:1,pageSize:100}});_.value=(e==null?void 0:e.list)||[],S.value=!0,_.value.length||h.info("该工单暂无台账记录")}finally{N.value=!1}}async function M(e){const l=x(e);if(l<=0)return;const d=await z.get("/stock/query",{params:{type:"batch",materialCode:e.materialCode,page:1,pageSize:200}}),p=((d==null?void 0:d.batch)||[]).filter(a=>a.qualityStatus==="合格"&&a.zoneCode==="Z02").sort((a,r)=>String(a.batchNo).localeCompare(String(r.batchNo))),c=[];let u=l;for(const a of p){if(u<=0)break;const r=(a.quantity||0)-(a.lockedQty||0);if(r<=0)continue;const o=Math.min(r,u);c.push({batchNo:a.batchNo,qty:o,zoneCode:a.zoneCode}),u-=o}if(!c.length){h.warning(`物料 ${e.materialCode} 在合格区(Z02)无可用批次库存`);return}if(u>0){h.error(`可用量不足:缺口 ${l},Z02 仅可凑 ${l-u},还差 ${u}`);return}const w=c.map(a=>`· 批次 ${a.batchNo} 出库 ${a.qty}`).join(`
|
||
`);await U.confirm(`工单 ${e.orderNo} 物料 ${e.materialCode}
|
||
缺口 ${l},按 FIFO 分配如下:
|
||
${w}
|
||
|
||
操作人:${k}${f.value?`
|
||
目标口:${f.value}`:""}`,"确认自动分配出库",{type:"warning",confirmButtonText:"确认出库",cancelButtonText:"取消"});const s=[];let b="";for(const a of c){const r=await z.post("/outbound/create",{orderNo:e.orderNo,materialCode:e.materialCode,batchNo:a.batchNo,qty:a.qty,operator:k,targetDock:f.value.trim()||void 0});r!=null&&r.outboundNo&&s.push(r.outboundNo),b=(r==null?void 0:r.status)||b}const V=b==="领料完结";h.success(`出库完成:出库单号 ${s.join("、")};该物料${V?"已":"未"}领料完结`),await q()}function O(e){return e==="领料完结"?"success":e==="进行中"?"primary":"info"}return(e,l)=>{const d=i("el-input"),p=i("el-form-item"),c=i("el-button"),u=i("el-form"),w=i("el-card"),s=i("el-table-column"),b=i("el-tag"),V=i("el-table"),a=i("el-empty"),r=K("loading");return m(),B("div",null,[t(w,{shadow:"never",class:"mb12"},{default:n(()=>[t(u,{inline:"","label-width":"90px",onSubmit:l[2]||(l[2]=T(()=>{},["prevent"]))},{default:n(()=>[t(p,{label:"工单号"},{default:n(()=>[t(d,{modelValue:v.orderNo,"onUpdate:modelValue":l[0]||(l[0]=o=>v.orderNo=o),placeholder:"输入工单号回车查询",clearable:"",autofocus:"",style:{width:"260px"},onKeyup:F(q,["enter"])},null,8,["modelValue"])]),_:1}),t(p,{label:"操作人"},{default:n(()=>[t(d,{"model-value":I(k),disabled:"",style:{width:"160px"}},null,8,["model-value"])]),_:1}),t(p,{label:"目标工位"},{default:n(()=>[t(d,{modelValue:f.value,"onUpdate:modelValue":l[1]||(l[1]=o=>f.value=o),placeholder:"可选,如 DOCK-A",clearable:"",style:{width:"180px"}},null,8,["modelValue"])]),_:1}),t(p,null,{default:n(()=>[t(c,{type:"primary",loading:N.value,onClick:q},{default:n(()=>[...l[3]||(l[3]=[y("查询台账",-1)])]),_:1},8,["loading"])]),_:1})]),_:1})]),_:1}),S.value?(m(),C(w,{key:0,shadow:"never"},{header:n(()=>[y(" 台账明细(共 "+g(_.value.length)+" 行,待补 "+g(D.value.length)+" 行) ",1)]),default:n(()=>[Z((m(),C(V,{data:_.value,border:""},{default:n(()=>[t(s,{prop:"orderNo",label:"工单号","min-width":"140"}),t(s,{prop:"materialCode",label:"物料编码","min-width":"150"}),t(s,{prop:"materialName",label:"物料名称","min-width":"140"},{default:n(({row:o})=>[y(g(o.materialName||"-"),1)]),_:1}),t(s,{prop:"totalQty",label:"需求总量",width:"100",align:"center"}),t(s,{prop:"outQty",label:"已出库",width:"90",align:"center"}),t(s,{label:"缺口",width:"90",align:"center"},{default:n(({row:o})=>[j("span",{class:A({gap:x(o)>0})},g(x(o)),3)]),_:1}),t(s,{label:"状态",width:"110",align:"center"},{default:n(({row:o})=>[t(b,{type:O(o.status),size:"small"},{default:n(()=>[y(g(o.status),1)]),_:2},1032,["type"])]),_:1}),t(s,{label:"操作",width:"140",align:"center"},{default:n(({row:o})=>[o.status!=="领料完结"?(m(),C(c,{key:0,type:"primary",size:"small",onClick:P=>M(o)},{default:n(()=>[...l[4]||(l[4]=[y("一键分配出库",-1)])]),_:1},8,["onClick"])):(m(),B("span",J,"已完结"))]),_:1})]),_:1},8,["data"])),[[r,N.value]])]),_:1})):(m(),C(a,{key:1,description:"请先按工单号查询物料台账"}))])}}},Y=Q(L,[["__scopeId","data-v-45b686a5"]]);export{Y as default};
|