2 lines
7.8 KiB
JavaScript
2 lines
7.8 KiB
JavaScript
|
|
import{r as u,c as z,h as de,y as c,A as o,Q as a,I as n,al as v,u as p,J as ce,K as M,ar as re,P as B,a6 as T,aA as ue,z as r,M as d,O as i,D as _e,V as ve}from"./vendor-C3mpOp0n.js";import{_ as pe,u as me,a as S}from"./index-BlP3rxMf.js";import{h as fe,a as m,d as P,s as he,f as ge,j as ye,k as A,l as ke}from"./elementPlus-DFx51bSH.js";const Ce={class:"shop-page"},we={class:"navbar"},be={class:"nav-right"},Ve={class:"search-section"},xe={class:"category-section"},ze={class:"category-list"},Me=["onClick"],Pe={class:"products-section"},$e={class:"section-header"},qe={class:"sort-btn"},Ie={class:"products-grid"},Be=["onClick"],Te={class:"product-image"},Se=["src","alt"],Ue={key:0,class:"discount-badge"},De={class:"product-info"},Ne={class:"product-name"},Ee={class:"product-desc"},Le={class:"product-price"},Ae={class:"current-price"},Fe={key:0,class:"original-price"},Ke={class:"product-stats"},je={class:"sales"},Je={class:"stock"},Oe={class:"product-actions"},Qe={key:0,class:"empty-state"},Re={key:1,class:"load-more"},Ge={class:"cart-content"},He={key:0,class:"empty-cart"},We={key:1},Xe=["src","alt"],Ye={class:"item-info"},Ze={class:"item-price"},es={class:"item-actions"},ss={class:"cart-footer"},ts={class:"total-points"},as={__name:"Shop",setup(os){const U=ue();me();const w=u(!1),$=u(!1),f=u(""),h=u("all"),b=u("default"),q=u([]),I=u(1),D=u(!0),V=u(!1),_=u([]),k=u(0),F=u([{id:"all",name:"全部",icon:"🛍️"},{id:"electronics",name:"数码",icon:"📱"},{id:"books",name:"图书",icon:"📚"},{id:"lifestyle",name:"生活",icon:"🏠"},{id:"food",name:"美食",icon:"🍔"},{id:"sports",name:"运动",icon:"⚽"},{id:"beauty",name:"美妆",icon:"💄"}]),N=z(()=>{let s=q.value;switch(h.value!=="all"&&(s=s.filter(e=>e.category===h.value)),f.value&&(s=s.filter(e=>e.name.toLowerCase().includes(f.value.toLowerCase())||e.description.toLowerCase().includes(f.value.toLowerCase()))),b.value){case"price_asc":s.sort((e,l)=>e.points-l.points);break;case"price_desc":s.sort((e,l)=>l.points-e.points);break;case"sales":s.sort((e,l)=>l.sales-e.sales);break}return s}),K=z(()=>({default:"默认排序",price_asc:"价格从低到高",price_desc:"价格从高到低",sales:"销量优先"})[b.value]),E=z(()=>_.value.reduce((s,e)=>s+e.quantity,0)),g=z(()=>_.value.reduce((s,e)=>s+e.points*e.quantity,0)),j=s=>{h.value=s},J=s=>{b.value=s},O=fe(()=>{},300),Q=s=>{U.push(`/product/${s}`)},R=s=>{const e=_.value.find(l=>l.id===s.id);e?e.quantity<s.stock?(e.quantity++,m.success("已添加到购物车")):m.warning("库存不足"):(_.value.push({...s,quantity:1}),m.success("已添加到购物车"))},G=s=>{},H=s=>{const e=_.value.findIndex(l=>l.id===s);e>-1&&(_.value.splice(e,1),m.success("已从购物车移除"))},W=async()=>{try{await ke.confirm(`确定要花费 ${g.value} 积分兑换这些商品吗?`,"确认兑换",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"});const s={items:_.value.map(e=>({productId:e.id,quantity:e.quantity,points:e.points})),totalPoints:g.value};await S.post("/orders",s),_.value=[],V.value=!1,k.value-=g.value,m.success("兑换成功!"),U.push("/orders")}catch(s){s!=="cancel"&&m.error("兑换失败,请重试")}},L=async(s=!1)=>{try{s?$.value=!0:(w.value=!0,I.value=1);const e=await S.get("/products",{params:{page:I.value,limit:20,category:h.value==="all"?"":h.value,keyword:f.value,sort:b.value}});s?q.value.push(...e.data.products):q.value=e.data.products,D.value=e.data.hasMore,I.value++}catch{m.error("获取商品列表失败")}finally{w.value=!1,$.value=!1}},X=()=>{L(!0)},Y=async()=>{try{const s=await S.get("/user/points");k.value=s.data.points}catch(s){console.error("获取用户积分失败:",s)}},Z=(s,e)=>s.length<=e?s:s.substring(0,e)+"...";return de(()=>{L(),Y()}),(s,e)=>{const l=v("el-icon"),C=v("el-button"),ee=v("el-input"),se=v("el-scrollbar"),x=v("el-dropdown-item"),te=v("el-dropdown-menu"),ae=v("el-dropdown"),oe=v("el-badge"),ne=v("el-input-number"),le=v("el-drawer"),ie=re("loading");return r(),c("div",Ce,[o("nav",we,[e[4]||(e[4]=o("div",{class:"nav-center"},[o("h1",{class:"nav-title"},"积分商
|