You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

1 lines
27 KiB

import{e,f as t,_ as a,g as n,h as s,w as i,i as r,o as l,c as o,a as u,t as c,n as d,j as v,k as p,l as m,m as g,F as h,p as f,q as y,s as w,d as z,b,v as x}from"./index-77fd5149.js";import{V as C,M as L,Q as k,O as T,S as U,P as M,N as D,g as I,e as S,a as E,b as N,_,d as O,w as P,c as R}from"./dong-027197ce.js";import"./request-eed9b906.js";const W=new C,H=new k,j=new C;class A extends T{constructor(e=document.createElement("div")){super(),this.isCSS3DObject=!0,this.element=e,this.element.style.position="absolute",this.element.style.pointerEvents="auto",this.element.style.userSelect="none",this.element.setAttribute("draggable",!1),this.addEventListener("removed",function(){this.traverse(function(e){e.element instanceof e.element.ownerDocument.defaultView.Element&&null!==e.element.parentNode&&e.element.remove()})})}copy(e,t){return super.copy(e,t),this.element=e.element.cloneNode(!0),this}}const B=new L,$=new L;class F{constructor(e={}){const t=this;let a,n,s,i;const r={camera:{style:""},objects:new WeakMap},l=void 0!==e.element?e.element:document.createElement("div");l.style.overflow="hidden",this.domElement=l;const o=document.createElement("div");o.style.transformOrigin="0 0",o.style.pointerEvents="none",l.appendChild(o);const u=document.createElement("div");function c(e){return Math.abs(e)<1e-10?0:e}function d(e){const t=e.elements;return"matrix3d("+c(t[0])+","+c(-t[1])+","+c(t[2])+","+c(t[3])+","+c(t[4])+","+c(-t[5])+","+c(t[6])+","+c(t[7])+","+c(t[8])+","+c(-t[9])+","+c(t[10])+","+c(t[11])+","+c(t[12])+","+c(-t[13])+","+c(t[14])+","+c(t[15])+")"}function v(e){const t=e.elements;return"translate(-50%,-50%)"+("matrix3d("+c(t[0])+","+c(t[1])+","+c(t[2])+","+c(t[3])+","+c(-t[4])+","+c(-t[5])+","+c(-t[6])+","+c(-t[7])+","+c(t[8])+","+c(t[9])+","+c(t[10])+","+c(t[11])+","+c(t[12])+","+c(t[13])+","+c(t[14])+","+c(t[15])+")")}function p(e){e.isCSS3DObject&&(e.element.style.display="none");for(let t=0,a=e.children.length;t<a;t++)p(e.children[t])}function m(e,a,n,s){if(!1!==e.visible){if(e.isCSS3DObject){const s=!0===e.layers.test(n.layers),i=e.element;if(i.style.display=!0===s?"":"none",!0===s){let s;e.onBeforeRender(t,a,n),e.isCSS3DSprite?(B.copy(n.matrixWorldInverse),B.transpose(),0!==e.rotation2D&&B.multiply($.makeRotationZ(e.rotation2D)),e.matrixWorld.decompose(W,H,j),B.setPosition(W),B.scale(j),B.elements[3]=0,B.elements[7]=0,B.elements[11]=0,B.elements[15]=1,s=v(B)):s=v(e.matrixWorld);const l=r.objects.get(e);if(void 0===l||l.style!==s){i.style.transform=s;const t={style:s};r.objects.set(e,t)}i.parentNode!==u&&u.appendChild(i),e.onAfterRender(t,a,n)}}for(let t=0,s=e.children.length;t<s;t++)m(e.children[t],a,n)}else p(e)}u.style.transformStyle="preserve-3d",o.appendChild(u),this.getSize=function(){return{width:a,height:n}},this.render=function(e,t){const l=t.projectionMatrix.elements[5]*i;let v,p;t.view&&t.view.enabled?(o.style.transform=`translate( ${-t.view.offsetX*(a/t.view.width)}px, ${-t.view.offsetY*(n/t.view.height)}px )`,o.style.transform+=`scale( ${t.view.fullWidth/t.view.width}, ${t.view.fullHeight/t.view.height} )`):o.style.transform="",!0===e.matrixWorldAutoUpdate&&e.updateMatrixWorld(),null===t.parent&&!0===t.matrixWorldAutoUpdate&&t.updateMatrixWorld(),t.isOrthographicCamera&&(v=-(t.right+t.left)/2,p=(t.top+t.bottom)/2);const g=t.view&&t.view.enabled?t.view.height/t.view.fullHeight:1,h=t.isOrthographicCamera?`scale( ${g} )scale(`+l+")translate("+c(v)+"px,"+c(p)+"px)"+d(t.matrixWorldInverse):`scale( ${g} )translateZ(`+l+"px)"+d(t.matrixWorldInverse),f=(t.isPerspectiveCamera?"perspective("+l+"px) ":"")+h+"translate("+s+"px,"+i+"px)";r.camera.style!==f&&(u.style.transform=f,r.camera.style=f),m(e,e,t)},this.setSize=function(e,t){a=e,n=t,s=a/2,i=n/2,l.style.width=e+"px",l.style.height=t+"px",o.style.width=e+"px",o.style.height=t+"px",u.style.width=e+"px",u.style.height=t+"px"}}}const Y=e("lottery",()=>{const e=t("idle"),a=t(-1),n=t(!1),s=t([]),i=t([]),r=t(!1),l=t([]);return{lotteryState:e,setLotteryState:function(t){e.value=t},lastRevealedIdx:a,setLastRevealedIdx:function(e){a.value=e},waitingForNextReveal:n,setWaitingForNextReveal:function(e){n.value=e},winners:s,setWinners:function(e){Array.isArray(e)?s.value=[...s.value,...e]:s.value=[...s.value,e]},clearWinners:function(){s.value=[]},allUsers:i,isUsersLoaded:r,setAllUsers:function(e){i.value=e,r.value=!0},getRandomUserName:function(){if(i.value.length>0){const e=Math.floor(Math.random()*i.value.length);return i.value[e]}return""},winnerList:l,setWinnerList:function(e){l.value=e}}}),G=["id"],q={class:"details"},V={__name:"CardItem",props:{id:[String,Number],user:{type:Array,required:!0},isBold:Boolean,showTable:Boolean,company:String,highlight:Boolean,prize:Boolean},setup(e){const a=Y(),p=n({get:()=>a.lotteryState,set:e=>a.setLotteryState(e)}),m=e,g=t(""),h=t(null),f=n(()=>a.allUsers),y=n(()=>a.isUsersLoaded),w=()=>{y.value&&f.value.length>0?g.value=a.getRandomUserName():g.value=m.user[0]||""},z=()=>{if("idle"===p.value||"ready"===p.value){const e=()=>{const t=1e4*Math.random()+1e4;h.value=setTimeout(()=>{w(),e()},t)};e()}},b=()=>{h.value&&(clearTimeout(h.value),h.value=null)},x=()=>{"rotating"===p.value||"result"===p.value?(b(),g.value=m.user[0]||""):z()},C=n(()=>{const e={width:"130px",height:"170px",border:"1px solid rgb(255,255,255)"};return m.isBold&&m.showTable&&"idle"===p.value?{...e,background:"linear-gradient(180deg, rgba(243,153,38,0.7) 0%, rgba(207,56,35,1) 100%)"}:"result"===p.value&&m.prize?e:{...e,backgroundColor:"rgba(254, 177, 48, 100)"}});return s(async()=>{g.value=m.user[0]||"",setTimeout(()=>{z()},1e3),x()}),i(p,()=>{x()}),i(y,e=>{e&&w()}),r(()=>{b()}),(t,a)=>(l(),o("div",{id:`card-${e.id}`,class:d(["element",{lightitem:e.isBold,highlight:e.highlight,prize:e.prize}]),style:v(C.value)},[u("div",q,c(g.value),1)],14,G))}},Z=a(V,[["__scopeId","data-v-1564fecc"]]),Q={class:"lottery-3d-container"},X={key:0,class:"page-indicator"},J=10,K={__name:"Lottery3D",setup(e,{expose:a}){const d=Y();n({get:()=>d.winners,set:e=>d.setWinners(e)});const v=t(null);let g,h,f,y,w=[];const z=t(0),b=t(0);let x=!1;const L=[],k={table:[],sphere:[]};function E(e,t,a,n,s){const i=document.createElement("div");return m(Z,{id:a,user:e,isBold:t,showTable:n,company:s}).mount(i),i.firstElementChild}function N(e){$&&(clearTimeout($),$=null),"enter"===e?_(k.table,2e3,()=>{H(),$=null}):_(k.sphere,2e3,()=>j())}function _(e,t,a){for(let n=0;n<L.length;n++){const a=L[n],s=e[n];new S.Tween(a.position).to({x:s.position.x,y:s.position.y,z:s.position.z},Math.random()*t+t).easing(S.Easing.Exponential.InOut).start(),new S.Tween(a.rotation).to({x:s.rotation.x,y:s.rotation.y,z:s.rotation.z},Math.random()*t+t).easing(S.Easing.Exponential.InOut).start()}new S.Tween({}).to({},2*t).onUpdate(()=>G()).onComplete(()=>{a&&a()}).start()}function O(e){if(x||b.value<=1)return;const t="next"===e?z.value+1:z.value-1;if(t<0||t>=b.value)return;x=!0;const a=window.pageLocates;a?(w.forEach((n,s)=>{const i=L[n],r=Math.floor(s/J),l=r===t,o=r===z.value,u=s%J,c=a[r][u];let d,v;d=l?c.y:"next"===e?c.y+1e3:c.y-1e3,v=o?i.position.y:"next"===e?c.y-1e3:c.y+1e3,i.position.y=v,new S.Tween(i.position).to({x:c.x,y:d,z:2200},800).easing(S.Easing.Cubic.InOut).start()}),new S.Tween({}).to({},800).onUpdate(()=>G()).onComplete(()=>{z.value=t,x=!1}).start()):x=!1}function P(e){x||b.value<=1||(e.preventDefault(),e.deltaY>0?O("next"):e.deltaY<0&&O("prev"))}function R(){v.value&&v.value.removeEventListener("wheel",P)}const W=t([]);function H(e=null){W.value=e?[...e]:L.filter(e=>null!==e)}function j(e=null){W.value=e?W.value.filter(t=>!e.includes(t)):[]}i(W,e=>{L.forEach((t,a)=>{e.includes(a)?t.element.classList.add("highlight"):t.element.classList.remove("highlight")})});let B=null,$=null;function G(){g.render(h,f)}function q(){y=requestAnimationFrame(q),S.update(),G()}function V(){f.aspect=window.innerWidth/window.innerHeight,f.updateProjectionMatrix(),g.setSize(window.innerWidth,window.innerHeight),G()}return s(async()=>{h=new U,f=new M(40,window.innerWidth/window.innerHeight,1,1e4),f.position.z=3e3,g=new F,g.setSize(window.innerWidth,window.innerHeight),v.value&&v.value.appendChild(g.domElement);let e=1,t=[];"0123".split("").forEach(a=>{t=t.concat(D[a].map(t=>`${t[0]+e}-${t[1]+1}`)),e+=5});const a={ROW_COUNT:7,COLUMN_COUNT:21,HIGHLIGHT_CELL:t,COMPANY:"演示公司"},n=await I(),s=n.data.map(e=>[e.jwcode,e.username,"PSST"]),i=n.data.map(e=>e.jwcode||e.username||"");d.setAllUsers(i);!function(e,t,a,n,s){let i=0;for(let r=0;r<s.ROW_COUNT;r++)for(let l=0;l<s.COLUMN_COUNT;l++){const o=(s.HIGHLIGHT_CELL||[]).includes(l+"-"+r),u=E(e[i%t],o,i,a,s.COMPANY),c=new A(u);c.position.x=4e3*Math.random()-2e3,c.position.y=4e3*Math.random()-2e3,c.position.z=4e3*Math.random()-2e3,h.add(c),L.push(c);const d=new T;d.position.x=140*l-n.x,d.position.y=-180*r+n.y,k.table.push(d),i++}}(s,s.length,!0,{x:(115*a.COLUMN_COUNT-20)/2,y:(120*a.ROW_COUNT-20)/2},a),function(){const e=new C;for(let t=0,a=L.length;t<a;t++){const n=Math.acos(2*t/a-1),s=Math.sqrt(a*Math.PI)*n,i=new T;i.position.setFromSphericalCoords(600,n,s),i.position.y-=200,e.set(0,-200,0),i.lookAt(e),k.sphere.push(i)}}(),G(),q(),setTimeout(()=>{N("enter")},500),window.addEventListener("resize",V)}),r(()=>{window.removeEventListener("resize",V),R(),y&&cancelAnimationFrame(y),$&&(clearTimeout($),$=null)}),a({resetCard:function(e,t=500){return e&&0!==e.length?(R(),z.value=0,b.value=0,x=!1,window.pageLocates&&delete window.pageLocates,w=[],e.forEach(e=>{const a=L[e],n=k.sphere[e];new S.Tween(a.position).to({x:n.position.x,y:n.position.y,z:n.position.z},Math.random()*t+t).easing(S.Easing.Exponential.InOut).start(),new S.Tween(a.rotation).to({x:n.rotation.x,y:n.rotation.y,z:n.rotation.z},Math.random()*t+t).easing(S.Easing.Exponential.InOut).start()}),new Promise(a=>{new S.Tween({}).to({},2*t).onUpdate(()=>G()).start().onComplete(()=>{e.forEach(e=>{const t=L[e];t.element.dataset.originalContent&&(t.element.innerHTML=t.element.dataset.originalContent,delete t.element.dataset.originalContent),t.element.classList.remove("prize")}),a()})})):Promise.resolve()},addHighlight:H,switchScreen:N,rotateBallStart:function(){return new Promise(e=>{if(!h)return e();h.rotation.y=0,B=new S.Tween(h.rotation).to({y:6*Math.PI*1e3},3e6).onUpdate(()=>G()).onComplete(()=>e()).start()})},rotateBallStop:function(){return new Promise(e=>{if(!h||!B)return e();B.stop();const t=h.rotation.y,a=2*Math.ceil(t/(2*Math.PI))*Math.PI,n=500+Math.abs(a-t)/Math.PI*1e3;new S.Tween(h.rotation).to({y:a},n).easing(S.Easing.Cubic.Out).onUpdate(()=>G()).onComplete(()=>{h.rotation.y=0,G(),e()}).start()})},selectCard:function(e,t,a=600){return $&&(clearTimeout($),$=null),j(),new Promise(n=>{b.value=Math.ceil(t.length/J),z.value=0;const s=[];for(let e=0;e<b.value;e++){const a=e*J,n=Math.min((e+1)*J,t.length)-a,i=[];if(n>5){const e=[-87,87],t=Math.ceil(n/2);let a=-(t-1)/2;for(let n=0;n<t;n++)i.push({x:140*a,y:e[0]}),a++;a=-(n-t-1)/2;for(let s=t;s<n;s++)i.push({x:140*a,y:e[1]}),a++}else{let e=-(n-1)/2;for(let t=0;t<n;t++)i.push({x:140*e,y:0}),e++}s.push(i)}e.forEach((e,n)=>{!function(e,t){w.includes(e)||w.push(e);const a=L[e].element;a.dataset.originalContent||(a.dataset.originalContent=a.innerHTML);const n=t.jwcode||t[0]||"";t.username||t[1],t.company||t[2],a.innerHTML=`<div style="font-size: 20px; font-weight: bold; color: #ffffff; text-align: center; display: flex; justify-content: center; align-items: center; width: 100%; height: 100%;">${n}</div>`,a.classList.add("prize")}(e,t[n]);const i=L[e],r=Math.floor(n/J),l=0===r,o=n%J,u=s[r][o];let c;c=l?u.y:u.y-1e3,new S.Tween(i.position).to({x:u.x,y:c,z:2200},Math.random()*a+a).easing(S.Easing.Exponential.InOut).start(),new S.Tween(i.rotation).to({x:0,y:0,z:0},Math.random()*a+a).easing(S.Easing.Exponential.InOut).start(),i.element.classList.add("prize")}),window.pageLocates=s,new S.Tween({}).to({},2*a).onUpdate(()=>G()).start().onComplete(()=>{b.value>1&&v.value&&v.value.addEventListener("wheel",P,{passive:!1}),n()})})},getTotalCards:function(){return L.length},changeCard1:function(){R(),z.value=0,b.value=0,x=!1,window.pageLocates&&delete window.pageLocates,w.forEach(e=>{const t=L[e].element;t.dataset.originalContent&&(t.innerHTML=t.dataset.originalContent,delete t.dataset.originalContent),t.classList.remove("prize")}),w=[]}}),(e,t)=>(l(),o("div",Q,[u("div",{ref_key:"threeContainer",ref:v,class:"three-container"},null,512),b.value>1?(l(),o("div",X," 第 "+c(z.value+1)+" 页 / 共 "+c(b.value)+" 页 ",1)):p("",!0)]))}},ee=a(K,[["__scopeId","data-v-3fcfd033"]]);const te={key:0},ae={class:"prize-panel-root"},ne={key:0,class:"auto-hide-notification"},se={key:1,class:"prize-panel-list"},ie=["onClick"],re={key:0,class:"prize-card"},le={class:"prize-img-wrap"},oe=["src","alt"],ue={class:"prize-info"},ce={class:"prize-row prize-row-top"},de={class:"prize-level"},ve={class:"prize-name"},pe={class:"prize-row prize-row-bottom"},me={class:"progress-bar-bg"},ge={class:"progress-bar-text"},he={key:1,class:"prize-card prize-card-mask"},fe={class:"prize-panel-footer"},ye={key:1},we={class:"prize-panel-root"},ze={key:0,class:"prize-panel-list1"},be={class:"prize-card"},xe={class:"prize-img-wrap"},Ce=["src","alt"],Le={class:"prize-info"},ke={class:"prize-row prize-row-top"},Te={class:"prize-level"},Ue={class:"prize-name"},Me={class:"prize-row prize-row-bottom"},De={class:"progress-bar-bg"},Ie={class:"progress-bar-text"},Se={class:"prize-panel-footer"},Ee={class:"winner-list"},Ne={class:"pagination-controls"},_e=["disabled"],Oe={class:"page-info"},Pe=["disabled"],Re={__name:"PrizePanel",props:{prizes:Array},setup(e){const a=t(!1),r=t(""),m=(e,t=1500)=>{r.value=e,a.value=!0,setTimeout(()=>{a.value=!1},t)},g=e,w=t(0),z=Y(),b=n({get:()=>z.lastRevealedIdx,set:e=>z.setLastRevealedIdx(e)}),x=n({get:()=>z.waitingForNextReveal,set:e=>z.setWaitingForNextReveal(e)});n({get:()=>z.winners,set:e=>z.setWinners(e)});const C=n({get:()=>z.lotteryState,set:e=>z.setLotteryState(e)});i(C,(e,t)=>{"rotating"===t&&"result"===e&&j()});const L=t(-1);L.value=b.value;const k=t(!0),T=e=>e>=(g.prizes?.length||0)-w.value,U=n(()=>(g.prizes?.length||0)-w.value-1);function M(e){if(-1===L.value)return!0;const t=g.prizes[L.value];if(t){if(D(t)>0)return x.value=!1,!1;x.value=!0}return!0}function D(e){return(window.dataManager&&window.dataManager.state.basicData.luckyUsers||{})[e.type],e.remainNum}const I=t(!1),S=t([]),E=t(1),_=t(16),O=t(1),P=n(()=>{const e=(E.value-1)*_.value,t=e+_.value;return S.value.slice(e,t)}),R=()=>{O.value=Math.ceil(S.value.length/_.value),0===O.value&&(O.value=1)},W=()=>{E.value>1&&E.value--},H=()=>{E.value<O.value&&E.value++},j=async()=>{try{const e=await N({pageSize:1e6,pageNum:1});S.value=e.data.list,E.value=1,R()}catch(e){}};async function A(){I.value||0===w.value&&m("请先揭晓奖品,并抽奖!"),w.value>0&&(I.value=!0),L.value>=0&&(k.value=!1)}function B(){I.value=!1,k.value||(k.value=!0)}const $=t(null),F=t(0),G=t(0);async function q(){await j(),I.value=!I.value,I.value||0===w.value&&m("请先揭晓奖品,并抽奖!"),I.value?L.value>0&&(k.value=!1):k.value||(k.value=!0)}function V(e){const t=e.count||1,a=D(e);return Math.round(a/t*100)}return s(()=>{j(),R()}),(t,n)=>k.value?(l(),o("div",te,[u("div",ae,[a.value?(l(),o("div",ne,c(r.value),1)):p("",!0),e.prizes&&e.prizes.length?(l(),o("div",se,[(l(!0),o(h,null,f(e.prizes,(e,t)=>(l(),o("div",{class:d(["prize-panel-item",{"revealed-highlight":t===L.value,disabled:t===U.value&&!M()}]),key:e.type||t,onClick:e=>function(e){e===U.value||T(e)?e===U.value&&M()?(w.value++,L.value=e,0===e&&(x.value=!1),b.value=e):e===U.value&&M():m("请按顺序揭秘奖品!")}(t),style:v({cursor:t!==U.value||M()?"pointer":"not-allowed"})},[T(t)?(l(),o("div",re,[u("div",le,[u("img",{class:"prize-img",src:e.img,alt:e.title},null,8,oe)]),u("div",ue,[u("div",ce,[u("span",de,c(e.title),1),u("span",ve,c(e.text),1)]),u("div",pe,[u("div",me,[u("div",{class:"progress-bar-fill",style:v({width:V(e)+"%"})},null,4),u("span",ge,c(D(e))+"/"+c(e.count),1)])])])])):(l(),o("div",he,n[1]||(n[1]=[u("img",{src:"/test/static/images/daijiemi-7d626f4d.png",alt:"待揭秘",class:"prize-mask-img"},null,-1)])))],14,ie))),128))])):p("",!0),u("div",fe,[u("div",{class:"arrow-up",onClick:A}),u("button",{ref_key:"winnerBtnRef",ref:$,class:"winner-btn",onClick:A}," 获奖名单 ",512)])])])):(l(),o("div",ye,[u("div",we,[e.prizes&&e.prizes.length&&L.value>=0?(l(),o("div",ze,[(l(),o("div",{class:d(["prize-panel-item",{"revealed-highlight":!0}]),key:e.prizes[L.value].type||L.value,style:{cursor:"pointer"}},[u("div",be,[u("div",xe,[u("img",{class:"prize-img",src:e.prizes[L.value].img,alt:e.prizes[L.value].title},null,8,Ce)]),u("div",Le,[u("div",ke,[u("span",Te,c(e.prizes[L.value].title),1),u("span",Ue,c(e.prizes[L.value].text),1)]),u("div",Me,[u("div",De,[u("div",{class:"progress-bar-fill",style:v({width:V(e.prizes[L.value])+"%"})},null,4),u("span",Ie,c(D(e.prizes[L.value]))+"/"+c(e.prizes[L.value].count),1)]),u("div",Se,[u("div",{class:"arrow-down",onClick:q}),I.value?(l(),o("div",{key:0,class:"winner-modal-mask",onClick:B},[u("div",{class:"winner-modal",style:v({position:"absolute",left:F.value+"px",top:G.value+"px"}),onClick:n[0]||(n[0]=y(()=>{},["stop"]))},[n[2]||(n[2]=u("div",{class:"winner-modal-title"},[u("span",null,"Homily ID"),u("span",null,"奖项")],-1)),n[3]||(n[3]=u("div",{style:{background:"linear-gradient(\r\n to left,\r\n rgb(232 76 10),\r\n rgb(195 6 6),\r\n rgb(240 90 9)\r\n )",height:"1px"}},null,-1)),u("ul",Ee,[(l(!0),o(h,null,f(P.value,(e,t)=>(l(),o("li",{key:t,style:{display:"flex","justify-content":"space-between","align-items":"center"}},[u("span",null,c(e.jwcode),1),u("span",null,c(e.gradeName),1)]))),128))]),u("div",Ne,[u("button",{class:"pagination-btn prev-btn",onClick:W,disabled:1===E.value}," < ",8,_e),u("span",Oe,c(E.value)+" / "+c(O.value),1),u("button",{class:"pagination-btn next-btn",onClick:H,disabled:E.value===O.value}," > ",8,Pe)])],4)])):p("",!0)])])])])]))])):p("",!0)])]))}},We=a(Re,[["__scopeId","data-v-57647ded"]]),He={class:"control-bar"},je=["disabled"],Ae=a({__name:"ControlBar",props:{lotteryState:String,isDisabled:Boolean},emits:["lottery-click","reset","export"],setup:e=>(t,a)=>(l(),o("div",He,[u("button",{disabled:e.isDisabled,onClick:a[0]||(a[0]=e=>t.$emit("lottery-click")),class:"lottery-button"},c("idle"===e.lotteryState?"进入抽奖":"ready"===e.lotteryState?"开始抽奖":"rotating"===e.lotteryState?"结束抽奖":"开始抽奖"),9,je)]))},[["__scopeId","data-v-f4d24c97"]]),Be={class:"mascot-container"},$e=a({__name:"Mascot",setup:e=>(e,t)=>(l(),o("div",Be,t[0]||(t[0]=[u("img",{src:_,alt:"可爱的角色",class:"mascot-image"},null,-1)])))},[["__scopeId","data-v-8d5920f9"]]);function Fe(e){return Math.floor(Math.random()*e)}const Ye=Y(),Ge=n({get:()=>Ye.lastRevealedIdx,set:e=>Ye.setLastRevealedIdx(e)}),qe=n({get:()=>Ye.winnerList,set:e=>Ye.setWinnerList(e)});function Ve(e,a){const n=t(!1),s=Y();function i(){e.updateCurrentPrize()}return{isLotting:n,executeLottery:async function(){if(n.value)return;n.value=!0,e.setLotteryStatus(!0),await e.saveData(),i(),await a.resetCard([]);const t=e.state.currentPrizeIndex,s=e.state.basicData.prizes[Ge.value],r=e.state.basicData.luckyUsers[Ge.value]||[],l=s.count-r.length,o=e.state.config.EACH_COUNT[Ge.value]||1,u=Math.min(o,l);try{s.gradeId,s.prizeId,s.remainNum;const n=qe.value;if(!(n&&n.data.data&&Array.isArray(n.data.data)))throw new Error("抽奖失败:后端返回数据格式错误");{const s=n.data.data.map(e=>({jwcode:e.jwcode,username:e.username})),i=e.getTotalCards();let r=[];for(let e=0;e<s.length;e++){let e=Fe(i);for(;r.includes(e);)e=Fe(i);r.push(e)}e.state.currentLuckys=s,e.state.basicData.luckyUsers[t]||(e.state.basicData.luckyUsers[t]=[]),e.state.basicData.luckyUsers[t].push(...s),e.updateCurrentRound(),await(a.selectCard?.(r,s))}}catch(c){const n=e.getTotalCards(),s=e.state.basicData.leftUsers;let i=[],r=[],l=s.length;for(let e=0;e<u&&l>0;e++){const e=Fe(l),t=s.splice(e,1)[0];r.push({jwcode:t.jwcode||t[0]||"",username:t.username||t[1]||"",company:t.company||t[2]||"PSST"}),l--;let a=Fe(n);for(;i.includes(a);)a=Fe(n);i.push(a)}e.state.currentLuckys=r,e.state.basicData.luckyUsers[t]||(e.state.basicData.luckyUsers[t]=[]),e.state.basicData.luckyUsers[t].push(...r),e.updateCurrentRound(),await(a.selectCard?.(i,r))}try{await e.updatePrizeList()}catch(c){}e.setLotteryStatus(!1),n.value=!1},performLottery:function(){},changePrize:i,resetLottery:async function(){n.value||(e.resetAllData(),a.addHighlight&&a.addHighlight(),s.setLotteryState("idle"),await a.resetCard([]),await e.resetData(),e.state.currentRound=1,a.switchScreen&&a.switchScreen("enter"))}}}const Ze={class:"choujiang-main"},Qe={key:0,class:"prize-exhausted-modal"},Xe={class:"modal-content"},Je={class:"modal-text"},Ke={key:1,class:"yonghuyichouwan-modal"},et=["src"],tt=["src"],at={__name:"index",setup(e){const a=t(""),r=t(!1),d=t({show:!1,text:""});function v(e,t=1e3){d.value={show:!0,text:e},setTimeout(()=>{d.value.show=!1},t)}const m=Y(),f=n({get:()=>m.lotteryState,set:e=>m.setLotteryState(e)}),y=n({get:()=>m.lastRevealedIdx,set:e=>m.setLastRevealedIdx(e)}),C=n({get:()=>m.waitingForNextReveal,set:e=>m.setWaitingForNextReveal(e)}),L=n({get:()=>m.winnerList,set:e=>m.setWinnerList(e)}),k=t(!1);i(k,(e,t)=>{});const T=function(){const e=g({basicData:{prizes:[],users:[],luckyUsers:{},leftUsers:[]},currentPrizeIndex:0,currentPrize:null,currentLuckys:[],isLotting:!1,currentRound:1,config:{prizes:[],EACH_COUNT:[],COMPANY:"",HIGHLIGHT_CELL:[],Resolution:1,ROW_COUNT:7,COLUMN_COUNT:20}});function t(){let t=e.basicData.prizes.length-1;for(;t>-1;t--)if(!(e.basicData.luckyUsers[t]&&e.basicData.luckyUsers[t].length>=e.basicData.prizes[t].count)){e.currentPrizeIndex=t,e.currentPrize=e.basicData.prizes[e.currentPrizeIndex];break}}function a(t){const a=e.basicData.luckyUsers[t]||[],n=e.config.EACH_COUNT[t];return n?Math.floor(a.length/n)+1:1}return{state:e,getBasicData:async function(){const a=await E(),n=a.data.map((e,t)=>({type:t,title:e.gradeName,text:e.prizeName,count:e.amount,img:e.imageUrl,gradeId:e.gradeId,prizeId:e.prizeId,remainNum:e.remainNum,perWin:e.perWin})),s=a.data.map(e=>e.perWin),i="前端假公司",r={};n.forEach((e,t)=>{r[t]=[]});const l=(await I()).data.map(e=>({jwcode:e.jwcode,username:e.username,company:i}));return e.config.prizes=n,e.config.EACH_COUNT=s,e.config.COMPANY=i,e.config.HIGHLIGHT_CELL=[],e.basicData.prizes=n,e.basicData.users=l,e.basicData.leftUsers=l.slice(),e.basicData.luckyUsers=r,t(),Promise.resolve({cfgData:{prizes:n,EACH_COUNT:s,COMPANY:i},leftUsers:l.slice(),luckyData:r})},getUsers:async function(){const t=await I(),a=t.data.map(t=>({jwcode:t.jwcode,username:t.username,company:e.config.COMPANY||"前端假公司"}));return e.basicData.users=a,Promise.resolve(t)},saveData:async function(e,t){return Promise.resolve()},setErrorData:async function(e){return Promise.resolve()},exportData:async function(){return alert("导出功能为假数据模式,无实际导出。"),Promise.resolve()},resetData:async function(){return Promise.resolve()},getTotalCards:function(){return e.config.ROW_COUNT*e.config.COLUMN_COUNT||50},setLotteryStatus:function(t=!1){e.isLotting=t},resetAllData:function(){e.basicData.luckyUsers={},e.basicData.leftUsers=e.basicData.users.slice(),e.currentLuckys=[],t()},updateCurrentPrize:function(){t()},getTotalRounds:function(t){const a=e.basicData.prizes[t],n=e.config.EACH_COUNT[t];return a&&n?Math.ceil(a.count/n):0},getCurrentRound:a,getLeftCount:function(t){const a=e.basicData.prizes[t],n=e.basicData.luckyUsers[t]||[];return a?a.count-n.length:0},updateCurrentRound:function(){e.currentRound=a(e.currentPrizeIndex)},updatePrizeList:async function(){try{const a=await E(),n=a.data.map((e,t)=>({type:t,title:e.gradeName,text:e.prizeName,count:e.amount,img:e.imageUrl,gradeId:e.gradeId,prizeId:e.prizeId,remainNum:e.remainNum,perWin:e.perWin})),s=a.data.map(e=>e.perWin);return e.config.prizes=n,e.config.EACH_COUNT=s,e.basicData.prizes=n,t(),Promise.resolve(n)}catch(a){return Promise.reject(a)}}}}();let U=t(null);t(null);const M=Ve(T,{resetCard:(...e)=>U.value?.resetCard?.(...e),addHighlight:(...e)=>U.value?.addHighlight?.(...e),switchScreen:(...e)=>U.value?.switchScreen?.(...e),rotateBallStart:(...e)=>U.value?.rotateBallStart?.(...e),rotateBallStop:(...e)=>U.value?.rotateBallStop?.(...e),selectCard:(...e)=>U.value?.selectCard?.(...e)});w(()=>{y.value=-1,f.value="idle"}),s(async()=>{k.value=!0,await T.getBasicData(),await T.getUsers(),setTimeout(()=>{k.value=!1},3800),window.dataManager=T,function(){S.value&&(S.value.load(),S.value.addEventListener("canplaythrough",()=>{}));W.value&&(W.value.load(),W.value.addEventListener("canplaythrough",()=>{}))}()});const D=P,S=t(null),N=t(!1),_=R,W=t(null),H=t(!1),j=t(!1);async function A(){if(S.value)try{S.value.paused?(S.value.readyState<2&&await new Promise(e=>{S.value.addEventListener("canplay",e,{once:!0}),S.value.load()}),await S.value.play(),N.value=!0):(S.value.pause(),N.value=!1)}catch(e){}}async function B(){if(!k.value)switch(k.value=!0,f.value){case"idle":setTimeout(()=>{k.value=!1},2e3),await(U.value?.switchScreen?.("lottery")),f.value="ready";break;case"ready":if(C.value){v("该礼品已抽取完毕,请揭秘下一个礼品"),k.value=!1;break}if(-1===y.value){v("请先揭秘一个礼品"),k.value=!1;break}if(0===y.value&&0===T.state.basicData.prizes[y.value].remainNum){v("该礼品已抽取完毕"),k.value=!1;break}A(),f.value="rotating";const t=T.state.basicData.prizes[y.value];U.value?.rotateBallStart?.();try{const e=await O({perWin:t.perWin,remainNum:t.remainNum,gradeId:t.gradeId,prizeId:t.prizeId});if(L.value=e,!1===e.data.round&&0===e.data.data.length){k.value=!0,j.value=!0;break}setTimeout(()=>{k.value=!1},2e3)}catch(e){}break;case"rotating":setTimeout(()=>{k.value=!1},2700),await(U.value?.rotateBallStop?.()),A(),async function(){if(W.value)try{W.value.currentTime=0,W.value.readyState<2&&await new Promise(e=>{W.value.addEventListener("canplay",e,{once:!0}),W.value.load()}),await W.value.play(),H.value=!0,W.value.addEventListener("ended",()=>{H.value=!1},{once:!0})}catch(e){}}(),f.value="result",await M.executeLottery(),await x(),function(){const e=T.state.currentLuckys,t=T.state.currentPrize;if(!e||0===e.length)return;const n=e.map(e=>e.username||e[1]||e.jwcode||"").join("、");a.value=`恭喜${n}获得${t?.title||""}`,r.value=!0,setTimeout(()=>{r.value=!1},3e3)}();break;case"result":setTimeout(()=>{k.value=!1},2800),await(U.value?.switchScreen?.("lottery")),await new Promise(e=>setTimeout(e,2500)),U.value?.changeCard1?.(),f.value="ready"}}function $(){M.resetLottery()}function F(){T.exportData()}return(e,t)=>(l(),o(h,null,[u("div",Ze,[z(ee,{ref_key:"lottery3DRef",ref:U},null,512),z(We,{prizes:b(T).state.basicData.prizes},null,8,["prizes"]),z(Ae,{"lottery-state":f.value,"is-disabled":k.value,onLotteryClick:B,onReset:$,onExport:F},null,8,["lottery-state","is-disabled"]),z($e),d.value.show?(l(),o("div",Qe,[u("div",Xe,[u("p",Je,c(d.value.text),1)])])):p("",!0),j.value?(l(),o("div",Ke,t[0]||(t[0]=[u("div",{class:"yonghuyichouwan-modal-content"},[u("p",{class:"yonghuyichouwan-modal-text"},"恭喜所有中奖用户!")],-1)]))):p("",!0)]),u("audio",{ref_key:"audioRef",ref:S,src:b(D),loop:"",preload:"auto"},null,8,et),u("audio",{ref_key:"audioRef1",ref:W,src:b(_),preload:"auto"},null,8,tt)],64))}},nt=a(at,[["__scopeId","data-v-b4cda32f"]]);export{nt as default};