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