2 lines
14 KiB
JavaScript
2 lines
14 KiB
JavaScript
var e=Object.defineProperty,l=Object.getOwnPropertySymbols,a=Object.prototype.hasOwnProperty,t=Object.prototype.propertyIsEnumerable,i=(l,a,t)=>a in l?e(l,a,{enumerable:!0,configurable:!0,writable:!0,value:t}):l[a]=t,o=(e,l,a)=>new Promise((t,i)=>{var o=e=>{try{s(a.next(e))}catch(l){i(l)}},n=e=>{try{s(a.throw(e))}catch(l){i(l)}},s=e=>e.done?t(e.value):Promise.resolve(e.value).then(o,n);s((a=a.apply(e,l)).next())});import{d as n,r as s,k as r,c as u,B as d,o as p,b as m,e as c,g as v,f,h as g,i as _,p as j,w as y,j as h,E as b,M as w,I as x,J as V,v as k,K as C,aV as S,T as O}from"./index-BoIUJTA2.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import{_ as T}from"./index-Bwtbh5WQ.js";import{_ as z}from"./index.vue_vue_type_script_setup_true_lang-AxI1L1VI.js";import{A as U}from"./index-BaXJ8CyS.js";import{_ as P}from"./index.vue_vue_type_style_index_0_lang-HxUCIPrH.js";import{u as A}from"./useTable-DzUOUR11.js";import{b as E,e as M,g as R,a as B,f as I,h as N}from"./product-qKpGgPBm.js";import $ from"./product-search-DSJH5irW.js";import{f as D}from"./price-CGt8tHWF.js";import{E as J}from"./index-D8nVJoNy.js";import{E as F}from"./index-ZsMdSUVI.js";import{a as L,E as H}from"./index-BcfO0-fK.js";import{E as Q,a as G}from"./index-D2gD5Tn5.js";import{E as K}from"./index-CSr24crn.js";import{E as W}from"./index-C_S0YbqD.js";import{E as X}from"./index-CjpBlozU.js";import{E as Y}from"./index-1OHUSGeP.js";/* empty css *//* empty css */import"./el-tooltip-l0sNRNKZ.js";import"./el-empty-CV-PB2A2.js";import"./index-BjuMygln.js";import"./index-Cp4NEpJ7.js";import"./index-BMeOzN3u.js";import"./index-COyGylbk.js";import"./index-Bq8lawOo.js";import"./_initCloneObject-DRmC-q3t.js";import"./isArrayLikeObject-CFQi-X2M.js";import"./raf-DsHSIRfX.js";import"./_baseIteratee-CtIat01j.js";import"./castArray-nM8ho4U3.js";import"./debounce-DQl5eUwG.js";import"./index-CXORCV4U.js";import"./index-C1haaLtB.js";import"./_plugin-vue_export-helper-BCo6x5W8.js";import"./index.vue_vue_type_script_setup_true_lang-DUbflfBQ.js";import"./iconify-DFoKediz.js";/* empty css *//* empty css *//* empty css */import"./el-dropdown-item-D7SYN_RE.js";import"./dropdown-Dk_wSiK6.js";import"./refs-Cw5r5QN8.js";/* empty css */import"./index-CZJaGuxf.js";import"./useTableColumns-FR69a2pD.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import"./index-C_sVHlWz.js";import"./index-CXD7B41Z.js";import"./index-js0HKKV6.js";import"./index-BaD29Izp.js";import"./_baseClone-Ct7RL6h5.js";import"./token-DWNpOE8r.js";import"./index-ClDjAOOe.js";import"./cloneDeep-B1gZFPYK.js";import"./index-BnK4BbY2.js";import"./use-dialog-FwJ-QdmW.js";const q={class:"mb-3 flex items-center gap-3"},Z={class:"flex flex-wrap gap-1"},ee=["src","onClick"],le=n({__name:"index",setup(e){const n=s({name:void 0,category_id:void 0,status:void 0}),{data:le,loading:ae,columns:te,pagination:ie,handleSizeChange:oe,handleCurrentChange:ne,getData:se,getDataDebounced:re,searchParams:ue,resetSearchParams:de}=A({core:{apiFn:e=>I({page:e.page,page_size:e.page_size,name:e.name,category_id:e.category_id,status:e.status}).then(e=>({records:e.list,total:e.total,current:e.page,size:e.page_size})),apiParams:{page:1,page_size:20},columnsFactory:()=>[{type:"selection",width:48},{prop:"id",label:"ID",width:90,align:"center"},{prop:"name",label:"名称",minWidth:220,showOverflowTooltip:!0},{prop:"images",label:"图片",useSlot:!0,width:180,align:"center"},{prop:"category_id",label:"分类",useSlot:!0,width:160},{prop:"price",label:"售价",width:140,align:"center",formatter:e=>D(e.price)},{prop:"cost_price",label:"成本价",width:140,align:"center",formatter:e=>e.cost_price?D(e.cost_price):"-"},{prop:"stock",label:"库存",width:120,align:"center"},{prop:"sales",label:"销量",width:120,align:"center"},{prop:"status",label:"状态",useSlot:!0,width:110,align:"center"},{prop:"show_in_miniapp",label:"小程序显示",useSlot:!0,width:110,align:"center"},{prop:"actions",label:"操作",useSlot:!0,width:180}]}}),pe=s(!1),me=s("创建商品"),ce=s(null),ve=s(!1),fe=s(0),ge=s([]);function _e(e){try{const l=JSON.parse(e||"[]");return Array.isArray(l)?l:[]}catch(l){return[]}}const je=r({name:"",category_id:void 0,price:void 0,cost_price:void 0,stock:void 0,description:"",show_in_miniapp:1}),ye=s([]),he=r({}),be=s([]),we=s([]),xe=u({get:()=>(je.price||0)/100,set:e=>{je.price=Math.round(100*e)}}),Ve=u({get:()=>(je.cost_price||0)/100,set:e=>{je.cost_price=Math.round(100*e)}}),ke=d(),Ce=u(()=>"/api/common/upload/wangeditor"),Se=u(()=>({Authorization:ke.accessToken})),Oe=e=>{const o=((e,o)=>{for(var n in o||(o={}))a.call(o,n)&&i(e,n,o[n]);if(l)for(var n of l(o))t.call(o,n)&&i(e,n,o[n]);return e})({},ue),s=e||n.value;Object.assign(o,s),re(o)},Te=s(null),ze=s([]),Ue=s(!1);function Pe(e){ze.value=e.map(e=>e.id),Ue.value=e.length===le.value.length&&le.value.length>0}function Ae(){var e;const l=null==(e=Te.value)?void 0:e.elTableRef;if(l&&(l.clearSelection(),Ue.value))for(const a of le.value)l.toggleRowSelection(a,!0)}function Ee(){return o(this,null,function*(){if(0===ze.value.length)return;const e=yield S.prompt("请输入统一库存数量","批量改库存",{inputType:"number",confirmButtonText:"确定",cancelButtonText:"取消"}).catch(()=>null),l=Number(null==e?void 0:e.value);!e||isNaN(l)||l<0||(yield N({ids:ze.value,stock:l}),yield se(),ze.value=[],Ue.value=!1)})}function Me(){return o(this,null,function*(){if(0===ze.value.length)return;(yield S.confirm("确认批量上架选中商品?","提示",{type:"warning"}).catch(()=>!1))&&(yield N({ids:ze.value,status:1}),yield se(),ze.value=[],Ue.value=!1)})}function Re(){return o(this,null,function*(){if(0===ze.value.length)return;(yield S.confirm("确认批量下架选中商品?","提示",{type:"warning"}).catch(()=>!1))&&(yield N({ids:ze.value,status:2}),yield se(),ze.value=[],Ue.value=!1)})}function Be(){me.value="创建商品",ce.value=null,Object.assign(je,{name:"",category_id:void 0,price:void 0,cost_price:void 0,stock:void 0,status:1,show_in_miniapp:1,description:""}),be.value=[],we.value=[],pe.value=!0}function Ie(){return o(this,null,function*(){je.name&&je.category_id&&null!=je.price&&null!=je.stock&&(je.images_json=JSON.stringify(be.value),ce.value?yield E(ce.value,je):yield M(je),pe.value=!1,yield se())})}function Ne(){return o(this,null,function*(){const e=yield B({page:1,page_size:100});ye.value=e.list.map(e=>({id:e.id,name:e.name}));for(const l of e.list)he[l.id]=l.name})}function $e(e,l,a){var t,i;let o=(null==(t=null==e?void 0:e.data)?void 0:t.url)||(null==e?void 0:e.url)||"";if(!o&&"string"==typeof e)try{const l=JSON.parse(e);o=(null==(i=null==l?void 0:l.data)?void 0:i.url)||(null==l?void 0:l.url)||""}catch(n){}o&&(be.value.push(o),we.value=be.value.map((e,l)=>({name:`img_${l}`,url:e})))}function De(e,l){const a=we.value.findIndex(l=>l.name===e.name||l.url===e.url);a>-1&&(be.value.splice(a,1),we.value.splice(a,1))}return p(()=>o(this,null,function*(){yield Ne(),yield se()})),(e,l)=>{const a=b,t=J,i=F,s=C,r=H,u=G,d=Q,p=K,A=W,E=L,M=X,B=Y;return c(),m("div",null,[v($,{modelValue:n.value,"onUpdate:modelValue":l[0]||(l[0]=e=>n.value=e),onSearch:Oe,onReset:j(de)},null,8,["modelValue","onReset"]),f("div",q,[v(a,{type:"primary",onClick:Be},{default:y(()=>[...l[14]||(l[14]=[h("创建商品",-1)])]),_:1}),v(t,{modelValue:Ue.value,"onUpdate:modelValue":l[1]||(l[1]=e=>Ue.value=e),onChange:Ae},{default:y(()=>[...l[15]||(l[15]=[h("全选本页",-1)])]),_:1},8,["modelValue"]),v(a,{disabled:0===ze.value.length,onClick:Ee},{default:y(()=>[...l[16]||(l[16]=[h("批量改库存",-1)])]),_:1},8,["disabled"]),v(a,{disabled:0===ze.value.length,onClick:Me,type:"success"},{default:y(()=>[...l[17]||(l[17]=[h("批量上架",-1)])]),_:1},8,["disabled"]),v(a,{disabled:0===ze.value.length,onClick:Re,type:"warning"},{default:y(()=>[...l[18]||(l[18]=[h("批量下架",-1)])]),_:1},8,["disabled"])]),v(U,{columns:j(te),"onUpdate:columns":l[2]||(l[2]=e=>w(te)?te.value=e:null),loading:j(ae),onRefresh:j(se)},null,8,["columns","loading","onRefresh"]),v(T,{loading:j(ae),data:j(le),columns:j(te),tableLayout:"auto",pagination:j(ie),onSelectionChange:Pe,ref_key:"tableRef",ref:Te,"onPagination:sizeChange":j(oe),"onPagination:currentChange":j(ne)},{status:y(({row:e})=>[v(i,{type:1===e.status?"success":"danger"},{default:y(()=>[h(k(1===e.status?"上架":"下架"),1)]),_:2},1032,["type"])]),show_in_miniapp:y(({row:e})=>[v(i,{type:1===e.show_in_miniapp?"success":"info"},{default:y(()=>[h(k(1===e.show_in_miniapp?"显示":"隐藏"),1)]),_:2},1032,["type"])]),category_id:y(({row:e})=>[v(i,{type:"primary"},{default:y(()=>[h(k(j(he)[e.category_id]||e.category_id),1)]),_:2},1024)]),images:y(({row:e})=>[f("div",Z,[(c(!0),m(x,null,V(_e(e.images_json),(l,a)=>(c(),m("img",{key:a,src:l,class:"w-14 h-14 object-cover rounded cursor-pointer border",onClick:l=>function(e,l=0){ge.value=e,fe.value=l,ve.value=!0}(_e(e.images_json),a)},null,8,ee))),128))])]),actions:y(({row:e})=>[v(z,{type:"edit",onClick:l=>function(e){me.value="编辑商品",ce.value=e.id,Object.assign(je,{name:e.name,category_id:e.category_id,price:e.price,cost_price:e.cost_price||0,stock:e.stock,status:e.status,show_in_miniapp:e.show_in_miniapp,description:e.description||""});try{const l=JSON.parse(e.images_json||"[]");be.value=Array.isArray(l)?l:[],we.value=be.value.map((e,l)=>({name:`img_${l}`,url:e}))}catch(l){be.value=[],we.value=[]}pe.value=!0}(e)},null,8,["onClick"]),v(z,{type:"delete",onClick:l=>function(e){return o(this,null,function*(){var l,a,t;try{const l=le.value.find(l=>l.id===e),a=(null==l?void 0:l.name)||"该商品";yield S.confirm(`确定要删除商品"${a}"吗?此操作不可恢复`,"删除确认",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning",beforeClose:(e,l,a)=>{"confirm"===e?(l.confirmButtonLoading=!0,a()):a()}}),yield R(e),O.success({message:`"${a}"已成功删除`,duration:3e3}),yield se()}catch(i){if("cancel"===i)return;const o=(null==(a=null==(l=null==i?void 0:i.response)?void 0:l.data)?void 0:a.message)||i.message||"删除失败",n=(null==(t=le.value.find(l=>l.id===e))?void 0:t.name)||"该商品";O.error({message:`"${n}"删除失败:${o}`,duration:4e3})}})}(e.id)},null,8,["onClick"])]),_:1},8,["loading","data","columns","pagination","onPagination:sizeChange","onPagination:currentChange"]),v(M,{modelValue:pe.value,"onUpdate:modelValue":l[12]||(l[12]=e=>pe.value=e),title:me.value,width:"800px"},{footer:y(()=>[v(a,{onClick:l[11]||(l[11]=e=>pe.value=!1)},{default:y(()=>[...l[20]||(l[20]=[h("取消",-1)])]),_:1}),v(a,{type:"primary",onClick:Ie},{default:y(()=>[...l[21]||(l[21]=[h("提交",-1)])]),_:1})]),default:y(()=>[v(E,{model:j(je),"label-width":"110px"},{default:y(()=>[v(r,{label:"名称"},{default:y(()=>[v(s,{modelValue:j(je).name,"onUpdate:modelValue":l[3]||(l[3]=e=>j(je).name=e)},null,8,["modelValue"])]),_:1}),v(r,{label:"分类"},{default:y(()=>[v(d,{modelValue:j(je).category_id,"onUpdate:modelValue":l[4]||(l[4]=e=>j(je).category_id=e),modelModifiers:{number:!0},onVisibleChange:Ne},{default:y(()=>[(c(!0),m(x,null,V(ye.value,e=>(c(),g(u,{key:e.id,label:e.name,value:e.id},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1}),v(r,{label:"图片"},{default:y(()=>[v(p,{action:Ce.value,name:"file",accept:"image/*","list-type":"picture-card",headers:Se.value,"on-success":$e,"on-remove":De,"file-list":we.value},{default:y(()=>[...l[19]||(l[19]=[f("i",{class:"el-icon"},[f("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[f("path",{fill:"currentColor",d:"M480 512h64V256h-64zm32 288a32 32 0 1 0 0-64a32 32 0 0 0 0 64"})])],-1)])]),_:1},8,["action","headers","file-list"])]),_:1}),v(r,{label:"价格(元)"},{default:y(()=>[v(A,{modelValue:xe.value,"onUpdate:modelValue":l[5]||(l[5]=e=>xe.value=e),min:0,precision:2,step:.01,style:{width:"100%"}},null,8,["modelValue"])]),_:1}),v(r,{label:"成本价(元)"},{default:y(()=>[v(A,{modelValue:Ve.value,"onUpdate:modelValue":l[6]||(l[6]=e=>Ve.value=e),min:0,precision:2,step:.01,style:{width:"100%"},placeholder:"选填,用于盈亏计算"},null,8,["modelValue"])]),_:1}),v(r,{label:"库存"},{default:y(()=>[v(s,{modelValue:j(je).stock,"onUpdate:modelValue":l[7]||(l[7]=e=>j(je).stock=e),modelModifiers:{number:!0}},null,8,["modelValue"])]),_:1}),v(r,{label:"状态"},{default:y(()=>[v(d,{modelValue:j(je).status,"onUpdate:modelValue":l[8]||(l[8]=e=>j(je).status=e),modelModifiers:{number:!0}},{default:y(()=>[v(u,{value:1,label:"上架"}),v(u,{value:2,label:"下架"})]),_:1},8,["modelValue"])]),_:1}),v(r,{label:"小程序显示"},{default:y(()=>[v(d,{modelValue:j(je).show_in_miniapp,"onUpdate:modelValue":l[9]||(l[9]=e=>j(je).show_in_miniapp=e),modelModifiers:{number:!0}},{default:y(()=>[v(u,{value:1,label:"显示"}),v(u,{value:0,label:"隐藏"})]),_:1},8,["modelValue"])]),_:1}),v(r,{label:"商品详情"},{default:y(()=>[v(P,{modelValue:j(je).description,"onUpdate:modelValue":l[10]||(l[10]=e=>j(je).description=e)},null,8,["modelValue"])]),_:1})]),_:1},8,["model"])]),_:1},8,["modelValue","title"]),ve.value?(c(),g(B,{key:0,"url-list":ge.value,"initial-index":fe.value,onClose:l[13]||(l[13]=e=>ve.value=!1)},null,8,["url-list","initial-index"])):_("",!0)])}}});export{le as default};
|