Files
machartaa_admin_dist/dist/assets/index-62a0e582.js
T
2026-08-18 15:43:27 +03:30

2 lines
15 KiB
JavaScript
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import{_ as ke}from"./button.vue_vue_type_style_index_0_lang-ae7cb173.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 P,p as se,y as te,i as ne,D as v,O as Me,P as We}from"./index-64bb19a3.js";import{i as $e,h as Ie,s as De,f as Fe}from"./competition-bdcdb22f.js";import{_ as Be}from"./BasicInput.vue_vue_type_style_index_0_lang-3cdf1cab.js";import{_ as Pe}from"./_plugin-vue_export-helper-47756888.js";import"./Icon-2a751d73.js";import"./index-7a73a23b.js";import"./usePrice-bc935b83.js";import"./index-6f7ee4ee.js";import"./SearchOutlined-5a638563.js";import"./omit-41b1cee4.js";import"./vnode-a1a3bc0f.js";import"./FormItemContext-78515ae9.js";import"./isPlainObject-908a4d4b.js";import"./index-b5f90115.js";const r=L=>(Me("data-v-3e637062"),L=L(),We(),L),Le={class:"lottery-container"},Ne={class:"lottery-header"},Ee={class:"lottery-title"},He=r(()=>e("p",{class:"lottery-subtitle"},"قرعه کشی برندگان مسابقه",-1)),Oe={class:"lottery-content"},ze={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"},Ds={class:"participants-info"},Fs={class:"info-card"},Bs=r(()=>e("span",null,"👥",-1)),Ps={key:0,class:"lottery-count-info"},Ls={key:1,class:"lottery-count-info"},Ns={class:"lottery-display-wrapper"},Es={class:"lottery-display-container"},Hs={class:"display-frame"},Os={class:"display-window"},zs=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(L){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),N=u(null),le=u(null),E=u(0),R=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?N.value=c:N.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,N.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);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} قرعه‌کشی تنظیم شد. اکنون می‌توانید قرعه‌کشی را شروع کنید.`)},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=[];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 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),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}},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),O=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(E.value=Z+(X-Z)*we,y<1)requestAnimationFrame(ee);else{if(E.value=X,m.value=!1,c){g(O);return}d.value=O,o.value.push({...O,rank:o.value.length+1}),setTimeout(()=>{d.value=null,g(O)},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,N.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",Le,[e("div",Ne,[e("h1",Ee,a(U.value),1),He]),e("div",Oe,[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",Ye,[je,Ge,D.value?(l(),i("p",Ke,"✅ قرعه‌کشی این مسابقه قبلاً انجام شده است")):p("",!0)]),e("div",Qe,[(l(!0),i(B,null,P(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,P(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,P(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,P(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",Ps," | در حال انجام: "+a(f.value.done)+" / "+a(f.value.total)+" | باقی‌مانده: "+a(f.value.remaining),1)):_.value>0?(l(),i("span",Ls," | تعداد قرعه‌کشی: "+a(_.value)+" | انجام شده: "+a(o.value.length)+" / "+a(_.value),1)):p("",!0)])]),e("div",Ns,[e("div",Es,[e("div",Hs,[e("div",Os,[zs,e("div",{class:se(["name-list",{spinning:m.value}]),style:te({transform:`translateY(${E.value}px)`})},[(l(!0),i(B,null,P(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,[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",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,[z(c,{onClick:j,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=Pe(mt,[["__scopeId","data-v-3e637062"]]);export{Et as default};