material_manage_system/frontend/dist/assets/Outbound-MNMABQq2.js
2026-09-15 16:08:18 +08:00

2 lines
8.6 KiB
JavaScript

import{q as M,s as ie,r as g,_ as se,u as de,j as me,c as O,a as s,b as t,w as r,m as C,g as b,o as k,h as p,t as x,n as B,e as I,F,x as N,y as ce,E as D,p as fe}from"./index-BKY3gHB2.js";import{u as pe}from"./materials-CCO44TCM.js";import{u as ve}from"./stock-BRmruuul.js";import{_ as _e}from"./BaseTable-BUsuzGI9.js";import{_ as j}from"./StatusBadge-GSjUKTY1.js";import{_ as ge}from"./DeleteConfirm-D3Hh604n.js";const P={getAll(m={}){return M.get("/outbound",{params:m})},getById(m){return M.get(`/outbound/${m}`)},create(m){return M.post("/outbound",m)},update(m,i){return M.put(`/outbound/${m}`,i)},delete(m){return M.delete(`/outbound/${m}`)}},be=ie("outbound",()=>{const m=g([]),i=g(!1),c=g({currentPage:1,pageSize:20,total:0,totalPages:0});async function y(f=1){var _,d;i.value=!0;try{const V=c.value.pageSize,q=(f-1)*V,o=await P.getAll({limit:V,offset:q});m.value=((_=o.data)==null?void 0:_.items)||o.data||[],c.value.total=((d=o.data)==null?void 0:d.total)||m.value.length,c.value.currentPage=f,c.value.totalPages=Math.ceil(c.value.total/V)||1}finally{i.value=!1}}async function U(f){const _=await P.create(f);return await y(1),_}async function w(f,_){const d=await P.update(f,_);return await y(c.value.currentPage),d}async function $(f){const _=await P.delete(f);return await y(c.value.currentPage),_}async function L(f){return await P.getById(f)}return{outboundList:m,loading:i,page:c,fetchOutboundList:y,createOutbound:U,updateOutbound:w,deleteOutbound:$,fetchOutboundDetail:L}}),ye={class:"outbound-page"},ke={class:"page-header"},we={class:"material-items"},Ve={key:0},Se={key:0,class:"mt-3"},he={__name:"Outbound",setup(m){const i=be(),c=pe(),y=ve(),U=de(),w=g(!1),$=g(!1),L=g(!1),f=g(!1),_=g(null),d=g(null),V=g(!1),q=g(null),o=fe({handler:"",receiver:"",remark:"",items:[{material_id:null,materialSearchText:"",quantity:1}]}),A=g({});me(async()=>{await Promise.all([i.fetchOutboundList(),c.fetchMaterials(),y.fetchAllStock()])});function R(l){i.fetchOutboundList(l)}function G(){V.value=!1,q.value=null,Object.assign(o,{handler:"",receiver:"",remark:"",items:[{material_id:null,materialSearchText:"",quantity:1}]}),w.value=!0}async function H(l){V.value=!0,q.value=l.id;try{const e=await i.fetchOutboundDetail(l.id),n=e.data||e;o.handler=n.handler||"",o.receiver=n.receiver||"",o.remark=n.remark||"",o.items=n.items&&n.items.length>0?n.items.map(u=>{const h=c.materials.find(S=>S.id===u.material_id);return y.fetchStockByMaterialId(u.material_id).then(S=>{A.value[u.material_id]=S}),{material_id:u.material_id,materialSearchText:h?`${h.material_code} - ${h.name}`:"",quantity:u.quantity}}):[{material_id:null,materialSearchText:"",quantity:1}],w.value=!0}catch{D.error("加载出库单详情失败")}}function J(){o.items.push({material_id:null,materialSearchText:"",quantity:1})}function K(l){o.items.splice(l,1)}function Q(l,e){e.materialSearchText=l}function W(l){const e=(l.materialSearchText||"").toLowerCase();return e?c.materials.filter(n=>n.material_code.toLowerCase().includes(e)||n.name.toLowerCase().includes(e)):c.materials}function X(l,e){const n=o.items.indexOf(l);n!==-1&&o.items.splice(n,1,{...l}),e&&y.fetchStockByMaterialId(e).then(u=>{A.value[e]=u})}function Y(l){if(!l)return!1;const e=y.stockList.find(u=>u.material_id===l);if(!e)return!1;const n=c.materials.find(u=>u.id===l);return n&&e.current_stock<=n.warning_stock}async function Z(){f.value=!0;try{const l=o.items.filter(n=>n.material_id&&n.quantity>0);if(l.length===0){D.warning("请至少添加一个物料");return}const e={handler:o.handler,receiver:o.receiver,remark:o.remark,items:l};V.value?(await i.updateOutbound(q.value,e),D.success("修改成功")):(await i.createOutbound(e),D.success("保存成功")),w.value=!1,i.fetchOutboundList()}finally{f.value=!1}}function ee(l){_.value=l,L.value=!0}async function te(){await i.deleteOutbound(_.value),D.success("删除成功")}function ae(l){d.value=l,$.value=!0}function T(l){return l?new Date(l).toLocaleString("zh-CN"):"-"}return(l,e)=>{const n=b("el-button"),u=b("el-table-column"),h=b("el-input"),S=b("el-form-item"),le=b("el-option"),ne=b("el-select"),oe=b("el-input-number"),ue=b("el-form"),E=b("el-dialog"),re=b("el-table");return k(),O("div",ye,[s("div",ke,[e[8]||(e[8]=s("h2",null,"出库管理",-1)),t(n,{type:"primary",onClick:G},{default:r(()=>[...e[7]||(e[7]=[p("新增出库单",-1)])]),_:1})]),t(_e,{data:C(i).outboundList,loading:C(i).loading,"current-page":C(i).page.currentPage,"page-size":C(i).page.pageSize,total:C(i).page.total,onPageChange:R},{default:r(()=>[t(u,{type:"index",label:"ID",width:"60"}),t(u,{prop:"outbound_no",label:"出库单号"}),t(u,{prop:"status",label:"状态"},{default:r(({row:a})=>[t(j,{status:a.status},null,8,["status"])]),_:1}),t(u,{prop:"receiver",label:"接收方"}),t(u,{prop:"operator",label:"操作人"}),t(u,{prop:"remark",label:"备注"}),t(u,{prop:"created_at",label:"创建时间",width:"160"},{default:r(({row:a})=>[p(x(T(a.created_at)),1)]),_:1}),t(u,{label:"操作",width:"240",fixed:"right"},{default:r(({row:a})=>[t(n,{size:"small",onClick:z=>ae(a)},{default:r(()=>[...e[9]||(e[9]=[p("详情",-1)])]),_:1},8,["onClick"]),C(U).isAdmin?(k(),B(n,{key:0,size:"small",type:"primary",onClick:z=>H(a)},{default:r(()=>[...e[10]||(e[10]=[p("编辑",-1)])]),_:1},8,["onClick"])):I("",!0),C(U).isAdmin?(k(),B(n,{key:1,size:"small",type:"danger",onClick:z=>ee(a.id)},{default:r(()=>[...e[11]||(e[11]=[p("删除",-1)])]),_:1},8,["onClick"])):I("",!0)]),_:1})]),_:1},8,["data","loading","current-page","page-size","total"]),t(E,{modelValue:w.value,"onUpdate:modelValue":e[4]||(e[4]=a=>w.value=a),title:V.value?"编辑出库单":"新增出库单",width:"900px"},{footer:r(()=>[t(n,{onClick:e[3]||(e[3]=a=>w.value=!1)},{default:r(()=>[...e[14]||(e[14]=[p("取消",-1)])]),_:1}),t(n,{type:"primary",onClick:Z,loading:f.value},{default:r(()=>[...e[15]||(e[15]=[p("保存",-1)])]),_:1},8,["loading"])]),default:r(()=>[t(ue,{model:o,"label-width":"100px"},{default:r(()=>[t(S,{label:"操作人"},{default:r(()=>[t(h,{modelValue:o.handler,"onUpdate:modelValue":e[0]||(e[0]=a=>o.handler=a),placeholder:"请输入操作人"},null,8,["modelValue"])]),_:1}),t(S,{label:"接收方"},{default:r(()=>[t(h,{modelValue:o.receiver,"onUpdate:modelValue":e[1]||(e[1]=a=>o.receiver=a),placeholder:"请输入接收方"},null,8,["modelValue"])]),_:1}),t(S,{label:"备注"},{default:r(()=>[t(h,{modelValue:o.remark,"onUpdate:modelValue":e[2]||(e[2]=a=>o.remark=a),type:"textarea",rows:"3"},null,8,["modelValue"])]),_:1}),t(S,{label:"出库物料"},{default:r(()=>[s("div",we,[(k(!0),O(F,null,N(o.items,(a,z)=>(k(),O("div",{key:z,class:"item-row"},[t(ne,{modelValue:a.material_id,"onUpdate:modelValue":v=>a.material_id=v,placeholder:"输入物料编码或名称搜索",filterable:"","filter-method":v=>Q(v,a),style:{width:"280px"},onChange:v=>X(a,v)},{default:r(()=>[(k(!0),O(F,null,N(W(a),v=>(k(),B(le,{key:v.id,label:`${v.material_code} - ${v.name}`,value:v.id},null,8,["label","value"]))),128))]),_:2},1032,["modelValue","onUpdate:modelValue","filter-method","onChange"]),t(oe,{modelValue:a.quantity,"onUpdate:modelValue":v=>a.quantity=v,min:1},null,8,["modelValue","onUpdate:modelValue"]),s("span",{class:ce(["stock-info",{"low-stock":Y(a.material_id)}])}," 库存: "+x(A.value[a.material_id]??"-"),3),t(n,{onClick:v=>K(z),disabled:o.items.length<=1},{default:r(()=>[...e[12]||(e[12]=[p("删除",-1)])]),_:1},8,["onClick","disabled"])]))),128)),t(n,{onClick:J},{default:r(()=>[...e[13]||(e[13]=[p("添加物料",-1)])]),_:1})])]),_:1})]),_:1},8,["model"])]),_:1},8,["modelValue","title"]),t(ge,{modelValue:L.value,"onUpdate:modelValue":e[5]||(e[5]=a=>L.value=a),onConfirm:te},null,8,["modelValue"]),t(E,{modelValue:$.value,"onUpdate:modelValue":e[6]||(e[6]=a=>$.value=a),title:"出库单详情",width:"600px"},{default:r(()=>[d.value?(k(),O("div",Ve,[s("p",null,[e[16]||(e[16]=s("strong",null,"出库单号:",-1)),p(x(d.value.outbound_no),1)]),s("p",null,[e[17]||(e[17]=s("strong",null,"状态:",-1)),t(j,{status:d.value.status},null,8,["status"])]),s("p",null,[e[18]||(e[18]=s("strong",null,"接收方:",-1)),p(x(d.value.receiver||"-"),1)]),s("p",null,[e[19]||(e[19]=s("strong",null,"操作人:",-1)),p(x(d.value.operator),1)]),s("p",null,[e[20]||(e[20]=s("strong",null,"备注:",-1)),p(x(d.value.remark||"-"),1)]),s("p",null,[e[21]||(e[21]=s("strong",null,"创建时间:",-1)),p(x(T(d.value.created_at)),1)]),d.value.items&&d.value.items.length>0?(k(),O("div",Se,[e[22]||(e[22]=s("h5",null,"物料明细",-1)),t(re,{data:d.value.items,border:"",size:"small"},{default:r(()=>[t(u,{prop:"material_code",label:"物料编码"}),t(u,{prop:"material_name",label:"物料名称"}),t(u,{prop:"quantity",label:"数量"})]),_:1},8,["data"])])):I("",!0)])):I("",!0)]),_:1},8,["modelValue"])])}}},ze=se(he,[["__scopeId","data-v-6e4953c4"]]);export{ze as default};