2 lines
15 KiB
JavaScript
2 lines
15 KiB
JavaScript
import{_ as ke}from"./button.vue_vue_type_style_index_0_lang-de1581fe.js";import{d as xe,v as Ce,i as u,x as Se,o as l,c as i,b as e,t as a,e as O,w as D,f as w,n as p,F as B,q as L,s as se,C as te,k as ne,H as v,U as Me,V as We}from"./index-185c08ed.js";import{i as $e,h as Ie,s as Fe,f as De}from"./competition-2c17e22f.js";import{_ as Be}from"./BasicInput.vue_vue_type_style_index_0_lang-8f3a56f0.js";import{_ as Le}from"./_plugin-vue_export-helper-e26fbd9a.js";import"./Icon-623de3ea.js";import"./index-f463cb03.js";import"./usePrice-bc935b83.js";import"./index-a29d0cc7.js";import"./SearchOutlined-d9b8def2.js";import"./omit-d93eaa18.js";import"./vnode-8a371720.js";import"./FormItemContext-2d3e7341.js";import"./isPlainObject-5638f45d.js";import"./index-a2809ce1.js";const r=N=>(Me("data-v-3e637062"),N=N(),We(),N),Ne={class:"lottery-container"},Pe={class:"lottery-header"},He={class:"lottery-title"},Ee=r(()=>e("p",{class:"lottery-subtitle"},"قرعه کشی برندگان مسابقه",-1)),ze={class:"lottery-content"},Oe={key:0,class:"loading-state"},Re=r(()=>e("div",{class:"spinner"},null,-1)),Te=r(()=>e("p",null,"در حال بارگذاری...",-1)),qe=[Re,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"},Ye={class:"winner-header"},je=r(()=>e("span",{class:"trophy-icon-large"},"🏆",-1)),Ge=r(()=>e("h2",{class:"winner-title"},"برندگان نهایی",-1)),Ke={key:0,class:"lottery-completed-message"},Qe={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"},Fs={class:"participants-info"},Ds={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"},Hs={class:"lottery-display-container"},Es={class:"display-frame"},zs={class:"display-window"},Os=r(()=>e("div",{class:"lottery-shadows"},[e("div",{class:"shadow-top"}),e("div",{class:"shadow-bottom"})],-1)),Rs={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"},Ys={class:"count-input-wrapper"},js=r(()=>e("label",{class:"count-input-label"}," چند مرتبه قرعهکشی انجام شود؟ ",-1)),Gs={class:"count-input-container"},Ks={class:"count-input-hint"},Qs={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),H=u(0),R=u([]),_=u(0),I=u(1),o=u([]),oe=u(0),T=u(!1),F=u(!1),C=u(!1),E=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 De()).find(c=>c.id===k.value);if(s&&(le.value=s,s.winner_id)){$.value=!0,F.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,F.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="برای این مسابقه برندهای یافت نشد":(Y(),await re())}catch(t){console.error("Error loading winners:",t),x.value="خطا در بارگذاری برندگان: "+(t.message||"خطای ناشناخته")}finally{S.value=!1}},Y=(t,s)=>{const c=t||h.value,g=s||(c.length>100?3:4),M=Math.max(10,g+5);R.value=[];for(let n=0;n<M;n++)R.value.push(...c);H.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,F.value=!1,E.value=!1,d.value=null,m.value=!1,v.success(`تعداد ${t} قرعهکشی تنظیم شد. اکنون میتوانید قرعهکشی را شروع کنید.`)},j=async()=>{if(h.value.length===0){v.warning("برندهای برای قرعه کشی وجود ندارد");return}if(o.value.length>=_.value){v.warning("تمام قرعهکشیها انجام شده است");return}await G()},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 j();return}const s=[];E.value=!1,f.value={done:0,total:t,remaining:t},C.value=!0;try{for(;o.value.length+s.length<_.value;){const c=await G({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),E.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}},G=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),K=b+_e;Y(n,K),m.value=!0,ae.value=-1,d.value=null;const Q=Math.floor(Math.random()*n.length),z=n[Q],q=ie(),ve=(window.innerWidth<=768?200:240)/2-q/2,he=-(Q*q)+ve,pe=-(n.length*q*K),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(H.value=Z+(X-Z)*we,y<1)requestAnimationFrame(ee);else{if(H.value=X,m.value=!1,c){g(z);return}d.value=z,o.value.push({...z,rank:o.value.length+1}),setTimeout(()=>{d.value=null,g(z)},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 Fe(t),v.success(`تمام ${o.value.length} برنده با موفقیت ذخیره شدند`),$.value=!0,F.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",He,a(U.value),1),Ee]),e("div",ze,[S.value?(l(),i("div",Oe,qe)):x.value?(l(),i("div",Ae,[Ve,e("p",null,a(x.value),1),O(c,{onClick:J},{default:D(()=>[w("تلاش مجدد")]),_:1})])):$.value?(l(),i("div",Ue,[e("div",Je,[e("div",Ye,[je,Ge,F.value?(l(),i("p",Ke,"✅ قرعهکشی این مسابقه قبلاً انجام شده است")):p("",!0)]),e("div",Qe,[(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,[E.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",Fs,[e("div",Ds,[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",Hs,[e("div",Es,[e("div",zs,[Os,e("div",{class:se(["name-list",{spinning:m.value}]),style:te({transform:`translateY(${H.value}px)`})},[(l(!0),i(B,null,L(R.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",Rs,[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",Ys,[js,e("div",Gs,[O(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"]),O(c,{onClick:ce,style:{backgroundColor:"#FF6B35",borderColor:"#FF6B35",color:"#fff",fontSize:"16px",padding:"8px 24px",height:"auto"},class:"count-submit-btn",type:"primary"},{default:D(()=>[w(" ثبت ")]),_:1})]),e("p",Ks," تعداد شرکتکنندگان: "+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",Qs,[O(c,{onClick:j,style:{backgroundColor:"#FF6B35",borderColor:"#FF6B35",color:"#fff",fontSize:"18px",padding:"12px 32px",height:"auto"},class:"lottery-start-btn"},{default:D(()=>[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:D(()=>[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:D(()=>[ft,w(" ذخیره تمام برندگان ")]),_:1})):p("",!0)])]))])])}}});const Ht=Le(mt,[["__scopeId","data-v-3e637062"]]);export{Ht as default};
|