1 line
16 KiB
JavaScript
1 line
16 KiB
JavaScript
|
|
import{C as e,D as t,F as n,O as r,P as i,R as a,S as o,T as s,_ as c,g as l,h as u,i as d,j as f,k as p,m,r as h,s as g,t as _,v,x as y,y as b}from"./index-Dngmm__P.js";import{t as x}from"./useInventory-CrXJ8kdd.js";var ee={style:{"margin-bottom":`12px`,display:`flex`,gap:`12px`,"align-items":`center`}},S={style:{display:`flex`,gap:`4px`}},C={style:{display:`flex`,"justify-content":`space-between`,"align-items":`center`,"margin-bottom":`12px`}},te={style:{display:`flex`,gap:`8px`}},w={key:1,style:{"padding-left":`8px`}},ne={style:{"text-align":`right`,"margin-top":`8px`,"font-weight":`600`}},T={style:{display:`flex`,"justify-content":`space-between`,"align-items":`center`,"margin-bottom":`12px`}},E={style:{"text-align":`right`,"margin-top":`8px`,"font-weight":`600`}},D=e({__name:`SalesOrdersTab`,setup(e){function D(e,t,n,r,i){return new Promise(a=>{let o=_.confirm({header:e,body:t,theme:n,confirmBtn:r,cancelBtn:i,onConfirm:()=>{o.hide(),a(!0)},onCancel:()=>{o.hide(),a(!1)},onClose:()=>{a(!1)}})})}let{state:O,formatCurrency:k,formatDateTime:A,formatDate:j,getSalesOrderStatusLabel:M,getDeliveryStatusLabel:N,getPaymentStatusLabel:P,loadProductionOrders:F,loadFinishedProducts:I,loadCustomers:L,loadMaterials:R,loadInventory:z,loadMovements:B}=x(),V=i(!1),H=i(null),U=i({}),W=i([]),G=i(null),K=i(!1),q=i(!1),J=i([]),Y=i([]),X=i(!1);function Z(e){return e.payment_status===`paid`||e.delivery_status===`delivered`||e.delivery_status===`cancelled`||Number(e.received_amount||0)>0}function Q(){H.value=null,U.value={customer_id:null,delivery_date:``,remark:``},W.value=[],Y.value=[],V.value=!0}function re(){W.value.push({mold_mode:`new`,mold_sku:``,mold_name:``,mold_id:null,quantity:1,unit_price:0,remark:``})}function ie(e){W.value.splice(e,1)}let ae=u(()=>W.value.reduce((e,t)=>e+(t.unit_price||0)*(t.quantity||0),0));async function oe(e){await L(),await I(),await R();try{let t=await g(`/api/sales-orders/${e.id}`);H.value=e,U.value={customer_id:t.customer_id||e.customer_id||null,delivery_date:t.delivery_date||e.delivery_date||``,remark:t.remark||e.remark||``},W.value=(t.items||[]).map(e=>({mold_mode:e.mold_id?`existing`:`new`,mold_sku:e.sku||``,mold_name:e.name||``,mold_id:e.mold_id||null,quantity:e.quantity||1,unit_price:e.unit_price||0,remark:e.remark||``}));try{Y.value=((await g(`/api/sales-orders/${e.id}/consume-materials`)).items||[]).map(e=>({material_id:e.material_id,material_name:e.material_name||e.material_sku||``,quantity:e.quantity,unit_price:e.unit_price||0,remark:e.remark||``}))}catch{Y.value=[]}}catch(e){d(e,`åŠ è½½é”€å”®è®¢å�•详情`)}V.value=!0}async function se(){if(!K.value){if(!U.value.customer_id){h(`请选择客户`,`warning`);return}if(!W.value||W.value.length===0){h(`è¯·è‡³å°‘æ·»åŠ ä¸€ä¸ªæ¨¡å…·`,`warning`);return}for(let[e,t]of W.value.entries()){let n=e+1;if(t.mold_mode===`new`){if(!t.mold_sku||!String(t.mold_sku).trim()){h(`第 ${n} 行:新模请填写模具SKU`,`warning`);return}if(!t.mold_name||!String(t.mold_name).trim()){h(`第 ${n} 行:新模请填写模具å��ç§°`,`warning`);return}}else if(!t.mold_id){h(`第 ${n} 行:改模请选择已有模具`,`warning`);return}if(!t.quantity||t.quantity<=0){h(`第 ${n} 行:数é‡�必须大于 0`,`warning`);return}if(!t.unit_price||t.unit_price<0){h(`第 ${n} 行:å�•ä»·ä¸�能为负`,`warning`);return}}K.value=!0;try{let e={customer_id:U.value.customer_id,delivery_date:U.value.delivery_date||null,remark:U.value.remark||``,items:W.value.map(e=>({mold_mode:e.mold_mode,mold_sku:e.mold_sku||``,mold_name:e.mold_name||``,mold_id:e.mold_id||null,quantity:e.quantity,unit_price:e.unit_price||0,remark:e.remark||``}))};H.value?(await g(`/api/sales-orders/${H.value.id}`,{method:`PUT`,body:JSON.stringify(e)}),h(`销售订å�•æ›´æ–°æˆ�功`,`success`)):(await g(`/api/sales-orders`,{method:`POST`,body:JSON.stringify(e)}),h(`销售订å�•创建æˆ�功`,`success`)),V.value=!1,H.value=null,U.value={},W.value=[],Y.value=[],F(),I(),z(),B()}catch(e){d(e,`ä¿�å˜é”€å”®è®¢å�•`)}finally{K.value=!1}}}async function ce(e){if(Z(e)){h(`已收款/已交付/已作废或有收款记录的订å�•ä¸�å
|