Files
jurong_circle_frontdesk/dist/assets/ProductDetail-C9NaqNoj.js
2025-07-26 15:35:53 +08:00

2 lines
7.2 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import{r as v,c as X,h as Y,y as i,A as e,J as Z,Q as o,I as r,al as u,ar as ee,K as V,O as d,P as m,a6 as g,aB as se,aA as te,z as l,M as f,u as h,H as I}from"./vendor-C3mpOp0n.js";import{_ as ae,u as oe,a as k}from"./index-BlP3rxMf.js";import{a as C,n as le,k as ne,d as R,o as ie,u as de,l as re}from"./elementPlus-DFx51bSH.js";const ue={class:"product-detail-page"},ce={class:"navbar"},_e={class:"nav-left"},ve={class:"nav-right"},pe={class:"product-content"},me={key:0,class:"product-detail"},ge={class:"product-images"},fe=["src","alt"],he={class:"product-info"},ye={class:"product-header"},ke={class:"product-title"},be={class:"product-tags"},we={class:"product-price"},Ve={class:"current-price"},Ce={class:"price-number"},xe={key:0,class:"original-price"},Pe={key:1,class:"discount-info"},$e={class:"product-stats"},ze={class:"stat-item"},De={class:"stat-value"},Be={class:"stat-item"},Ue={class:"stat-value"},Ne={class:"stat-item"},Ie={class:"stat-value"},Re={class:"product-description"},Te={class:"product-details"},Me={class:"detail-label"},qe={class:"detail-value"},Ae={class:"purchase-options"},Ee={class:"quantity-selector"},Se={class:"action-buttons"},Le={class:"product-reviews"},Fe={class:"reviews-header"},He={class:"review-count"},Je={key:0,class:"no-reviews"},Ke={key:1,class:"reviews-list"},Oe={class:"review-header"},Qe={class:"reviewer-info"},je={class:"reviewer-name"},Ge={class:"review-meta"},We={class:"review-date"},Xe={class:"review-content"},Ye={key:0,class:"review-images"},Ze=["src","onClick"],es={class:"recommended-products"},ss={class:"recommended-grid"},ts=["onClick"],as=["src","alt"],os={class:"item-info"},ls={class:"item-price"},ns={__name:"ProductDetail",setup(is){const T=se(),x=te();oe();const P=v(!1),a=v(null),y=v(1),b=v([]),B=v([]),$=v(!1),z=v(0),D=v(0),w=X(()=>a.value?a.value.points*y.value:0),M=async()=>{try{P.value=!0;const n=T.params.id,[s,_,p]=await Promise.all([k.get(`/products/${n}`),k.get(`/products/${n}/reviews`),k.get(`/products/${n}/recommended`)]);a.value=s.data,b.value=_.data,B.value=p.data}catch{C.error("获取商品详情失败"),x.go(-1)}finally{P.value=!1}},q=()=>{C.success("已添加到购物车"),D.value++},A=async()=>{try{await re.confirm(`确定要花费 ${w.value} 积分兑换 ${y.value}${a.value.name} 吗?`,"确认兑换",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"});const n={items:[{productId:a.value.id,quantity:y.value,points:a.value.points}],totalPoints:w.value};await k.post("/orders",n),C.success("兑换成功!"),x.push("/orders")}catch(n){n!=="cancel"&&C.error("兑换失败,请重试")}},E=n=>{x.push(`/product/${n}`)},S=n=>{},L=n=>new Date(n).toLocaleDateString("zh-CN"),F=async()=>{try{const n=await k.get("/user/points");z.value=n.data.points}catch(n){console.error("获取用户积分失败:",n)}};return Y(()=>{M(),F()}),(n,s)=>{const _=u("el-icon"),p=u("el-button"),H=u("el-badge"),J=u("el-carousel-item"),K=u("el-carousel"),U=u("el-tag"),N=u("el-rate"),O=u("el-input-number"),Q=u("el-avatar"),j=u("el-drawer"),G=ee("loading");return l(),i("div",ue,[e("nav",ce,[e("div",_e,[o(p,{type:"text",onClick:s[0]||(s[0]=t=>n.$router.go(-1)),class:"back-btn"},{default:r(()=>[o(_,null,{default:r(()=>[o(h(le))]),_:1}),s[5]||(s[5]=f(" 返回 "))]),_:1,__:[5]})]),s[6]||(s[6]=e("div",{class:"nav-center"},[e("h1",{class:"nav-title"},"商品详情")],-1)),e("div",ve,[o(p,{type:"text",onClick:s[1]||(s[1]=t=>$.value=!0),class:"cart-btn"},{default:r(()=>[o(H,{value:D.value,hidden:D.value===0},{default:r(()=>[o(_,null,{default:r(()=>[o(h(ne))]),_:1})]),_:1},8,["value","hidden"])]),_:1})])]),Z((l(),i("div",pe,[a.value?(l(),i("div",me,[e("div",ge,[o(K,{interval:4e3,type:"card",height:"300px","indicator-position":"outside"},{default:r(()=>[(l(!0),i(m,null,g(a.value.images,(t,c)=>(l(),I(J,{key:c},{default:r(()=>[e("img",{src:t,alt:a.value.name,class:"product-image"},null,8,fe)]),_:2},1024))),128))]),_:1})]),e("div",he,[e("div",ye,[e("h1",ke,d(a.value.name),1),e("div",be,[(l(!0),i(m,null,g(a.value.tags,t=>(l(),I(U,{key:t,size:"small",class:"product-tag"},{default:r(()=>[f(d(t),1)]),_:2},1024))),128))])]),e("div",we,[e("div",Ve,[o(_,null,{default:r(()=>[o(h(R))]),_:1}),e("span",Ce,d(a.value.points),1),s[7]||(s[7]=e("span",{class:"price-unit"},"积分",-1))]),a.value.originalPoints?(l(),i("div",xe," 原价:"+d(a.value.originalPoints)+"积分 ",1)):V("",!0),a.value.discount?(l(),i("div",Pe,[o(U,{type:"danger",size:"small"},{default:r(()=>[f(d(a.value.discount)+"折优惠",1)]),_:1})])):V("",!0)]),e("div",$e,[e("div",ze,[s[8]||(s[8]=e("span",{class:"stat-label"},"销量",-1)),e("span",De,d(a.value.sales),1)]),e("div",Be,[s[9]||(s[9]=e("span",{class:"stat-label"},"库存",-1)),e("span",Ue,d(a.value.stock),1)]),e("div",Ne,[s[10]||(s[10]=e("span",{class:"stat-label"},"评分",-1)),e("span",Ie,[o(N,{modelValue:a.value.rating,"onUpdate:modelValue":s[2]||(s[2]=t=>a.value.rating=t),disabled:"","show-score":"","text-color":"#ff9900","score-template":"{value}"},null,8,["modelValue"])])])]),e("div",Re,[s[11]||(s[11]=e("h3",null,"商品描述",-1)),e("p",null,d(a.value.description),1)]),e("div",Te,[s[12]||(s[12]=e("h3",null,"商品详情",-1)),(l(!0),i(m,null,g(a.value.details,(t,c)=>(l(),i("div",{class:"detail-item",key:c},[e("span",Me,d(c)+"",1),e("span",qe,d(t),1)]))),128))]),e("div",Ae,[e("div",Ee,[s[13]||(s[13]=e("span",{class:"option-label"},"数量:",-1)),o(O,{modelValue:y.value,"onUpdate:modelValue":s[3]||(s[3]=t=>y.value=t),min:1,max:a.value.stock,size:"small"},null,8,["modelValue","max"])])])]),e("div",Se,[o(p,{size:"large",onClick:q,disabled:a.value.stock===0},{default:r(()=>s[14]||(s[14]=[f(" 加入购物车 ")])),_:1,__:[14]},8,["disabled"]),o(p,{type:"primary",size:"large",onClick:A,disabled:a.value.stock===0||w.value>z.value},{default:r(()=>[f(d(a.value.stock===0?"缺货":w.value>z.value?"积分不足":"立即兑换"),1)]),_:1},8,["disabled"])]),e("div",Le,[e("div",Fe,[s[15]||(s[15]=e("h3",null,"用户评价",-1)),e("span",He,"("+d(b.value.length)+"条评价)",1)]),b.value.length===0?(l(),i("div",Je,[o(_,null,{default:r(()=>[o(h(ie))]),_:1}),s[16]||(s[16]=e("p",null,"暂无评价",-1))])):(l(),i("div",Ke,[(l(!0),i(m,null,g(b.value,t=>(l(),i("div",{key:t.id,class:"review-item"},[e("div",Oe,[e("div",Qe,[o(Q,{size:32,src:t.user.avatar},{default:r(()=>[o(_,null,{default:r(()=>[o(h(de))]),_:1})]),_:2},1032,["src"]),e("span",je,d(t.user.name),1)]),e("div",Ge,[o(N,{modelValue:t.rating,"onUpdate:modelValue":c=>t.rating=c,disabled:"",size:"small"},null,8,["modelValue","onUpdate:modelValue"]),e("span",We,d(L(t.createdAt)),1)])]),e("div",Xe,[e("p",null,d(t.content),1),t.images?(l(),i("div",Ye,[(l(!0),i(m,null,g(t.images,(c,W)=>(l(),i("img",{key:W,src:c,class:"review-image",onClick:ds=>S()},null,8,Ze))),128))])):V("",!0)])]))),128))]))]),e("div",es,[s[17]||(s[17]=e("h3",null,"推荐商品",-1)),e("div",ss,[(l(!0),i(m,null,g(B.value,t=>(l(),i("div",{key:t.id,class:"recommended-item",onClick:c=>E(t.id)},[e("img",{src:t.image,alt:t.name},null,8,as),e("div",os,[e("h4",null,d(t.name),1),e("p",ls,[o(_,null,{default:r(()=>[o(h(R))]),_:1}),f(" "+d(t.points),1)])])],8,ts))),128))])])])):V("",!0)])),[[G,P.value]]),o(j,{modelValue:$.value,"onUpdate:modelValue":s[4]||(s[4]=t=>$.value=t),title:"购物车",direction:"rtl",size:"80%"},null,8,["modelValue"])])}}},_s=ae(ns,[["__scopeId","data-v-ee7c2f3b"]]);export{_s as default};