1 line
7.5 KiB
JavaScript
Executable File
1 line
7.5 KiB
JavaScript
Executable File
import{B as e,F as t,Gt as n,H as r,Q as i,R as a,U as o,a as s,b as c,d as l,et as u,f as d,m as f,t as p,tt as m,u as h,ut as g,v as _,y as v}from"./_plugin-vue_export-helper-BmDUjPB3.js";import{n as y,o as b,r as x}from"./index-BdquF2dM.js";import"./request-D2yY8ZUb.js";import{a as S,n as C,o as w}from"./goods-tPYeTpYk.js";import{t as T}from"./warehouse-DjgOFCsD.js";var E={class:`dialog-footer`},D={__name:`GoodsPushDialog`,props:{modelValue:{type:Boolean,default:!1},selectedGoods:{type:Array,default:()=>[]}},emits:[`update:modelValue`,`confirm`],setup(t,{emit:o}){let c=t,p=o,m=h({get:()=>c.modelValue,set:e=>p(`update:modelValue`,e)}),y=g([]),b=g(``);i(()=>c.modelValue,async e=>{console.log(`GoodsPushDialog: props.modelValue 变为`,e),e&&(console.log(`GoodsPushDialog: 开始加载云仓数据`),await x())});let x=async()=>{console.log(`GoodsPushDialog: loadCloudWarehouses 开始执行`);try{let e=await T({pageSize:100});if(console.log(`GoodsPushDialog: getWarehouseList 返回完整响应`,JSON.stringify(e,null,2)),e.code===200){let t=Array.isArray(e.data)?e.data:e.data?.list||[];console.log(`GoodsPushDialog: 原始仓库列表`,t),y.value=t.filter(e=>e.type===`cloud`),console.log(`GoodsPushDialog: 过滤后的云仓列表`,y.value),y.value.length===0&&console.warn(`GoodsPushDialog: 未找到云仓,请检查数据字段名或创建云仓`)}else console.error(`GoodsPushDialog: 返回码异常`,e)}catch(e){console.error(`GoodsPushDialog: 获取仓库列表失败`,e)}},S=()=>{p(`confirm`,{goods:c.selectedGoods,warehouseId:b.value}),m.value=!1},C=()=>{b.value=``};return(i,o)=>{let c=r(`el-table-column`),p=r(`el-table`),h=r(`el-option`),g=r(`el-select`),x=r(`el-form-item`),w=r(`el-button`),T=r(`el-dialog`);return a(),d(T,{modelValue:m.value,"onUpdate:modelValue":o[2]||=e=>m.value=e,title:`商品推送`,width:`600px`,onClose:C},{footer:u(()=>[l(`span`,E,[v(w,{onClick:o[1]||=e=>m.value=!1},{default:u(()=>[...o[3]||=[_(`取消`,-1)]]),_:1}),v(w,{type:`primary`,onClick:S,disabled:!b.value},{default:u(()=>[...o[4]||=[_(` 确认推送 `,-1)]]),_:1},8,[`disabled`])])]),default:u(()=>[v(p,{data:t.selectedGoods,border:``,style:{width:`100%`,"margin-bottom":`15px`}},{default:u(()=>[v(c,{prop:`name`,label:`商品名称`,"min-width":`150`}),v(c,{prop:`barcode`,label:`条码`,width:`120`}),v(c,{prop:`retailPrice`,label:`零售价`,width:`100`},{default:u(({row:e})=>[_(`¥`+n(e.retailPrice),1)]),_:1})]),_:1},8,[`data`]),v(x,{label:`目标仓库`,required:``},{default:u(()=>[v(g,{modelValue:b.value,"onUpdate:modelValue":o[0]||=e=>b.value=e,placeholder:`请选择仓库`,style:{width:`100%`}},{default:u(()=>[(a(!0),f(s,null,e(y.value,e=>(a(),d(h,{key:e.id,label:e.name,value:e.id},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`])]),_:1})]),_:1},8,[`modelValue`])}}},O={class:`goods-list-container`},k={class:`card-header`},A={class:`header-right`},j=p(c({__name:`List`,setup(i){let c=b(),p=g([]),T=g(!1),E=g(1),j=g(10),M=g(0),N=g(``),P=[{label:`食品`,value:`food`},{label:`服装`,value:`clothing`},{label:`电子产品`,value:`electronics`}],F=e=>{let t=P.find(t=>t.value===e);return t?t.label:e},I=h(()=>N.value?p.value.filter(e=>e.category===N.value):p.value),L=g([]),R=h(()=>p.value.filter(e=>L.value.includes(e.id))),z=g(!1),B=async()=>{T.value=!0;try{let e=await S({currentPage:E.value,pageSize:j.value});e.code===200?(p.value=e.data.list,M.value=e.data.total):x.error(e.message||`获取商品列表失败`)}catch(e){console.error(`加载商品列表异常`,e),x.error(`加载失败,请稍后重试`)}finally{T.value=!1}},V=e=>{console.log(`goToAdd called with type:`,e),c.push(`/goods/edit?type=${e}`)},H=e=>{c.push(`/goods/edit/${e}`)},U=async e=>{try{await y.confirm(`确定删除该商品吗?`,`提示`,{confirmButtonText:`确定`,cancelButtonText:`取消`,type:`warning`});let t=await C(e);console.log(`删除商品响应:`,t),t&&t.code===200?(x.success(`删除成功`),await B()):x.error(t?.message||`删除失败`)}catch(e){if(e===`cancel`)return;if(e.response){let t=e.response.data;x.error(t.message||`删除失败 (${e.response.status})`)}else e.message?x.error(e.message):x.error(`操作失败`);console.error(`删除商品异常`,e)}},W=e=>{L.value=e.map(e=>e.id),console.log(`选中商品IDs:`,L.value)},G=()=>{if(console.log(`List.vue: openBatchPush 被调用,选中商品数:`,L.value.length),L.value.length===0){x.warning(`请至少选择一个商品`);return}z.value=!0,console.log(`List.vue: pushDialogVisible 设置为`,z.value)},K=async({goods:e,warehouseId:t})=>{console.log(`推送确认,商品:`,e,`仓库ID:`,t);try{let n=await w({goodsIds:e.map(e=>e.id),warehouseId:Number(t)});n.code===200?x.success(`推送任务已提交`):x.error(n.message||`推送失败`)}catch(e){console.error(`推送异常`,e),x.error(`推送失败`)}z.value=!1,L.value=[]};return t(()=>{B()}),(t,i)=>{let c=r(`el-option`),p=r(`el-select`),h=r(`el-button`),g=r(`el-table-column`),y=r(`el-tag`),b=r(`el-table`),x=r(`el-pagination`),S=r(`el-card`),C=o(`loading`);return a(),f(`div`,O,[v(S,null,{header:u(()=>[l(`div`,k,[i[9]||=l(`span`,null,`商品列表`,-1),l(`div`,A,[v(p,{modelValue:N.value,"onUpdate:modelValue":i[0]||=e=>N.value=e,placeholder:`全部分类`,clearable:``,style:{width:`150px`,"margin-right":`10px`}},{default:u(()=>[(a(),f(s,null,e(P,e=>v(c,{key:e.value,label:e.label,value:e.value},null,8,[`label`,`value`])),64))]),_:1},8,[`modelValue`]),v(h,{type:`primary`,onClick:i[1]||=e=>V(`normal`)},{default:u(()=>[...i[6]||=[_(`新增普通商品`,-1)]]),_:1}),v(h,{type:`success`,onClick:i[2]||=e=>V(`combo`)},{default:u(()=>[...i[7]||=[_(`新增组套商品`,-1)]]),_:1}),v(h,{type:`warning`,onClick:G,disabled:L.value.length===0},{default:u(()=>[...i[8]||=[_(`批量推送`,-1)]]),_:1},8,[`disabled`])])])]),default:u(()=>[m((a(),d(b,{data:I.value,border:``,onSelectionChange:W,style:{width:`100%`}},{default:u(()=>[v(g,{type:`selection`,width:`55`}),v(g,{prop:`name`,label:`商品名称`,"min-width":`180`}),v(g,{prop:`barcode`,label:`条码`,width:`150`}),v(g,{prop:`type`,label:`商品类型`,width:`100`},{default:u(({row:e})=>[v(y,{type:e.type===`normal`?`primary`:`success`},{default:u(()=>[_(n(e.type===`normal`?`普通`:`组套`),1)]),_:2},1032,[`type`])]),_:1}),v(g,{prop:`category`,label:`分类`,width:`120`},{default:u(({row:e})=>[_(n(F(e.category)),1)]),_:1}),v(g,{prop:`unit`,label:`单位`,width:`80`}),v(g,{prop:`weight`,label:`重量(g)`,width:`100`}),v(g,{prop:`retailPrice`,label:`零售价(元)`,width:`100`},{default:u(({row:e})=>[_(`¥`+n(e.retailPrice),1)]),_:1}),v(g,{prop:`costPrice`,label:`成本价(元)`,width:`100`},{default:u(({row:e})=>[_(`¥`+n(e.costPrice),1)]),_:1}),v(g,{prop:`stock`,label:`库存`,width:`100`}),v(g,{label:`操作`,width:`200`,fixed:`right`},{default:u(({row:e})=>[v(h,{type:`primary`,size:`small`,onClick:t=>H(e.id)},{default:u(()=>[...i[10]||=[_(`编辑`,-1)]]),_:1},8,[`onClick`]),v(h,{type:`danger`,size:`small`,onClick:t=>U(e.id)},{default:u(()=>[...i[11]||=[_(`删除`,-1)]]),_:1},8,[`onClick`])]),_:1})]),_:1},8,[`data`])),[[C,T.value]]),v(x,{"current-page":E.value,"onUpdate:currentPage":i[3]||=e=>E.value=e,"page-size":j.value,"onUpdate:pageSize":i[4]||=e=>j.value=e,"page-sizes":[10,20,50],total:M.value,layout:`total, sizes, prev, pager, next, jumper`,onSizeChange:B,onCurrentChange:B,style:{"margin-top":`20px`,"text-align":`right`}},null,8,[`current-page`,`page-size`,`total`])]),_:1}),v(D,{modelValue:z.value,"onUpdate:modelValue":i[5]||=e=>z.value=e,"selected-goods":R.value,onConfirm:K},null,8,[`modelValue`,`selected-goods`])])}}}),[[`__scopeId`,`data-v-2d0a0855`]]);export{j as default}; |