1 line
6.1 KiB
JavaScript
1 line
6.1 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,i as u,j as d,k as f,m as p,r as m,s as h,v as g,x as _,y as v}from"./index-BoystVy-.js";import{t as y}from"./useInventory-C7Zfw7oO.js";var b={style:{"margin-bottom":`12px`}},x={style:{padding:`0 12px 12px 12px`}},S=e({__name:`ProductsTab`,setup(e){let{state:S,formatCurrency:C,loadFinishedProducts:w,loadMaterials:T}=y(),E=i(!1),D=i(null),O=i(!1),k=i({}),A=i([]);function j(){D.value=null,k.value={item_type:`finished`,unit:`件`,min_stock:0,max_stock:1e3,cost_price:0,sale_price:0,sku:``,name:``,category:``},A.value=[],E.value=!0}async function M(e){D.value=e,k.value={...e},await T();try{A.value=((await h(`/api/products/${e.id}/materials`)).items||[]).map(e=>({material_id:e.material_id,quantity:e.quantity}))}catch(e){u(e,`加载BOM`)}E.value=!0}function N(){A.value.push({material_id:S.materials[0]?.id||null,quantity:1})}function P(e){A.value.splice(e,1)}async function F(){if(!O.value){if(!k.value.sku){m(`请输入SKU`,`warning`);return}if(!k.value.name){m(`请输入名称`,`warning`);return}O.value=!0;try{D.value?(await h(`/api/products/${D.value.id}`,{method:`PUT`,body:JSON.stringify(k.value)}),k.value.item_type===`finished`&&A.value.length>0&&await h(`/api/products/${D.value.id}/materials`,{method:`PUT`,body:JSON.stringify({items:A.value})}),m(`成品更新成功`,`success`)):(await h(`/api/products`,{method:`POST`,body:JSON.stringify(k.value)}),m(`成品创建成功`,`success`)),E.value=!1,D.value=null,k.value={},A.value=[],w(),T()}catch(e){u(e,`保存成品`)}finally{O.value=!1}}}async function I(e){if(confirm(`确定要删除这个成品吗?`))try{await h(`/api/products/${e}`,{method:`DELETE`}),m(`成品已删除`,`success`),w(),T()}catch(e){u(e,`删除成品`)}}function L(){E.value=!1,D.value=null,k.value={},A.value=[]}return s(()=>{w()}),(e,i)=>{let s=f(`t-button`),u=f(`t-table-column`),m=f(`t-table`),h=f(`t-empty`),y=f(`t-input`),w=f(`t-form-item`),T=f(`t-input-number`),R=f(`t-divider`),z=f(`t-option`),B=f(`t-select`),V=f(`t-form`),H=f(`t-dialog`);return t(),v(`div`,null,[l(`div`,b,[o(s,{type:`primary`,onClick:j},{default:d(()=>[...i[8]||=[_(`新增成品`,-1)]]),_:1})]),o(m,{data:n(S).finishedProducts,loading:n(S).loading,stripe:``},{default:d(()=>[o(u,{prop:`sku`,label:`SKU`}),o(u,{prop:`name`,label:`名称`}),o(u,{prop:`category`,label:`分类`},{default:d(({row:e})=>[_(a(e.category||`-`),1)]),_:1}),o(u,{prop:`unit`,label:`单位`}),o(u,{label:`成本价`},{default:d(({row:e})=>[_(a(n(C)(e.cost_price)),1)]),_:1}),o(u,{label:`销售价`},{default:d(({row:e})=>[_(a(n(C)(e.sale_price)),1)]),_:1}),o(u,{label:`基础物料成本`},{default:d(({row:e})=>[_(a(n(C)(e.material_cost||0)),1)]),_:1}),o(u,{label:`操作`,width:`180`},{default:d(({row:e})=>[o(s,{type:`primary`,size:`small`,onClick:t=>M(e)},{default:d(()=>[...i[9]||=[_(`编辑`,-1)]]),_:1},8,[`onClick`]),o(s,{type:`danger`,size:`small`,onClick:t=>I(e.id)},{default:d(()=>[...i[10]||=[_(`删除`,-1)]]),_:1},8,[`onClick`])]),_:1})]),_:1},8,[`data`,`loading`]),!n(S).loading&&n(S).finishedProducts.length===0?(t(),c(h,{key:0,description:`暂无成品数据`})):g(``,!0),o(H,{visible:E.value,"onUpdate:visible":i[7]||=e=>E.value=e,title:(D.value?`编辑`:`新增`)+`成品`,width:`560px`,onClosed:L},{footer:d(()=>[o(s,{onClick:i[6]||=e=>E.value=!1,disabled:O.value},{default:d(()=>[...i[14]||=[_(`取消`,-1)]]),_:1},8,[`disabled`]),o(s,{type:`primary`,loading:O.value,disabled:O.value,onClick:F},{default:d(()=>[...i[15]||=[_(`保存`,-1)]]),_:1},8,[`loading`,`disabled`])]),default:d(()=>[o(V,{"label-width":`100px`},{default:d(()=>[o(w,{label:`类型`},{default:d(()=>[o(y,{"model-value":`成品(按单生产,不做库存)`,disabled:``})]),_:1}),o(w,{label:`SKU`,required:``},{default:d(()=>[o(y,{modelValue:k.value.sku,"onUpdate:modelValue":i[0]||=e=>k.value.sku=e,placeholder:`产品编码`},null,8,[`modelValue`])]),_:1}),o(w,{label:`名称`,required:``},{default:d(()=>[o(y,{modelValue:k.value.name,"onUpdate:modelValue":i[1]||=e=>k.value.name=e,placeholder:`产品名称`},null,8,[`modelValue`])]),_:1}),o(w,{label:`分类`},{default:d(()=>[o(y,{modelValue:k.value.category,"onUpdate:modelValue":i[2]||=e=>k.value.category=e,placeholder:`产品分类`},null,8,[`modelValue`])]),_:1}),o(w,{label:`单位`},{default:d(()=>[o(y,{modelValue:k.value.unit,"onUpdate:modelValue":i[3]||=e=>k.value.unit=e,placeholder:`件`},null,8,[`modelValue`])]),_:1}),o(w,{label:`成本价`},{default:d(()=>[o(T,{modelValue:k.value.cost_price,"onUpdate:modelValue":i[4]||=e=>k.value.cost_price=e,precision:2,min:0,step:.01,style:{width:`100%`}},null,8,[`modelValue`])]),_:1}),o(w,{label:`销售价`},{default:d(()=>[o(T,{modelValue:k.value.sale_price,"onUpdate:modelValue":i[5]||=e=>k.value.sale_price=e,precision:2,min:0,step:.01,style:{width:`100%`}},null,8,[`modelValue`])]),_:1}),o(w,{label:`说明`},{default:d(()=>[o(y,{"model-value":`成品不做库存,成本由下方BOM定义物料构成后自动计算`,disabled:``})]),_:1}),D.value?(t(),v(p,{key:0},[o(R,{"content-position":`left`},{default:d(()=>[...i[11]||=[_(`BOM物料配置`,-1)]]),_:1}),l(`div`,x,[o(s,{type:`primary`,size:`small`,onClick:N,style:{"margin-bottom":`8px`}},{default:d(()=>[...i[12]||=[_(`+ 添加物料`,-1)]]),_:1}),o(m,{data:A.value,size:`small`,border:``},{default:d(()=>[o(u,{label:`物料`},{default:d(({row:e})=>[o(B,{modelValue:e.material_id,"onUpdate:modelValue":t=>e.material_id=t,placeholder:`选择物料`,style:{width:`100%`}},{default:d(()=>[(t(!0),v(p,null,r(n(S).materials,e=>(t(),c(z,{key:e.id,label:`${e.sku} - ${e.name}`,value:e.id},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`onUpdate:modelValue`])]),_:1}),o(u,{label:`数量`,width:`120`},{default:d(({row:e})=>[o(T,{modelValue:e.quantity,"onUpdate:modelValue":t=>e.quantity=t,min:1e-4,step:1e-4,size:`small`,style:{width:`100%`}},null,8,[`modelValue`,`onUpdate:modelValue`])]),_:1}),o(u,{label:`操作`,width:`80`},{default:d(({$index:e})=>[o(s,{type:`danger`,size:`small`,onClick:t=>P(e)},{default:d(()=>[...i[13]||=[_(`删除`,-1)]]),_:1},8,[`onClick`])]),_:1})]),_:1},8,[`data`])])],64)):g(``,!0)]),_:1})]),_:1},8,[`visible`,`title`])])}}});export{S as default}; |