2 lines
4.0 KiB
JavaScript
2 lines
4.0 KiB
JavaScript
import{N as a,d as l,I as e,c as t,r as u,aq as n,al as o,Y as s,l as p,f as c,k as i,w as r,m as _,p as d,B as v,t as f,v as g,q as k,A as h,ar as b,a9 as y,a3 as m,n as w,H as T,as as q,aa as x,at as C,i as P,s as I,_ as N}from"./index-CtL4_Q40.js";function D(l){return a.post({url:"/popup/report",data:l},{withToken:!1})}const G="popup_shown_",j=N(l({__name:"global-popup",props:{pagePath:{},triggerTick:{}},setup(l){const N=l,j=e();const A=t(()=>N.pagePath||j.popupPagePath||function(){const a=m();if(!a.length)return"";let l=a[a.length-1].route||"";return l=l.replace(/^\//,""),l.startsWith("mobile/")&&(l=l.replace("mobile/","")),"/"+l}()),B=t(()=>N.triggerTick??j.popupTick),F=u(!1),H=u(null),M=u(!1),S=u(100);let W=null;const Y=t(()=>{return{width:S.value+"%",backgroundColor:(a=S.value,a>60?"#4cd964":a>30?"#ff9500":"#ff3b30"),transitionDuration:"200ms"};var a}),z=C(),E=n();let J=null;const K=new Set;async function L(){var l;if(A.value)try{const e=await(l={page_path:A.value,platform:z},a.get({url:"/popup/list",data:l},{withToken:!1})),t=(null==e?void 0:e.lists)||[];if(!t.length)return;const u=t.find(a=>function(a){const l=G+a.id,e=Date.now();switch(a.frequency){case 1:return!0;case 2:return!K.has(a.id);case 3:try{const a=P(l);return!a||e-Number(a)>=864e5}catch(t){return!0}case 4:try{return!P(l)}catch(t){return!0}default:return!0}}(a));if(!u)return;const n=()=>{H.value=u,F.value=!0,function(a){if(K.add(a.id),3===a.frequency||4===a.frequency)try{I(G+a.id,Date.now())}catch(l){}}(u),function(a){V();const l=Number(a.auto_close_seconds||0);if(l<=0)return;const e=1e3*l,t=200,u=100*t/e;S.value=100,M.value=!0,W=setInterval(()=>{S.value=Math.max(0,S.value-u)},t),J=setTimeout(()=>{!function(){if(!H.value)return;D({popup_id:H.value.id,action:3,page_path:A.value,device_id:E,platform:z}).catch(()=>{}),U()}()},e)}(u),D({popup_id:u.id,action:1,page_path:A.value,device_id:E,platform:z}).catch(()=>{})};u.delay_seconds&&u.delay_seconds>0?setTimeout(n,1e3*u.delay_seconds):n()}catch(e){console.warn("[GlobalPopup] 拉取弹窗失败:",e)}}function O(){if(!H.value)return;const a=H.value;D({popup_id:a.id,action:2,page_path:A.value,device_id:E,platform:z}).catch(()=>{}),1===a.link_type&&a.link_url?(w({url:a.link_url,fail:()=>{T({url:a.link_url,fail:()=>q({url:a.link_url})})}}),U()):2===a.link_type&&a.link_url?(window.open(a.link_url,"_blank"),U()):3===a.link_type&&a.link_url&&(x({phoneNumber:a.link_url}),U())}function Q(){H.value&&(V(),D({popup_id:H.value.id,action:3,page_path:A.value,device_id:E,platform:z}).catch(()=>{}),U())}function R(){H.value&&0===H.value.is_closable||Q()}function U(){V(),F.value=!1,H.value=null}function V(){J&&(clearTimeout(J),J=null),W&&(clearInterval(W),W=null),M.value=!1,S.value=100}return o(()=>{L()}),s(B,()=>{F.value||L()}),s(A,()=>{F.value||L()}),(a,l)=>{const e=i,t=f,u=k,n=b;return F.value&&H.value?(p(),c(e,{key:0,class:"global-popup-mask",onClick:R},{default:r(()=>[_(e,{class:"global-popup-wrap",onClick:l[0]||(l[0]=y(()=>{},["stop"]))},{default:r(()=>[M.value?(p(),c(e,{key:0,class:"global-popup__progress"},{default:r(()=>[_(e,{class:"global-popup__progress-inner",style:d(Y.value)},null,8,["style"])]),_:1})):v("",!0),_(e,{class:"global-popup"},{default:r(()=>[0!==H.value.is_closable?(p(),c(e,{key:0,class:"global-popup__close",onClick:Q},{default:r(()=>[_(t,null,{default:r(()=>[g("×")]),_:1})]),_:1})):v("",!0),_(e,{class:"global-popup__body",onClick:O},{default:r(()=>[H.value.image?(p(),c(u,{key:0,src:H.value.image,class:"global-popup__image",mode:"widthFix"},null,8,["src"])):v("",!0),H.value.title||H.value.content?(p(),c(e,{key:1,class:"global-popup__text"},{default:r(()=>[H.value.title?(p(),c(t,{key:0,class:"global-popup__title"},{default:r(()=>[g(h(H.value.title),1)]),_:1})):v("",!0),H.value.content?(p(),c(n,{key:1,class:"global-popup__content",nodes:H.value.content},null,8,["nodes"])):v("",!0)]),_:1})):v("",!0),0!==H.value.link_type?(p(),c(e,{key:2,class:"global-popup__btn"},{default:r(()=>[_(t,null,{default:r(()=>[g("查看详情")]),_:1})]),_:1})):v("",!0)]),_:1})]),_:1})]),_:1})]),_:1})):v("",!0)}}}),[["__scopeId","data-v-d510a7ad"]]);export{j as G};
|