1 line
8.4 KiB
JavaScript
1 line
8.4 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,v as _,x as v,y}from"./index-BoystVy-.js";import{t as b}from"./useInventory-C7Zfw7oO.js";var x={style:{"margin-bottom":`12px`,display:`flex`,gap:`8px`}},S={style:{display:`flex`,"justify-content":`space-between`,"align-items":`center`,"margin-bottom":`12px`}},C={style:{"text-align":`right`,"margin-top":`8px`,"font-weight":`600`}},w=e({__name:`MaterialsTab`,setup(e){let{state:w,formatCurrency:T,loadMaterials:E,loadSuppliers:D,loadPurchaseOrders:O}=b(),k=i(!1),A=i(null),j=i(!1),M=i({}),N=i(!1),P=i([]),F=i(null),I=i(!1);function L(){A.value=null,M.value={item_type:`material`,unit:`kg`,min_stock:0,max_stock:1e3,cost_price:0,sale_price:0,sku:``,name:``,category:``},k.value=!0}async function R(e){A.value=e,M.value={...e},k.value=!0}async function z(){if(!j.value){if(!M.value.sku){h(`请输入SKU`,`warning`);return}if(!M.value.name){h(`请输入名称`,`warning`);return}j.value=!0;try{A.value?(await g(`/api/products/${A.value.id}`,{method:`PUT`,body:JSON.stringify(M.value)}),h(`物料更新成功`,`success`)):(await g(`/api/products`,{method:`POST`,body:JSON.stringify(M.value)}),h(`物料创建成功`,`success`)),k.value=!1,A.value=null,M.value={},E()}catch(e){d(e,`保存物料`)}finally{j.value=!1}}}async function B(e){if(confirm(`确定要删除这个物料吗?`))try{await g(`/api/products/${e}`,{method:`DELETE`}),h(`物料已删除`,`success`),E()}catch(e){d(e,`删除物料`)}}async function V(){await E(),await D(),P.value=[],N.value=!0}function H(){P.value.push({material_id:w.materials[0]?.id||null,quantity:1,unit_price:0,remark:``})}function U(e){P.value.splice(e,1)}let W=u(()=>P.value.reduce((e,t)=>e+(t.unit_price||0)*(t.quantity||0),0));async function G(){if(!I.value){if(!F.value){h(`请选择供应商`,`warning`);return}if(!P.value||P.value.length===0){h(`请至少添加一个补货物料`,`warning`);return}for(let[e,t]of P.value.entries()){let n=e+1;if(!t.material_id){h(`第 ${n} 行:请选择物料`,`warning`);return}if(!Number.isFinite(t.quantity)||t.quantity<=0){h(`第 ${n} 行:数量必须大于 0`,`warning`);return}if(!Number.isFinite(t.unit_price)||t.unit_price<0){h(`第 ${n} 行:单价必须大于等于 0`,`warning`);return}}I.value=!0;try{let e={supplier_id:F.value,expected_date:new Date().toISOString().split(`T`)[0],remark:`物料补货`,items:P.value.map(e=>({product_id:e.material_id,quantity:e.quantity,unit_price:e.unit_price,remark:e.remark}))};await g(`/api/purchase-orders`,{method:`POST`,body:JSON.stringify(e)}),h(`采购订单创建成功`,`success`),N.value=!1,P.value=[],F.value=null,O()}catch(e){d(e,`保存补货订单`)}finally{I.value=!1}}}function K(){k.value=!1,A.value=null,M.value={}}function q(){N.value=!1,P.value=[]}return s(()=>{E()}),(e,i)=>{let s=p(`t-button`),u=p(`t-table-column`),d=p(`t-table`),h=p(`t-empty`),g=p(`t-input`),b=p(`t-form-item`),E=p(`t-input-number`),D=p(`t-form`),O=p(`t-dialog`),J=p(`t-option`),Y=p(`t-select`);return t(),y(`div`,null,[l(`div`,x,[o(s,{type:`primary`,onClick:L},{default:f(()=>[...i[12]||=[v(`新增物料`,-1)]]),_:1}),o(s,{type:`success`,onClick:V},{default:f(()=>[...i[13]||=[v(`物料补货`,-1)]]),_:1})]),o(d,{data:n(w).materials,loading:n(w).loading,stripe:``},{default:f(()=>[o(u,{prop:`sku`,label:`SKU`}),o(u,{prop:`name`,label:`名称`}),o(u,{prop:`category`,label:`分类`},{default:f(({row:e})=>[v(a(e.category||`-`),1)]),_:1}),o(u,{prop:`unit`,label:`单位`}),o(u,{label:`成本价`},{default:f(({row:e})=>[v(a(n(T)(e.cost_price)),1)]),_:1}),o(u,{prop:`min_stock`,label:`最低库存`},{default:f(({row:e})=>[v(a(e.min_stock??`-`),1)]),_:1}),o(u,{label:`操作`,width:`180`},{default:f(({row:e})=>[o(s,{type:`primary`,size:`small`,onClick:t=>R(e)},{default:f(()=>[...i[14]||=[v(`编辑`,-1)]]),_:1},8,[`onClick`]),o(s,{type:`danger`,size:`small`,onClick:t=>B(e.id)},{default:f(()=>[...i[15]||=[v(`删除`,-1)]]),_:1},8,[`onClick`])]),_:1})]),_:1},8,[`data`,`loading`]),!n(w).loading&&n(w).materials.length===0?(t(),c(h,{key:0,description:`
|