1 line
6.4 KiB
JavaScript
Executable File
1 line
6.4 KiB
JavaScript
Executable File
import{B as e,F as t,Gt as n,H as r,R as i,a,b as o,d as s,et as c,f as l,m as u,p as d,t as f,u as p,ut as m,v as h,y as g}from"./_plugin-vue_export-helper-BmDUjPB3.js";import{a as _,o as v,r as y}from"./index-BdquF2dM.js";import"./request-D2yY8ZUb.js";import{i as b,r as x,s as S,t as C}from"./goods-tPYeTpYk.js";var w={class:`goods-edit-container`},T={key:0},E={class:`sub-items-toolbar`},D=f(o({__name:`Edit`,setup(o){let f=_(),D=v(),O=f.params.id,k=p(()=>!!O),A=m(f.query.type===`combo`?`combo`:`normal`),j=m(),M=m([]),N=m({code:``,name:``,barcode:``,category:``,unit:``,weight:null,retailPrice:0,costPrice:0,stockWarning:0,subItems:[]}),P={code:[{required:!0,message:`请输入商品编码`,trigger:`blur`}],name:[{required:!0,message:`请输入商品名称`,trigger:`blur`}],barcode:[{required:!0,message:`请输入商品检测条形码`,trigger:`blur`}],unit:[{required:!0,message:`请输入单位`,trigger:`blur`}],costPrice:[{required:!0,message:`请输入成本价`,trigger:`blur`}]},F=async()=>{let e=await x();e.code===200&&(M.value=e.data)},I=async()=>{let e=await b(O);if(e.code===200){let t=e.data;N.value={code:t.code,name:t.name,barcode:t.barcode,category:t.category,unit:t.unit,weight:t.weight,retailPrice:t.retail_price,costPrice:t.cost_price,stockWarning:t.stock_warning,subItems:t.sub_items?t.sub_items.map(e=>({goodsId:e.goods_id,goodsName:e.goods_name,quantity:e.quantity})):[]},A.value=t.type}},L=()=>{N.value.subItems.push({goodsId:``,quantity:1})},R=(e,t)=>{let n=M.value.find(t=>t.id===e);n&&(N.value.subItems[t].goodsName=n.name)},z=e=>{N.value.subItems.splice(e,1)},B=async()=>{await j.value.validate();let e={name:N.value.name,code:N.value.code,barcode:N.value.barcode||null,category:N.value.category||null,unit:N.value.unit,weight:N.value.weight,retail_price:N.value.retailPrice,cost_price:N.value.costPrice,stock_warning:N.value.stockWarning,type:A.value};A.value===`combo`&&(e.sub_items=N.value.subItems.map(e=>({goods_id:e.goodsId,quantity:e.quantity})));try{k.value?(await S(O,e),y.success(`更新成功`)):(await C(e),y.success(`创建成功`)),D.push(`/goods/list`)}catch(e){if(e.response?.status===422){let t=e.response.data.errors;console.error(`验证错误:`,t);let n=Object.values(t)[0];y.error(n?.[0]||`数据验证失败`)}else y.error(`操作失败`)}},V=()=>{D.push(`/goods/list`)};return t(()=>{F(),k.value&&I()}),(t,o)=>{let f=r(`el-input`),p=r(`el-form-item`),m=r(`el-option`),_=r(`el-select`),v=r(`el-col`),y=r(`el-input-number`),b=r(`el-row`),x=r(`el-divider`),S=r(`el-button`),C=r(`el-table-column`),D=r(`el-table`),O=r(`el-form`),F=r(`el-card`);return i(),u(`div`,w,[g(F,null,{header:c(()=>[s(`span`,null,n(k.value?`编辑商品`:`新增商品`)+` - `+n(A.value===`normal`?`普通商品`:`组套商品`),1)]),default:c(()=>[g(O,{model:N.value,"label-width":`120px`,ref_key:`formRef`,ref:j,rules:P},{default:c(()=>[g(p,{label:`商品编码`,prop:`code`},{default:c(()=>[g(f,{modelValue:N.value.code,"onUpdate:modelValue":o[0]||=e=>N.value.code=e,placeholder:`请输入商品编码(唯一)`},null,8,[`modelValue`])]),_:1}),g(p,{label:`商品名称`,prop:`name`},{default:c(()=>[g(f,{modelValue:N.value.name,"onUpdate:modelValue":o[1]||=e=>N.value.name=e,placeholder:`请输入商品名称`},null,8,[`modelValue`])]),_:1}),g(p,{label:`商品检测条形码`,prop:`barcode`},{default:c(()=>[g(f,{modelValue:N.value.barcode,"onUpdate:modelValue":o[2]||=e=>N.value.barcode=e,placeholder:`请输入商品检测条形码(必填)`},null,8,[`modelValue`])]),_:1}),g(p,{label:`商品分类`,prop:`category`},{default:c(()=>[g(_,{modelValue:N.value.category,"onUpdate:modelValue":o[3]||=e=>N.value.category=e,placeholder:`请选择分类`},{default:c(()=>[g(m,{label:`食品`,value:`food`}),g(m,{label:`服装`,value:`clothing`}),g(m,{label:`电子产品`,value:`electronics`})]),_:1},8,[`modelValue`])]),_:1}),g(b,{gutter:20},{default:c(()=>[g(v,{span:12},{default:c(()=>[g(p,{label:`单位`,prop:`unit`},{default:c(()=>[g(f,{modelValue:N.value.unit,"onUpdate:modelValue":o[4]||=e=>N.value.unit=e,placeholder:`如:件、箱`},null,8,[`modelValue`])]),_:1})]),_:1}),g(v,{span:12},{default:c(()=>[g(p,{label:`重量(克)`,prop:`weight`},{default:c(()=>[g(y,{modelValue:N.value.weight,"onUpdate:modelValue":o[5]||=e=>N.value.weight=e,min:0,precision:2,style:{width:`100%`}},null,8,[`modelValue`])]),_:1})]),_:1})]),_:1}),g(b,{gutter:20},{default:c(()=>[g(v,{span:12},{default:c(()=>[g(p,{label:`零售价(元)`,prop:`retailPrice`},{default:c(()=>[g(y,{modelValue:N.value.retailPrice,"onUpdate:modelValue":o[6]||=e=>N.value.retailPrice=e,min:0,precision:2,style:{width:`100%`}},null,8,[`modelValue`])]),_:1})]),_:1}),g(v,{span:12},{default:c(()=>[g(p,{label:`成本价(元)`,prop:`costPrice`},{default:c(()=>[g(y,{modelValue:N.value.costPrice,"onUpdate:modelValue":o[7]||=e=>N.value.costPrice=e,min:0,precision:2,style:{width:`100%`}},null,8,[`modelValue`])]),_:1})]),_:1})]),_:1}),g(p,{label:`库存预警`},{default:c(()=>[g(y,{modelValue:N.value.stockWarning,"onUpdate:modelValue":o[8]||=e=>N.value.stockWarning=e,min:0,style:{width:`200px`}},null,8,[`modelValue`])]),_:1}),A.value===`combo`?(i(),u(`div`,T,[g(x,null,{default:c(()=>[...o[9]||=[h(`组套子件`,-1)]]),_:1}),s(`div`,E,[g(S,{type:`primary`,onClick:L},{default:c(()=>[...o[10]||=[h(`添加子件`,-1)]]),_:1})]),g(D,{data:N.value.subItems,border:``,style:{width:`100%`}},{default:c(()=>[g(C,{prop:`goodsName`,label:`子商品`,"min-width":`150`},{default:c(({row:t,$index:n})=>[g(_,{modelValue:t.goodsId,"onUpdate:modelValue":e=>t.goodsId=e,placeholder:`请选择`,filterable:``,onChange:e=>R(e,n)},{default:c(()=>[(i(!0),u(a,null,e(M.value,e=>(i(),l(m,{key:e.id,label:e.name,value:e.id},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`onUpdate:modelValue`,`onChange`])]),_:1}),g(C,{prop:`quantity`,label:`数量`,width:`120`},{default:c(({row:e})=>[g(y,{modelValue:e.quantity,"onUpdate:modelValue":t=>e.quantity=t,min:1,style:{width:`100%`}},null,8,[`modelValue`,`onUpdate:modelValue`])]),_:1}),g(C,{label:`操作`,width:`80`},{default:c(({row:e,$index:t})=>[g(S,{type:`danger`,size:`small`,onClick:e=>z(t)},{default:c(()=>[...o[11]||=[h(`删除`,-1)]]),_:1},8,[`onClick`])]),_:1})]),_:1},8,[`data`])])):d(``,!0),g(p,null,{default:c(()=>[g(S,{type:`primary`,onClick:B},{default:c(()=>[...o[12]||=[h(`保存`,-1)]]),_:1}),g(S,{onClick:V},{default:c(()=>[...o[13]||=[h(`取消`,-1)]]),_:1})]),_:1})]),_:1},8,[`model`])]),_:1})])}}}),[[`__scopeId`,`data-v-0d7a8ec1`]]);export{D as default}; |