2 lines
13 KiB
JavaScript
2 lines
13 KiB
JavaScript
import{_ as ge}from"./button.vue_vue_type_style_index_0_lang-110418ce.js";import{d as ye,q as we,g as d,v as be,o as a,c as o,a as e,t as i,b as E,w as D,e as S,k as h,F,n as B,p as Z,y as ke,i as ee,D as p,J as xe,K as Ce}from"./index-b43045cf.js";import{i as Se,b as Me,s as We,a as Ie}from"./competition-f8cf49b4.js";import{_ as $e}from"./BasicInput.vue_vue_type_style_index_0_lang-aa217a59.js";import{_ as De}from"./_plugin-vue_export-helper-d47eb12d.js";import"./Icon-53c563d2.js";import"./usePrice-bc935b83.js";import"./index-b94f9b16.js";import"./FormItemContext-a080d4f0.js";import"./vnode-96240c5a.js";import"./isPlainObject-8c91e78f.js";const r=L=>(xe("data-v-4f92838b"),L=L(),Ce(),L),Fe={class:"lottery-container"},Be={class:"lottery-header"},Le={class:"lottery-title"},Ne=r(()=>e("p",{class:"lottery-subtitle"},"قرعه کشی برندگان مسابقه",-1)),Pe={class:"lottery-content"},Ee={key:0,class:"loading-state"},He=r(()=>e("div",{class:"spinner"},null,-1)),ze=r(()=>e("p",null,"در حال بارگذاری...",-1)),Oe=[He,ze],Re={key:1,class:"error-state"},Te=r(()=>e("span",{class:"error-icon"},"❌",-1)),qe={key:2,class:"winner-result"},Ae={class:"all-winners-container"},Ve={class:"winner-header"},Ue=r(()=>e("span",{class:"trophy-icon-large"},"🏆",-1)),Je=r(()=>e("h2",{class:"winner-title"},"برندگان نهایی",-1)),Ke={key:0,class:"lottery-completed-message"},Ye={class:"all-winners-list"},je={class:"final-winner-rank"},Ge={class:"final-winner-info"},Qe={class:"final-winner-name"},Xe={class:"final-winner-details"},Ze={class:"final-detail-item"},es={key:0,class:"final-detail-item"},ss={class:"celebration"},ts={key:3,class:"final-winner-result"},ns={class:"winner-card-animated"},as=r(()=>e("div",{class:"winner-badge-large"},[e("span",{class:"trophy-icon-large"},"🏆")],-1)),ls=r(()=>e("h2",{class:"winner-title-large"},"تبریک! برنده انتخاب شد",-1)),os={class:"winner-info-large"},is={class:"winner-name-large"},rs={class:"winner-details-large"},cs={class:"detail-item-large"},us={key:0,class:"detail-item-large"},ds={class:"celebration-large"},_s={key:4,class:"empty-state"},vs=r(()=>e("span",{class:"empty-icon"},"ℹ️",-1)),hs=r(()=>e("p",null,"برای این مسابقه برندهای یافت نشد",-1)),ps=[vs,hs],fs={key:5,class:"lottery-wheel-container"},ms={key:0,class:"selected-winners-section"},gs=r(()=>e("h3",{class:"selected-winners-title"},"برندگان انتخاب شده:",-1)),ys={class:"selected-winners-list"},ws={class:"winner-rank-badge"},bs={class:"winner-info-item"},ks=r(()=>e("span",{class:"winner-info-icon"},"👤",-1)),xs={class:"winner-info-name"},Cs={key:0,class:"winner-info-mobile"},Ss={class:"winner-info-score"},Ms={class:"participants-info"},Ws={class:"info-card"},Is=r(()=>e("span",null,"👥",-1)),$s={key:0,class:"lottery-count-info"},Ds={class:"lottery-display-wrapper"},Fs={class:"lottery-display-container"},Bs={class:"display-frame"},Ls={class:"display-window"},Ns=r(()=>e("div",{class:"lottery-shadows"},[e("div",{class:"shadow-top"}),e("div",{class:"shadow-bottom"})],-1)),Ps={class:"name-content"},Es=r(()=>e("span",{class:"name-icon"},"👤",-1)),Hs={class:"name-text"},zs={class:"name-score"},Os=r(()=>e("div",{class:"frame-pointer"},[e("span",null,"⬇️")],-1)),Rs={class:"lottery-controls"},Ts={key:0,class:"lottery-count-input-section"},qs={class:"count-input-wrapper"},As=r(()=>e("label",{class:"count-input-label"}," چند مرتبه قرعهکشی انجام شود؟ ",-1)),Vs={class:"count-input-container"},Us={class:"count-input-hint"},Js={key:1,class:"lottery-action-buttons"},Ks=r(()=>e("span",{class:"mr-2"},"🎁",-1)),Ys=r(()=>e("span",{class:"mr-2"},"🎯",-1)),js={key:2,class:"spinning-indicator"},Gs=r(()=>e("div",{class:"spinner-large"},null,-1)),Qs={key:0},Xs={key:1},Zs={key:3,class:"current-winner-display"},et={class:"current-winner-card"},st=r(()=>e("span",{class:"current-winner-icon"},"🏆",-1)),tt={class:"current-winner-info"},nt={class:"current-winner-name"},at={class:"current-winner-details"},lt={key:0,class:"current-winner-mobile"},ot=r(()=>e("span",{class:"mr-2"},"💾",-1)),it=ye({__name:"index",setup(L){const T=we(),b=d(null),q=d(""),v=d([]),x=d(!0),k=d(""),g=d(!1),se=d(-1),c=d(null),M=d(!1),N=d(null),te=d(null),P=d(0),H=d([]),u=d(0),W=d(1),l=d([]),ne=d(0),z=d(!1),I=d(!1),$=d(!1),ae=()=>typeof window<"u"&&window.innerWidth<=768?70:80,le=async()=>{try{const s=(await Ie()).find(_=>_.id===b.value);if(s&&(te.value=s,s.winner_id)){M.value=!0,I.value=!0;const _=v.value.find(m=>!!(m.user_id&&String(m.user_id)===String(s.winner_id)||m.id&&String(m.id)===String(s.winner_id)));_?N.value=_:N.value={user_id:s.winner_id,user_name:"برنده نهایی",user_mobile:"",score:0}}}catch(t){console.error("Error loading match:",t)}},A=async()=>{if(!b.value){k.value="شناسه مسابقه یافت نشد",x.value=!1;return}try{x.value=!0,k.value="";try{const t=await Se(b.value);if(t&&t.length>0){l.value=t.map(s=>({user_id:s.user_id||s.winner_id,id:s.user_id||s.winner_id,user_name:s.user_name||s.name||"نامشخص",user_mobile:s.user_mobile||s.phone||s.mobile||"نامشخص",score:s.score||s.user_score||0,rank:s.rank||0})),M.value=!0,I.value=!0,N.value=l.value[l.value.length-1],x.value=!1;return}}catch{console.log("No saved winners found, proceeding with lottery")}v.value=await Me(b.value),v.value.length===0?k.value="برای این مسابقه برندهای یافت نشد":(V(),await le())}catch(t){console.error("Error loading winners:",t),k.value="خطا در بارگذاری برندگان: "+(t.message||"خطای ناشناخته")}finally{x.value=!1}},V=(t,s)=>{const _=t||v.value,m=s||(_.length>100?3:4),f=Math.max(10,m+5);H.value=[];for(let n=0;n<f;n++)H.value.push(..._);P.value=0},oe=()=>{const t=typeof W.value=="string"?parseInt(W.value,10):Number(W.value);if(!t||isNaN(t)||t<1){p.warning("لطفاً تعداد معتبری وارد کنید");return}if(t>v.value.length){p.warning(`تعداد قرعهکشی نمیتواند بیشتر از تعداد شرکتکنندگان (${v.value.length}) باشد`);return}u.value=t,l.value=[],ne.value=0,z.value=!0,I.value=!1,c.value=null,g.value=!1,p.success(`تعداد ${t} قرعهکشی تنظیم شد. اکنون میتوانید قرعهکشی را شروع کنید.`)},U=async()=>{if(v.value.length===0){p.warning("برندهای برای قرعه کشی وجود ندارد");return}if(l.value.length>=u.value){p.warning("تمام قرعهکشیها انجام شده است");return}await J()},ie=async()=>{if(v.value.length===0){p.warning("برندهای برای قرعه کشی وجود ندارد");return}if(l.value.length>=u.value){p.warning("تمام قرعهکشیها انجام شده است");return}if(u.value-l.value.length<=1){await U();return}$.value=!0;try{for(;l.value.length<u.value;)await J({displayDelay:800});p.success(`تمام ${u.value} قرعهکشی با موفقیت انجام شد`)}catch(s){console.error("Error running all lotteries:",s),p.error("خطا در انجام قرعهکشیها: "+(s.message||"خطای ناشناخته"))}finally{$.value=!1,c.value=null}},J=t=>{const s=(t==null?void 0:t.displayDelay)??2e3;return new Promise((_,m)=>{const f=v.value.filter(C=>!l.value.some(y=>y.user_id&&C.user_id&&String(y.user_id)===String(C.user_id)||y.id&&C.id&&String(y.id)===String(C.id)));if(f.length===0){p.warning("تمام شرکتکنندگان قبلاً انتخاب شدهاند"),z.value=!1,m(new Error("no available winners"));return}const n=f.length>100?4:5,w=Math.min(l.value.length,3),K=n+w;V(f,K),g.value=!0,se.value=-1,c.value=null;const Y=Math.floor(Math.random()*f.length),j=f[Y],O=ae(),ce=(window.innerWidth<=768?200:240)/2-O/2,ue=-(Y*O)+ce,de=-(f.length*O*K),G=ue+de,_e=5e3,ve=Math.min(f.length*3,3e3),he=l.value.length*1e3,pe=_e+ve+he,fe=Date.now(),Q=0,X=()=>{const C=Date.now()-fe,y=Math.min(C/pe,1);let R=y;y<.75?R=y*(1/.75)*.85:R=.85+(y-.75)/.25*.15;const me=1-Math.pow(1-R,3);P.value=Q+(G-Q)*me,y<1?requestAnimationFrame(X):(P.value=G,c.value=j,g.value=!1,l.value.push({...j,rank:l.value.length+1}),setTimeout(()=>{c.value=null,_()},s))};X()})},re=async()=>{try{if(!b.value||l.value.length===0){p.error("خطا در ذخیره برندگان");return}const t=l.value.map((s,_)=>({match_id:b.value,user_id:s.user_id||s.id,rank:_+1}));await We(t),p.success(`تمام ${l.value.length} برنده با موفقیت ذخیره شدند`),M.value=!0,I.value=!1,N.value=l.value[l.value.length-1],z.value=!1}catch(t){console.error("Error saving winners:",t),p.error("خطا در ذخیره برندگان: "+(t.message||"خطای ناشناخته"))}};return be(()=>{const t=T.query.matchId,s=T.query.title;t&&(b.value=Number(t)),s&&(q.value=decodeURIComponent(String(s))),b.value?A():(k.value="شناسه مسابقه یافت نشد",x.value=!1)}),(t,s)=>{var m,f;const _=ge;return a(),o("div",Fe,[e("div",Be,[e("h1",Le,i(q.value),1),Ne]),e("div",Pe,[x.value?(a(),o("div",Ee,Oe)):k.value?(a(),o("div",Re,[Te,e("p",null,i(k.value),1),E(_,{onClick:A},{default:D(()=>[S("تلاش مجدد")]),_:1})])):M.value?(a(),o("div",qe,[e("div",Ae,[e("div",Ve,[Ue,Je,I.value?(a(),o("p",Ke,"✅ قرعهکشی این مسابقه قبلاً انجام شده است")):h("",!0)]),e("div",Ye,[(a(!0),o(F,null,B(l.value,(n,w)=>(a(),o("div",{key:`final-winner-${n.user_id||n.id}-${w}`,class:"final-winner-card"},[e("div",je,"نفر "+i(w+1),1),e("div",Ge,[e("div",Qe,i(n.user_name),1),e("div",Xe,[e("span",Ze," 🏅 امتیاز: "+i(n.score),1),n.user_mobile?(a(),o("span",es," 📱 شماره همراه: "+i(n.user_mobile),1)):h("",!0)])])]))),128))]),e("div",ss,[(a(),o(F,null,B(20,n=>e("div",{class:"confetti",key:n})),64))])])])):c.value?(a(),o("div",ts,[e("div",ns,[as,ls,e("div",os,[e("div",is,i(c.value.user_name),1),e("div",rs,[e("span",cs," 🏅 امتیاز: "+i(c.value.score),1),c.value.user_mobile?(a(),o("span",us," 📱 شماره همراه: "+i(c.value.user_mobile),1)):h("",!0)])]),e("div",ds,[(a(),o(F,null,B(20,n=>e("div",{class:"confetti-large",key:n})),64))])])])):v.value.length===0?(a(),o("div",_s,ps)):(a(),o("div",fs,[l.value.length>0?(a(),o("div",ms,[gs,e("div",ys,[(a(!0),o(F,null,B(l.value,(n,w)=>(a(),o("div",{key:`selected-${n.user_id||n.id}-${w}`,class:"selected-winner-item"},[e("div",ws,"نفر "+i(w+1),1),e("div",bs,[ks,e("span",xs,i(n.user_name),1),n.user_mobile?(a(),o("span",Cs,i(n.user_mobile),1)):h("",!0),e("span",Ss,i(n.score)+" امتیاز",1)])]))),128))])])):h("",!0),e("div",Ms,[e("div",Ws,[Is,e("span",null,"تعداد شرکتکنندگان: "+i(v.value.length)+" نفر",1),u.value>0?(a(),o("span",$s," | تعداد قرعهکشی: "+i(u.value)+" | انجام شده: "+i(l.value.length)+" / "+i(u.value),1)):h("",!0)])]),e("div",Ds,[e("div",Fs,[e("div",Bs,[e("div",Ls,[Ns,e("div",{class:Z(["name-list",{spinning:g.value}]),style:ke({transform:`translateY(${P.value}px)`})},[(a(!0),o(F,null,B(H.value,(n,w)=>(a(),o("div",{key:`${n.id}-${w}`,class:Z(["name-item",{highlight:!g.value&&c.value&&(c.value.id===n.id||c.value.user_id===n.user_id)}])},[e("div",Ps,[Es,e("span",Hs,i(n.user_name),1),e("span",zs,i(n.score)+" امتیاز",1)])],2))),128))],6)]),Os])])]),e("div",Rs,[!g.value&&!c.value&&u.value===0&&!M.value?(a(),o("div",Ts,[e("div",qs,[As,e("div",Vs,[E($e,{value:W.value,"onUpdate:value":s[0]||(s[0]=n=>W.value=n),type:"number",placeHolder:`حداکثر ${((m=v.value)==null?void 0:m.length)||0} نفر`,class:"count-input"},null,8,["value","placeHolder"]),E(_,{onClick:oe,style:{backgroundColor:"#FF6B35",borderColor:"#FF6B35",color:"#fff",fontSize:"16px",padding:"8px 24px",height:"auto"},class:"count-submit-btn",type:"primary"},{default:D(()=>[S(" ثبت ")]),_:1})]),e("p",Us," تعداد شرکتکنندگان: "+i(((f=v.value)==null?void 0:f.length)||0)+" نفر ",1)])])):h("",!0),!g.value&&!c.value&&!$.value&&u.value>0&&l.value.length<u.value?(a(),o("div",Js,[E(_,{onClick:U,style:{backgroundColor:"#FF6B35",borderColor:"#FF6B35",color:"#fff",fontSize:"18px",padding:"12px 32px",height:"auto"},class:"lottery-start-btn"},{default:D(()=>[Ks,S(" شروع قرعه کشی ("+i(l.value.length+1)+"/"+i(u.value)+") ",1)]),_:1}),u.value-l.value.length>1?(a(),ee(_,{key:0,onClick:ie,style:{backgroundColor:"#764ba2",borderColor:"#764ba2",color:"#fff",fontSize:"18px",padding:"12px 32px",height:"auto"},class:"lottery-run-all-btn"},{default:D(()=>[Ys,S(" انجام همه قرعهکشیها ("+i(u.value-l.value.length)+" نفر) ",1)]),_:1})):h("",!0)])):h("",!0),g.value||$.value?(a(),o("div",js,[Gs,$.value&&u.value>0?(a(),o("p",Qs," در حال انجام قرعهکشی "+i(Math.min(l.value.length+1,u.value))+" از "+i(u.value)+"... ",1)):(a(),o("p",Xs,"در حال قرعه کشی..."))])):h("",!0),c.value&&!g.value?(a(),o("div",Zs,[e("div",et,[st,e("div",tt,[e("p",nt,i(c.value.user_name),1),e("p",at,[S(" امتیاز: "+i(c.value.score)+" ",1),c.value.user_mobile?(a(),o("span",lt," | 📱 "+i(c.value.user_mobile),1)):h("",!0)])])])])):h("",!0),!g.value&&!c.value&&u.value>0&&l.value.length===u.value?(a(),ee(_,{key:4,onClick:re,style:{backgroundColor:"#217346",borderColor:"#217346",color:"#fff",fontSize:"18px",padding:"12px 32px",height:"auto"},class:"lottery-save-btn"},{default:D(()=>[ot,S(" ذخیره تمام برندگان ")]),_:1})):h("",!0)])]))])])}}});const bt=De(it,[["__scopeId","data-v-4f92838b"]]);export{bt as default};
|