1 |
- import{i as q,d as M,aG as A,n as K,$ as rt,aW as St,q as L,D as E,x as R,a7 as wt,g as o,al as G,aX as I,ac as yt,at as Pt,aa as lt,aY as Q,ao as xt,t as N,aZ as Ct,l as Y,aQ as tt,m as $,a8 as Tt,E as It,aE as jt,aF as Bt,L as Dt,o as ct,aU as Lt,a3 as Rt,ai as Wt,I as ut,am as Ht,ax as Nt,aB as Yt,a_ as Xt,a$ as At,w as dt,b0 as Et,B as Zt,a as $t,f as Mt,h as H,ap as zt,aO as Ot,F as Gt,b1 as Ft,M as qt}from"./index-bc617d61.js";import{u as Vt}from"./student-register-store-20da1c1d.js";import{a as mt,S as gt}from"./index-64babbe9.js";import{I as ht}from"./index-e80a7d08.js";import{C as Jt}from"./index-344192ea.js";import{C as et}from"./index-917ed250.js";import{R as Ut,C as ot}from"./index-9ae54693.js";import{R as Kt,a as Qt}from"./index-92939616.js";import{T as te}from"./index-154c7237.js";import"./Checker-9a3c6d3f.js";const at=t=>Math.sqrt((t[0].clientX-t[1].clientX)**2+(t[0].clientY-t[1].clientY)**2),ee=t=>({x:(t[0].clientX+t[1].clientX)/2,y:(t[0].clientY+t[1].clientY)/2}),F=q("image-preview")[1],st=2.6;var oe=M({props:{src:String,show:Boolean,active:Number,minZoom:A(K),maxZoom:A(K),rootWidth:A(Number),rootHeight:A(Number),disableZoom:Boolean},emits:["scale","close","longPress"],setup(t,{emit:n,slots:i}){const e=rt({scale:1,moveX:0,moveY:0,moving:!1,zooming:!1,initializing:!1,imageRatio:0}),a=St(),m=L(),x=L(),S=L(!1),v=L(!1);let _=0;const p=E(()=>{const{scale:s,moveX:r,moveY:l,moving:g,zooming:b,initializing:B}=e,X={transitionDuration:b||g||B?"0s":".3s"};return(s!==1||v.value)&&(X.transform=`matrix(${s}, 0, 0, ${s}, ${r}, ${l})`),X}),d=E(()=>{if(e.imageRatio){const{rootWidth:s,rootHeight:r}=t,l=S.value?r/e.imageRatio:s;return Math.max(0,(e.scale*l-s)/2)}return 0}),h=E(()=>{if(e.imageRatio){const{rootWidth:s,rootHeight:r}=t,l=S.value?r:s*e.imageRatio;return Math.max(0,(e.scale*l-r)/2)}return 0}),C=(s,r)=>{var l;if(s=I(s,+t.minZoom,+t.maxZoom+1),s!==e.scale){const g=s/e.scale;if(e.scale=s,r){const b=lt((l=m.value)==null?void 0:l.$el),B={x:b.width*.5,y:b.height*.5},X=e.moveX-(r.x-b.left-B.x)*(g-1),bt=e.moveY-(r.y-b.top-B.y)*(g-1);e.moveX=I(X,-d.value,d.value),e.moveY=I(bt,-h.value,h.value)}else e.moveX=0,e.moveY=v.value?_:0;n("scale",{scale:s,index:t.active})}},w=()=>{C(1)},j=()=>{const s=e.scale>1?1:2;C(s,s===2||v.value?{x:a.startX.value,y:a.startY.value}:void 0)};let k,y,c,P,T,z,W,V,O=!1;const vt=s=>{const{touches:r}=s;if(k=r.length,k===2&&t.disableZoom)return;const{offsetX:l}=a;a.start(s),y=e.moveX,c=e.moveY,V=Date.now(),O=!1,e.moving=k===1&&(e.scale!==1||v.value),e.zooming=k===2&&!l.value,e.zooming&&(P=e.scale,T=at(r))},ft=s=>{const{touches:r}=s;if(a.move(s),e.moving){const{deltaX:l,deltaY:g}=a,b=l.value+y,B=g.value+c;if((b>d.value||b<-d.value)&&!O&&a.isHorizontal()){e.moving=!1;return}O=!0,G(s,!0),e.moveX=I(b,-d.value,d.value),e.moveY=I(B,-h.value,h.value)}if(e.zooming&&(G(s,!0),r.length===2)){const l=at(r),g=P*l/T;z=ee(r),C(g,z)}},_t=()=>{if(k>1)return;const{offsetX:s,offsetY:r}=a,l=Date.now()-V,g=250;s.value<Q&&r.value<Q&&(l<g?W?(clearTimeout(W),W=null,j()):W=setTimeout(()=>{n("close"),W=null},g):l>xt&&n("longPress"))},J=s=>{let r=!1;if((e.moving||e.zooming)&&(r=!0,e.moving&&y===e.moveX&&c===e.moveY&&(r=!1),!s.touches.length)){e.zooming&&(e.moveX=I(e.moveX,-d.value,d.value),e.moveY=I(e.moveY,-h.value,h.value),e.zooming=!1),e.moving=!1,y=0,c=0,P=1,e.scale<1&&w();const l=+t.maxZoom;e.scale>l&&C(l,z)}G(s,r),_t(),a.reset()},U=()=>{const{rootWidth:s,rootHeight:r}=t,l=r/s,{imageRatio:g}=e;S.value=e.imageRatio>l&&g<st,v.value=e.imageRatio>l&&g>=st,v.value&&(_=(g*s-r)/2,e.moveY=_,e.initializing=!0,yt(()=>{e.initializing=!1})),w()},kt=s=>{const{naturalWidth:r,naturalHeight:l}=s.target;e.imageRatio=l/r,U()};return R(()=>t.active,w),R(()=>t.show,s=>{s||w()}),R(()=>[t.rootWidth,t.rootHeight],U),wt("touchmove",ft,{target:E(()=>{var s;return(s=x.value)==null?void 0:s.$el})}),()=>{const s={loading:()=>o(Pt,{type:"spinner"},null)};return o(mt,{ref:x,class:F("swipe-item"),onTouchstartPassive:vt,onTouchend:J,onTouchcancel:J},{default:()=>[i.image?o("div",{class:F("image-wrap")},[i.image({src:t.src})]):o(ht,{ref:m,src:t.src,fit:"contain",class:F("image",{vertical:S.value}),style:p.value,onLoad:kt},s)]})}}});const[ae,D]=q("image-preview"),se=["show","teleport","transition","overlayStyle","closeOnPopstate"],ie={show:Boolean,loop:N,images:Ct(),minZoom:Y(1/3),maxZoom:Y(3),overlay:N,closeable:Boolean,showIndex:N,className:tt,closeIcon:$("clear"),transition:String,beforeClose:Function,overlayClass:tt,overlayStyle:Object,swipeDuration:Y(300),startPosition:Y(0),showIndicators:Boolean,closeOnPopstate:N,closeIconPosition:$("top-right"),teleport:[String,Object]};var pt=M({name:ae,props:ie,emits:["scale","close","closed","change","longPress","update:show"],setup(t,{emit:n,slots:i}){const e=L(),a=rt({active:0,rootWidth:0,rootHeight:0,disableZoom:!1}),m=()=>{if(e.value){const c=lt(e.value.$el);a.rootWidth=c.width,a.rootHeight=c.height,e.value.resize()}},x=c=>n("scale",c),S=c=>n("update:show",c),v=()=>{Ht(t.beforeClose,{args:[a.active],done:()=>S(!1)})},_=c=>{c!==a.active&&(a.active=c,n("change",c))},p=()=>{if(t.showIndex)return o("div",{class:D("index")},[i.index?i.index({index:a.active}):`${a.active+1} / ${t.images.length}`])},d=()=>{if(i.cover)return o("div",{class:D("cover")},[i.cover()])},h=()=>{a.disableZoom=!0},C=()=>{a.disableZoom=!1},w=()=>o(gt,{ref:e,lazyRender:!0,loop:t.loop,class:D("swipe"),duration:t.swipeDuration,initialSwipe:t.startPosition,showIndicators:t.showIndicators,indicatorColor:"white",onChange:_,onDragEnd:C,onDragStart:h},{default:()=>[t.images.map((c,P)=>o(oe,{src:c,show:t.show,active:a.active,maxZoom:t.maxZoom,minZoom:t.minZoom,rootWidth:a.rootWidth,rootHeight:a.rootHeight,disableZoom:a.disableZoom,onScale:x,onClose:v,onLongPress:()=>n("longPress",{index:P})},{image:i.image}))]}),j=()=>{if(t.closeable)return o(ut,{role:"button",name:t.closeIcon,class:[D("close-icon",t.closeIconPosition),Wt],onClick:v},null)},k=()=>n("closed"),y=(c,P)=>{var T;return(T=e.value)==null?void 0:T.swipeTo(c,P)};return Tt({swipeTo:y}),It(m),R([jt,Bt],m),R(()=>t.startPosition,c=>_(+c)),R(()=>t.show,c=>{const{images:P,startPosition:T}=t;c?(_(+T),Dt(()=>{m(),y(+T,{immediate:!0})})):n("close",{index:a.active,url:P[a.active]})}),()=>o(Rt,ct({class:[D(),t.className],overlayClass:[D("overlay"),t.overlayClass],onClosed:k,"onUpdate:show":S},Lt(t,se)),{default:()=>[j(),w(),p(),d()]})}});let Z;const ne={loop:!0,images:[],maxZoom:3,minZoom:1/3,onScale:void 0,onClose:void 0,onChange:void 0,teleport:"body",className:"",showIndex:!0,closeable:!1,closeIcon:"clear",transition:void 0,beforeClose:void 0,overlayStyle:void 0,overlayClass:void 0,startPosition:0,swipeDuration:300,showIndicators:!1,closeOnPopstate:!0,closeIconPosition:"top-right"};function re(){({instance:Z}=Xt({setup(){const{state:t,toggle:n}=At(),i=()=>{t.images=[]};return()=>o(pt,ct(t,{onClosed:i,"onUpdate:show":n}),null)}}))}const it=(t,n=0)=>{if(Nt)return Z||re(),t=Array.isArray(t)?{images:t,startPosition:n}:t,Z.open(Yt({},ne,t)),Z};dt(pt);const[le,f,ce]=q("submit-bar"),ue={tip:String,label:String,price:Number,tipIcon:String,loading:Boolean,currency:$("¥"),disabled:Boolean,textAlign:String,buttonText:String,buttonType:$("danger"),buttonColor:String,suffixLabel:String,placeholder:Boolean,decimalLength:Y(2),safeAreaInsetBottom:N};var de=M({name:le,props:ue,emits:["submit"],setup(t,{emit:n,slots:i}){const e=L(),a=Et(e,f),m=()=>{const{price:p,label:d,currency:h,textAlign:C,suffixLabel:w,decimalLength:j}=t;if(typeof p=="number"){const k=(p/100).toFixed(+j).split("."),y=j?`.${k[1]}`:"";return o("div",{class:f("text"),style:{textAlign:C}},[o("span",null,[d||ce("label")]),o("span",{class:f("price")},[h,o("span",{class:f("price-integer")},[k[0]]),y]),w&&o("span",{class:f("suffix-label")},[w])])}},x=()=>{var p;const{tip:d,tipIcon:h}=t;if(i.tip||d)return o("div",{class:f("tip")},[h&&o(ut,{class:f("tip-icon"),name:h},null),d&&o("span",{class:f("tip-text")},[d]),(p=i.tip)==null?void 0:p.call(i)])},S=()=>n("submit"),v=()=>i.button?i.button():o(Zt,{round:!0,type:t.buttonType,text:t.buttonText,class:f("button",t.buttonType),color:t.buttonColor,loading:t.loading,disabled:t.disabled,onClick:S},null),_=()=>{var p,d;return o("div",{ref:e,class:[f(),{"van-safe-area-bottom":t.safeAreaInsetBottom}]},[(p=i.top)==null?void 0:p.call(i),x(),o("div",{class:f("bar")},[(d=i.default)==null?void 0:d.call(i),m(),v()])])};return()=>t.placeholder?a(_):_()}});const me=dt(de),ge="_swipeItemImg_tka2j_1",he="_swipe_tka2j_1",pe="_goodsHead_tka2j_17",ve="_priceGroup_tka2j_24",fe="_price_tka2j_24",_e="_delPrice_tka2j_37",ke="_stock_tka2j_43",be="_goodsName_tka2j_47",Se="_row_tka2j_53",we="_col_tka2j_57",ye="_radio_tka2j_61",Pe="_badge_tka2j_96",xe="_section_tka2j_100",Ce="_detail_tka2j_104",Te="_photoDetail_tka2j_129",Ie="_goodsDetail_tka2j_133",je="_actionBar_tka2j_136",Be="_text_tka2j_158",De="_addCertBtn_tka2j_163",Le="_buyGroup_tka2j_172",Re="_selectWrap_tka2j_178",We="_shareBtn_tka2j_184",He="_shareWrap_tka2j_190",Ne="_sharePic_tka2j_200",Ye="_shareLeft_tka2j_205",Xe="_shareRight_tka2j_208",Ae="_shareShopTitle_tka2j_212",Ee="_shareShopDes_tka2j_222",Ze="_shareShopValue_tka2j_231",$e="_shareShopOldPrice_tka2j_235",Me="_imagesOverlayWrap_tka2j_242",u={swipeItemImg:ge,swipe:he,"custom-indicator":"_custom-indicator_tka2j_7",goodsHead:pe,priceGroup:ve,price:fe,delPrice:_e,stock:ke,goodsName:be,row:Se,col:we,"radio-group":"_radio-group_tka2j_61",radio:ye,badge:Pe,section:xe,detail:Ce,photoDetail:Te,goodsDetail:Ie,actionBar:je,text:Be,addCertBtn:De,buyGroup:Le,selectWrap:Re,shareBtn:We,shareWrap:He,sharePic:Ne,shareLeft:Ye,shareRight:Xe,shareShopTitle:Ae,shareShopDes:Ee,shareShopValue:Ze,shareShopOldPrice:$e,imagesOverlayWrap:Me};function ze(t){return typeof t=="function"||Object.prototype.toString.call(t)==="[object Object]"&&!qt(t)}const nt=Vt(),eo=M({name:"goods-detail",data(){return{id:this.$route.query.id,albumPics:[],product:{},radio:0,skuStockListTemp:[],detailMobileHtml:"",loading:!1}},computed:{skuStockList(){const t=this.product,n=this.skuStockListTemp.length>0?this.skuStockListTemp:[{id:-1,price:t.price,pic:t.pic,stock:t.stock,spData:null}];return n.forEach(i=>{if(i.spData){const e=JSON.parse(i.spData);i.spDataJson=e.reduce((a,m)=>(a+=m.value,a),""),i.sku=e.reduce((a,m)=>(a.push(`${m.key}: ${m.value}`),a),[]).join(",")}else i.spDataJson="默认"}),n},getPrice(){let t=this.skuStockList.filter(n=>n.id==this.radio);return t&&Array.isArray(t)&&t.length?t[0].price:0}},async mounted(){try{this.loading=!0;const t=await $t.get(`/edu-app/open/mall/product/detail/${this.id}`);this.loading=!1;const n=t.data||{};if(this.albumPics=[n.product.pic].concat(n.product.albumPics.split(",")).filter(i=>i),this.product=n.product,this.skuStockListTemp=n.skuStockList||[],this.skuStockListTemp.length){let i=this.skuStockListTemp.length;for(let e=0;e<i;e++){let a=this.skuStockListTemp[e];if(a.stock>=0){this.radio=a.id;break}}}this.detailMobileHtml=n.product.detailMobileHtml}catch(t){}},methods:{onPreview(t){it({images:this.albumPics,startPosition:t,closeable:!0,className:u.imagesOverlayWrap})},onShowImg(t){const{localName:n}=t.srcElement;if(n!=="img")return;let i=0;const e=document.querySelectorAll(".msgWrap img");let a=Array.from(e).map((m,x)=>(t.srcElement==m&&(i=x),m.src));it({images:a,startPosition:i,closeable:!0,className:u.imagesOverlayWrap})},onShowCart(){const t={price:this.product.price,originalPrice:this.product.originalPrice,pic:this.product.pic,stock:this.product.stock,skuStockList:this.skuStockListTemp.length?this.skuStockListTemp:void 0,brandName:this.product.brandName,productCategoryId:this.product.productCategoryId,name:this.product.name,productSn:this.product.productSn,productSubTitle:this.product.subTitle,count:1,id:this.product.id};let n=!1;nt.getGoods.forEach(i=>{i.id===this.product.id&&(n=!0,i.count+=1)}),n||nt.setGoods(t),Mt("添加成功")}},render(){let t;const n=this.product,i=this.skuStockList.find(e=>e.id===this.radio);return o("div",{class:u.goodsDetail},[o(gt,{class:u.swipe,lazyRender:!0},{default:()=>[this.albumPics.map((e,a)=>o(mt,null,{default:()=>[o(ht,{class:u.swipeItemImg,src:e,onClick:()=>this.onPreview(a),fit:"cover"},null)]}))],indicator:e=>e.total>1&&o("div",{class:u["custom-indicator"]},[(e.active||0)+1,H(" / "),e.total])}),o(Jt,{border:!1,class:[u.goodsHead,"mb12"]},{default:()=>[o(et,{center:!0,border:!1},{title:()=>o("div",{class:u.priceGroup},[o("span",{class:u.price},[o("i",null,[H("¥")]),zt(this.getPrice)])])}),o(et,{center:!0,border:!1,title:n.name,titleClass:[u.goodsName,"van-ellipsis"]},null)]}),o(Ut,{class:[u.row,"mb12"]},{default:()=>[o(ot,{span:4,class:u.col},{default:()=>[H("规格")]}),o(ot,{span:20},{default:()=>[i?o("div",{class:u.selectWrap},[i.stock<=0?"当前款式暂时缺货":`已选择 ${i.spDataJson}`]):o("div",null,[H("请选择 规格")]),o(Kt,{class:u["radio-group"],modelValue:this.radio,"onUpdate:modelValue":e=>this.radio=e},ze(t=this.skuStockList.map(e=>{const a=e.id===this.radio,m=a?"primary":"default";return o(Ot,{position:"top-right",content:e.stock<=0?"缺货":"",color:"#999999",class:u.badge,offset:[-20,0]},{default:()=>[o(Qt,{class:u.radio,name:e.id,disabled:e.stock<=0,onClick:()=>{e.stock<=0||(this.radio=e.id)}},{default:()=>[o(te,{size:"large",plain:a,type:m},{default:()=>[e.spDataJson]})]})]})}))?t:{default:()=>[t]})]})]}),this.detailMobileHtml&&o("div",{class:[u.section]},[o("div",{class:u.detail},[o("span",null,[H("图文详情")])]),o("div",{class:[u.photoDetail,"msgWrap"],onClick:this.onShowImg,innerHTML:this.detailMobileHtml},null)]),!this.loading&&o(Gt,null,[o(me,{class:u.actionBar,"safe-area-inset-bottom":!0},{button:()=>o("div",{class:u.buyGroup},[o(Ft,{type:"primary",class:u.addCertBtn,text:"添加购买",onClick:()=>this.onShowCart()},null)])})])])}});export{eo as default};
|