1var V=(B,T,p)=>new Promise((R,N)=>{var y=c=>{try{v(p.next(c))}catch(w){N(w)}},C=c=>{try{v(p.throw(c))}catch(w){N(w)}},v=c=>c.done?R(c.value):Promise.resolve(c.value).then(y,C);v((p=p.apply(B,T)).next())});import{r as m,c as z,m as os,p as ls,e as r,h as A,j as s,f as M,D as g,t as f,F as _,E as x,w as is,d as ns,l as rs,g as d,k as F,O as ds,B as cs}from"./vue-vendor-BqEqlBN8.js";import{_ as us,l as I,P as $,A as fs}from"./index-zKxGK1P5.js";import vs from"./Footer-o4LL8TG7.js";import{g as gs,d as J}from"./pageContentService-DzKO0LSI.js";import"./vendor-CgfLlPlq.js";import"./parse-hlf3C9cV.js";import"./query-mEIUYlNa.js";const ps={class:"featured-shops-page"},hs={class:"page-container"},ms={class:"page-header"},_s={class:"subtitle"},ks={class:"filter-tabs"},ys=["onClick"],Cs={class:"shops-container"},ws={key:0,class:"skeleton-container"},bs={class:"shops-grid"},Ss={key:1,class:"shops-grid"},Ps=["onClick"],Ms={class:"shop-cover"},xs={key:0,class:"image-loading-placeholder"},Fs=["src","alt","onLoad","onError"],Ts={key:1,class:"shop-badge"},Ns={class:"shop-category-badge"},js={class:"shop-content"},Is={class:"shop-header"},$s={class:"shop-avatar"},Rs={key:0,class:"avatar-loading-placeholder"},Es=["src","alt","onLoad","onError"],Ls={class:"shop-info"},Vs={class:"shop-name"},zs={key:0,class:"fas fa-check-circle verified-icon"},As={class:"shop-rating"},Bs={class:"stars"},Qs={class:"rating-value"},Os={class:"rating-count"},qs={class:"shop-description"},Us={class:"shop-stats"},Hs={class:"stat-item"},Gs={class:"stat-item"},Js={class:"stat-item"},Ks={key:0,class:"hot-products"},Ws={class:"products-preview"},Xs=["onClick"],Ys=["src","alt"],Zs={class:"product-price"},Ds={class:"shop-tags"},se={key:2,class:"empty-state"},ee={key:0,class:"load-more"},te=["disabled"],ae={class:"ad-info-section"},oe={class:"ad-info-card"},le={class:"info-content"},ie={__name:"FeaturedShops",setup(B){const T=rs(),p=m(null),R=z(()=>{var o;return((o=p.value)==null?void 0:o.title)||J["featured-shops"].title}),N=z(()=>{var o;return((o=p.value)==null?void 0:o.subtitle)||J["featured-shops"].subtitle}),y=m(!0),C=m(!1),v=m("all"),c=m([]),w=m(1),j=m(!0),k=m({}),Q=o=>{k.value[o]=!0},O=(o,e,n)=>{o.target.src=n,k.value[e]=!0},K=[{id:"all",name:"å
¨é¨æ¨è¦",icon:"fas fa-th-large"},{id:"fashion",name:"æµè¡æå°",icon:"fas fa-tshirt"},{id:"beauty",name:"ç¾å¦ä¿é¤",icon:"fas fa-spa"},{id:"food",name:"ç¾é£ç¹ç¢",icon:"fas fa-utensils"},{id:"home",name:"å±
å®¶çæ´»",icon:"fas fa-home"},{id:"digital",name:"3C æ¸ä½",icon:"fas fa-laptop"}],q=z(()=>v.value==="all"?c.value:c.value.filter(o=>o.categoryType===v.value)),W=o=>o>=1e4?(o/1e4).toFixed(1)+"è¬":o>=1e3?(o/1e3).toFixed(1)+"k":o.toString(),X={女çè¡£è:"fashion",ç·çè¡£è:"fashion",æµè¡å¥³è£:"fashion",æµè¡ç·è£:"fashion",ç¾å¦ä¿é¤:"beauty",ç¾å®¹ä¿å¥:"beauty",ç¾é£:"food","ç¾é£ãä¼´æç¦®":"food",é£å:"food",å±
å®¶çæ´»:"home",å¢ä¿±:"home",å®¶é»:"home",ææ©å¹³æ¿èå¨é:"digital","3C":"digital",é»è
¦:"digital",å½±é³:"digital"},U=(o=!1)=>V(null,null,function*(){o?C.value=!0:(y.value=!0,k.value={});try{const e=$.Object.extend("tk_Product"),n=new $.Query(e);n.equalTo("status","active"),n.include("seller"),n.descending("sold"),n.limit(500);const t=yield n.find(),l=new Map;for(const u of t){const i=u.get("seller");if(!i)continue;const h=i.id;l.has(h)||l.set(h,{seller:i,products:[],totalSold:0,categories:new Set});const a=l.get(h);a.products.push(u),a.totalSold+=u.get("sold")||0;const S=u.get("category");if(S){const E=S.split(/\s*[>\/\-]\s*/)[0].trim();a.categories.add(E)}}const H=$.Object.extend("tk_MemberData"),b=[];for(const[u,i]of l)try{const h=new $.Query(H);h.equalTo("user",{__type:"Pointer",className:"_User",objectId:u});const a=yield h.first(),S=Array.from(i.categories)[0]||"ç¶å",E=X[S]||"all",ts=i.products.slice(0,3).map(P=>{const L=P.get("images")||[];return{id:P.id,name:P.get("name"),price:P.get("price")||0,image:L[0]||"/img/default-product.jpg"}}),G=(a==null?void 0:a.get("sellerRating"))||(a==null?void 0:a.get("rating"))||0,as=(a==null?void 0:a.get("reviewCount"))||i.products.reduce((P,L)=>P+(L.get("reviewCount")||0),0);b.push({id:u,name:(a==null?void 0:a.get("storeName"))||(a==null?void 0:a.get("realName"))||(i.seller.get("username")&&!/^user_\d+_/i.test(i.seller.get("username"))?i.seller.get("username"):null)||"æªå½åååº",avatar:(a==null?void 0:a.get("storeImage"))||i.seller.get("avatar")||"/img/default-avatar.png",coverImage:(a==null?void 0:a.get("storeCoverUrl"))||"/img/default-shop-cover.jpg",description:(a==null?void 0:a.get("storeDesc"))||"æ¡è¿å
è¨æ¬åºï¼æåæä¾åªè³ªååèæåã",mainCategory:S,categoryType:E,rating:G>0?G:4.5+Math.random()*.5,reviewCount:as||Math.floor(Math.random()*500),productC
1ount:i.products.length,followerCount:i.seller.get("followerCount")||Math.floor(Math.random()*5e3),responseRate:a!=null&&a.get("chatResponseRate")?Math.round(a.get("chatResponseRate")*100):90+Math.floor(Math.random()*10),isPremium:i.totalSold>100||i.products.length>20,verified:(a==null?void 0:a.get("isVerified"))||i.totalSold>50,tags:Y(S,i.totalSold),hotProducts:ts})}catch(h){I.warn("FeaturedShops",`ç²å賣家 ${u} è³æå¤±æ:`,h)}if(b.sort((u,i)=>u.isPremium&&!i.isPremium?-1:!u.isPremium&&i.isPremium?1:i.followerCount-u.followerCount),o){const u=c.value.length,i=b.slice(u,u+6);c.value=[...c.value,...i],w.value++,c.value.length>=b.length&&(j.value=!1)}else c.value=b.slice(0,12),j.value=b.length>12;I.log("FeaturedShops","[FeaturedShops] è¼å
¥å®æ:",c.value.length,"éåºè")}catch(e){I.error("FeaturedShops","è¼å
¥åºè失æ:",e)}finally{y.value=!1,C.value=!1}});function Y(o,e){const n=[];switch(e>100&&n.push("ç±é·åºå®¶"),e>50&&n.push("å¿«éåºè²¨"),o){case"女çè¡£è":case"æµè¡å¥³è£":n.push("é系女è£");break;case"ç·çè¡£è":case"æµè¡ç·è£":n.push("ååä¼é");break;case"ç¾å¦ä¿é¤":n.push("åå» æ£å");break;case"ç¾é£":case"ç¾é£ãä¼´æç¦®":n.push("ä¼´æç¦®é¦é¸");break;case"å±
å®¶çæ´»":n.push("å質ä¿è");break;case"ææ©å¹³æ¿èå¨é":case"3C":n.push("ä¿åºæå");break}return n.length<3&&n.push("7天éè³æ"),n.slice(0,3)}const Z=()=>{U(!0)},D=o=>{T.push(`/shop/${o}`)},ss=o=>{T.push(`/product/${o}`)};os(v,()=>{w.value=1,j.value=!0});const es=()=>V(null,null,function*(){try{const o=yield gs("featured-shops");o&&(p.value=o)}catch(o){I.error("FeaturedShops","è¼å
¥é é¢å
§å®¹å¤±æ:",o)}});return ls(()=>{document.title="ç²¾é¸åºè - ææé»å",es(),U()}),(o,e)=>{const n=ns("router-link");return d(),r("div",ps,[A(fs),s("div",hs,[s("div",ms,[s("h1",null,[e[0]||(e[0]=s("i",{class:"fas fa-crown"},null,-1)),g(" "+f(R.value),1)]),s("p",_s,f(N.value),1)]),s("div",ks,[(d(),r(_,null,x(K,t=>s("button",{key:t.id,class:F(["filter-tab",{active:v.value===t.id}]),onClick:l=>v.value=t.id},[s("i",{class:F(t.icon)},null,2),g(" "+f(t.name),1)],10,ys)),64))]),s("div",Cs,[y.value?(d(),r("div",ws,[s("div",bs,[(d(),r(_,null,x(6,t=>s("div",{key:"skeleton-"+t,class:"shop-card skeleton-card"},[...e[1]||(e[1]=[ds('<div class="shop-cover skeleton-cover" data-v-9ffbfcd3><div class="skeleton-shimmer" data-v-9ffbfcd3></div></div><div class="shop-content" data-v-9ffbfcd3><div class="shop-header" data-v-9ffbfcd3><div class="shop-avatar skeleton-avatar" data-v-9ffbfcd3><div class="skeleton-shimmer" data-v-9ffbfcd3></div></div><div class="shop-info" data-v-9ffbfcd3><div class="skeleton-text skeleton-shop-name" data-v-9ffbfcd3></div><div class="skeleton-text skeleton-rating" data-v-9ffbfcd3></div></div></div><div class="skeleton-text skeleton-desc" data-v-9ffbfcd3></div><div class="skeleton-text skeleton-stats" data-v-9ffbfcd3></div><div class="skeleton-text skeleton-products" data-v-9ffbfcd3></div></div><div class="shop-action" data-v-9ffbfcd3><div class="skeleton-text skeleton-btn" data-v-9ffbfcd3></div></div>',3)])])),64))])])):q.value.length>0?(d(),r("div",Ss,[(d(!0),r(_,null,x(q.value,t=>(d(),r("div",{key:t.id,class:"shop-card",onClick:l=>D(t.id)},[s("div",Ms,[k.value["cover-"+t.id]?M("",!0):(d(),r("div",xs,[...e[2]||(e[2]=[s("div",{class:"skeleton-shimmer"},null,-1)])])),s("img",{src:t.coverImage||"/img/default-shop-cover.jpg",alt:t.name,loading:"lazy",onLoad:l=>Q("cover-"+t.id),onError:l=>O(l,"cover-"+t.id,"/img/default-shop-cover.jpg"),class:F({"image-loaded":k.value["cover-"+t.id]})},null,42,Fs),t.isPremium?(d(),r("div",Ts,[...e[3]||(e[3]=[s("i",{class:"fas fa-crown"}
1,null,-1),g(" éçåºå®¶ ",-1)])])):M("",!0),s("div",Ns,f(t.mainCategory),1)]),s("div",js,[s("div",Is,[s("div",$s,[k.value["avatar-"+t.id]?M("",!0):(d(),r("div",Rs,[...e[4]||(e[4]=[s("div",{class:"skeleton-shimmer"},null,-1)])])),s("img",{src:t.avatar||"/img/default-avatar.png",alt:t.name,loading:"lazy",onLoad:l=>Q("avatar-"+t.id),onError:l=>O(l,"avatar-"+t.id,"/img/default-avatar.png"),class:F({"image-loaded":k.value["avatar-"+t.id]})},null,42,Es)]),s("div",Ls,[s("h3",Vs,[g(f(t.name)+" ",1),t.verified?(d(),r("i",zs)):M("",!0)]),s("div",As,[s("div",Bs,[(d(),r(_,null,x(5,l=>s("i",{key:l,class:F(["fas fa-star",{filled:l<=Math.round(t.rating)}])},null,2)),64))]),s("span",Qs,f(t.rating.toFixed(1)),1),s("span",Os,"("+f(t.reviewCount)+" è©å¹)",1)])])]),s("p",qs,f(t.description),1),s("div",Us,[s("div",Hs,[e[5]||(e[5]=s("i",{class:"fas fa-box"},null,-1)),s("span",null,f(t.productCount)+" ä»¶åå",1)]),s("div",Gs,[e[6]||(e[6]=s("i",{class:"fas fa-users"},null,-1)),s("span",null,f(W(t.followerCount))+" ç²çµ²",1)]),s("div",Js,[e[7]||(e[7]=s("i",{class:"fas fa-shipping-fast"},null,-1)),s("span",null,f(t.responseRate)+"% åè¦ç",1)])]),t.hotProducts&&t.hotProducts.length>0?(d(),r("div",Ks,[e[8]||(e[8]=s("div",{class:"hot-products-header"},[s("span",null,[s("i",{class:"fas fa-fire"}),g(" ç±è³£åå")])],-1)),s("div",Ws,[(d(!0),r(_,null,x(t.hotProducts.slice(0,3),l=>(d(),r("div",{key:l.id,class:"product-preview",onClick:cs(H=>ss(l.id),["stop"])},[s("img",{src:l.image||"/img/default-product.jpg",alt:l.name,loading:"lazy"},null,8,Ys),s("span",Zs,"NT$ "+f(l.price),1)],8,Xs))),128))])])):M("",!0),s("div",Ds,[(d(!0),r(_,null,x(t.tags,l=>(d(),r("span",{key:l,class:"tag"},f(l),1))),128))])]),e[9]||(e[9]=s("div",{class:"shop-action"},[s("button",{class:"visit-btn"},[s("i",{class:"fas fa-store"}),g(" é²å
¥åºè ")])],-1))],8,Ps))),128))])):(d(),r("div",se,[...e[10]||(e[10]=[s("i",{class:"fas fa-store-slash"},null,-1),s("h3",null,"æ¤å顿«ç¡æ¨è¦åºè",-1),s("p",null,"è«å試å
¶ä»åé¡ï¼æç¨å¾åä¾ççï¼",-1)])]))]),j.value&&!y.value?(d(),r("div",ee,[s("button",{class:"load-more-btn",onClick:Z,disabled:C.value},[C.value?(d(),r(_,{key:0},[e[11]||(e[11]=s("div",{class:"spinner small"},null,-1)),e[12]||(e[12]=g(" è¼å
¥ä¸... ",-1))],64)):(d(),r(_,{key:1},[e[13]||(e[13]=s("i",{class:"fas fa-plus"},null,-1)),e[14]||(e[14]=g(" è¼å
¥æ´å¤åºè ",-1))],64))],8,te)])):M("",!0),s("section",ae,[s("div",oe,[e[18]||(e[18]=s("div",{class:"info-icon"},[s("i",{class:"fas fa-bullhorn"})],-1)),s("div",le,[e[16]||(e[16]=s("h3",null,"æ³è®æ¨çåºèåºç¾å¨é裡ï¼",-1)),e[17]||(e[17]=s("p",null,"購買åºé·æ¨è¦å»£åï¼è®æ´å¤æ¶è²»è
ç¼ç¾æ¨çåªè³ªååï¼æ¯éåºèæ¯ç¨®åé¡åªæé¡¯ç¤ºä¸æ¬¡ï¼ç¢ºä¿å
¬å¹³æå
ã",-1)),A(n,{to:"/seller/ads",class:"learn-more"},{default:is(()=>[...e[15]||(e[15]=[g(" äºè§£å»£åæ¹æ¡ ",-1),s("i",{class:"fas fa-arrow-right"},null,-1)])]),_:1})])])])]),A(vs)])}}},pe=us(ie,[["__scopeId","data-v-9ffbfcd3"]]);export{pe as default};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.