import{s as W,r as S,_ as X,j as Y,c as _,b as a,w as o,g,o as m,F as T,x as B,a as k,n as L,z as Z,t as b,h as w,e as ee,m as M,p as F,E as $,A as te}from"./index-BKY3gHB2.js";import{a as U}from"./application-BObaANl2.js";import{u as ae}from"./materials-CCO44TCM.js";import{u as le}from"./stock-BRmruuul.js";import{_ as ne}from"./BaseTable-BUsuzGI9.js";import{_ as oe}from"./StatusBadge-GSjUKTY1.js";const ie=W("application",()=>{const A=S([]),r=S(!1),c=S({currentPage:1,pageSize:20,total:0,totalPages:0});async function h(f="",l=1){var d,z;r.value=!0;try{const V=await U.getMy(f,l,c.value.pageSize);A.value=((d=V.data)==null?void 0:d.items)||V.data||[],c.value.total=((z=V.data)==null?void 0:z.total)||A.value.length,c.value.currentPage=l,c.value.totalPages=Math.ceil(c.value.total/c.value.pageSize)||1}finally{r.value=!1}}async function x(f){const l=await U.create(f);return await h("",1),l}async function C(f){const l=await U.cancel(f);return await h("",c.value.currentPage),l}return{myApplications:A,loading:r,myPage:c,fetchMyApplications:h,createApplication:x,cancelApplication:C}}),se={class:"application-page"},re={class:"item-main"},ce={class:"item-controls"},ue={class:"item-actions"},de={key:0,class:"stock-warning"},pe={style:{"margin-bottom":"12px"}},me={key:1},fe={key:1,class:"text-muted"},_e={key:2},ge={__name:"Application",setup(A){const r=ie(),c=ae(),h=le(),x=S("apply"),C=S(!1),f=S(""),l=F({purpose:"",items:[{material_id:null,materialSearchText:"",quantity:1}]}),d=F(new Map);Y(()=>{c.fetchMaterials(),h.fetchStock(),r.fetchMyApplications()});function z(n){r.fetchMyApplications(f.value,n)}function V(){r.fetchMyApplications(f.value,1)}function j(){l.items.push({material_id:null,materialSearchText:"",quantity:1})}function D(n){l.items.splice(n,1)}function E(n,t){t.materialSearchText=n}function N(n){const t=(n.materialSearchText||"").toLowerCase();return t?c.materials.filter(i=>i.material_code.toLowerCase().includes(t)||i.name.toLowerCase().includes(t)):c.materials}async function H(n,t){const i=l.items.indexOf(n);if(i!==-1){const u={...n};if(l.items.splice(i,1,u),t)try{const p=await h.fetchStockByMaterialId(t);d.set(u,p)}catch{}}}async function O(){if(!l.purpose.trim()){$.warning("请填写申请用途");return}const n=l.items.filter(i=>i.material_id&&i.quantity>0);if(n.length===0){$.warning("请至少添加一个物料");return}const t=[];for(const i of n){const u=d.get(i);if(u!==void 0&&u>0&&i.quantity>u){const p=c.materials.find(P=>P.id===i.material_id);t.push(`${(p==null?void 0:p.name)||i.material_id}(申请 ${i.quantity} 件,库存 ${u} 件)`)}}if(!(t.length>0&&!await te.confirm(`以下物料库存不足:
${t.map(u=>`• ${u}`).join("
")}
是否仍要提交申请?`,"库存不足",{confirmButtonText:"仍要提交",cancelButtonText:"返回修改",type:"warning",dangerouslyUseHTMLString:!0}).catch(()=>!1))){C.value=!0;try{await r.createApplication({purpose:l.purpose,items:n}),$.success("申请提交成功"),l.purpose="",l.items=[{material_id:null,materialSearchText:"",quantity:1}],x.value="my"}finally{C.value=!1}}}async function G(n){try{await r.cancelApplication(n),$.success("申请已取消")}catch{}}function J(n){return n?new Date(n).toLocaleString("zh-CN"):"-"}return(n,t)=>{const i=g("el-input"),u=g("el-form-item"),p=g("el-option"),P=g("el-select"),K=g("el-input-number"),q=g("el-button"),Q=g("el-form"),I=g("el-tab-pane"),y=g("el-table-column"),R=g("el-tabs");return m(),_("div",se,[a(R,{modelValue:x.value,"onUpdate:modelValue":t[2]||(t[2]=e=>x.value=e)},{default:o(()=>[a(I,{label:"发起申请",name:"apply"},{default:o(()=>[a(Q,{model:l,"label-width":"100px"},{default:o(()=>[a(u,{label:"申请用途"},{default:o(()=>[a(i,{modelValue:l.purpose,"onUpdate:modelValue":t[0]||(t[0]=e=>l.purpose=e),type:"textarea",rows:"3",placeholder:"请填写申请用途(必填)"},null,8,["modelValue"])]),_:1}),a(u,{label:"申请物料"},{default:o(()=>[(m(!0),_(T,null,B(l.items,(e,v)=>(m(),_("div",{key:v,class:"item-row"},[k("div",re,[k("div",ce,[a(P,{modelValue:e.material_id,"onUpdate:modelValue":s=>e.material_id=s,placeholder:"输入物料编码或名称搜索",filterable:"","filter-method":s=>E(s,e),style:{width:"280px"},onChange:s=>H(e,s)},{default:o(()=>[(m(!0),_(T,null,B(N(e),s=>(m(),L(p,{key:s.id,label:`${s.material_code} - ${s.name}`,value:s.id},null,8,["label","value"]))),128))]),_:2},1032,["modelValue","onUpdate:modelValue","filter-method","onChange"]),a(K,{modelValue:e.quantity,"onUpdate:modelValue":s=>e.quantity=s,min:1},null,8,["modelValue","onUpdate:modelValue"]),k("div",{class:"stock-info",style:Z({color:d.get(e)!==void 0&&d.get(e)D(v),disabled:l.items.length<=1},{default:o(()=>[...t[3]||(t[3]=[w("删除",-1)])]),_:1},8,["onClick","disabled"]),a(q,{size:"small",onClick:j},{default:o(()=>[...t[4]||(t[4]=[w("添加物料",-1)])]),_:1})])]),d.get(e)!==void 0&&d.get(e)[a(q,{type:"primary",onClick:O,loading:C.value},{default:o(()=>[...t[5]||(t[5]=[w("提交申请",-1)])]),_:1},8,["loading"])]),_:1})]),_:1},8,["model"])]),_:1}),a(I,{label:"我的申请",name:"my"},{default:o(()=>[k("div",pe,[a(P,{modelValue:f.value,"onUpdate:modelValue":t[1]||(t[1]=e=>f.value=e),placeholder:"全部状态",clearable:"",onChange:V,style:{width:"160px"}},{default:o(()=>[a(p,{label:"待审批",value:"pending"}),a(p,{label:"已通过",value:"approved"}),a(p,{label:"已拒绝",value:"rejected"}),a(p,{label:"已取消",value:"cancelled"})]),_:1},8,["modelValue"])]),a(ne,{data:M(r).myApplications,loading:M(r).loading,"current-page":M(r).myPage.currentPage,"page-size":M(r).myPage.pageSize,total:M(r).myPage.total,onPageChange:z},{default:o(()=>[a(y,{type:"index",label:"ID",width:"60"}),a(y,{prop:"application_no",label:"申请单号"}),a(y,{prop:"items",label:"物料明细"},{default:o(({row:e})=>[e.items&&e.items.length>0?(m(!0),_(T,{key:0},B(e.items,(v,s)=>(m(),_("span",{key:s},[w(b(v.material_code)+" - "+b(v.material_name)+" × "+b(v.quantity),1),t[6]||(t[6]=k("br",null,null,-1))]))),128)):(m(),_("span",me,"-"))]),_:1}),a(y,{prop:"status",label:"状态"},{default:o(({row:e})=>[a(oe,{status:e.status},null,8,["status"])]),_:1}),a(y,{prop:"purpose",label:"用途"}),a(y,{prop:"created_at",label:"申请时间",width:"160"},{default:o(({row:e})=>[w(b(J(e.created_at)),1)]),_:1}),a(y,{label:"操作",width:"180",fixed:"right"},{default:o(({row:e})=>[e.status==="pending"?(m(),L(q,{key:0,size:"small",type:"danger",onClick:v=>G(e.id)},{default:o(()=>[...t[7]||(t[7]=[w("取消申请",-1)])]),_:1},8,["onClick"])):e.status==="rejected"?(m(),_("span",fe,b(e.rejection_reason||"-"),1)):(m(),_("span",_e,"-"))]),_:1})]),_:1},8,["data","loading","current-page","page-size","total"])]),_:1})]),_:1},8,["modelValue"])])}}},Se=X(ge,[["__scopeId","data-v-e22a5adb"]]);export{Se as default};