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 line
9.4 KiB
1 line
9.4 KiB
|
4 days ago
|
import{n as e}from"./axios-CiYFffbI.js";import{A as t,I as n,N as r,V as i,Y as a,_ as o,d as s,f as c,i as l,it as u,kt as d,l as f,p,q as m,u as h,ut as g,v as _,y as v,z as ee}from"./runtime-core.esm-bundler-CnFWH3R5.js";import{i as y,o as b,r as x}from"./index-BbRh5og5.js";import{n as S,t as C}from"./datetime-3T8f3S0H.js";import{t as w}from"./reservationStatus-JhCfFMzX.js";import{n as T,t as E}from"./h5Http-CCovTImr.js";var te={class:`m-scan`},ne={class:`m-scan-head`},re={key:0,class:`m-scan-venue`},ie={class:`m-scan-stats`,"aria-label":`今日预约统计`},D={key:0,class:`m-scan-stats-loading`},O={class:`m-scan-stat`},k={class:`m-scan-stat-num`},ae={class:`m-scan-stat m-scan-stat--verified`},oe={class:`m-scan-stat-num`},se={class:`m-scan-main`},ce=[`disabled`],le={class:`cam-wrap`},ue={key:0,class:`today-modal-summary`},de={key:1,class:`today-list`},fe={class:`today-row`},pe={class:`today-name`},me={class:`today-act`},he={class:`today-meta`},A=b(v({__name:`VerifyScan`,setup(v){let b=y(),A=x(),j=f(()=>A.path.startsWith(`/m/`)?`/m/verify/login`:`/h5/verify/login`),M=u(!1),N=u(!1),P=u(!1),F=u(null),I=u(null),L=null,R=u(``),z=u(``),B=u(null),V=u(!1),H=u(!1),ge=()=>{let e=new Date;return`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,`0`)}-${String(e.getDate()).padStart(2,`0`)}`},U=u([]),W=u(!1),G=u(null),K=f(()=>{if(G.value)return G.value;let e=0,t=0;for(let n of U.value)n.status!==`cancelled`&&(e+=1),n.status===`verified`&&(t+=1);return{total_orders:e,verified_orders:t}}),q=u(null),J=f(()=>{let e=q.value;if(!e)return``;let t=e.venues??[];if(e.role===`super_admin`&&t.length===0)return`全部场馆`;let n=t.map(e=>e.name).filter(Boolean);return n.length?n.join(`、`):`未绑定场馆`});async function _e(){try{let{data:e}=await T.get(`/me`);q.value=e}catch{q.value=null}}function ve(e){let t=e.trim();if(!t)return``;let n=t.match(/[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}/i);if(n)return n[0];try{let e=new URL(t,window.location.origin),n=e.searchParams.get(`token`)||e.searchParams.get(`qr_token`)||e.searchParams.get(`t`);if(n)return n.trim()}catch{}return t}async function Y(){W.value=!0;try{let e=ge(),[t,n]=await Promise.allSettled([T.get(`/reservations`,{params:{status:`all`,start_date:e,end_date:e,date_field:`activity_day`}}),T.get(`/reservations/today-summary`)]);if(t.status===`rejected`)throw t.reason;let r=t.value.data;U.value=Array.isArray(r)?r:[],n.status===`fulfilled`?G.value=n.value.data:G.value=null}catch(t){e.error(t?.response?.data?.message??`加载今日报名失败`),U.value=[],G.value=null}finally{W.value=!1}}async function X(t){let n=ve(t);if(!n){e.warning(`未能识别二维码内容`);return}z.value=n,V.value=!0,B.value=null;try{let{data:e}=await T.get(`/reservations/preview`,{params:{qr_token:n}});B.value=e,N.value=!0,$()}catch(t){let n=t?.response?.data?.message??`查询预约失败`;e.error(n)}finally{V.value=!1}}async function Z(){if(z.value){H.value=!0;try{let{data:t}=await T.post(`/reservations/verify`,{qr_token:z.value});e.success(t?.message??`核销成功`),B.value={reservation:t.reservation,can_verify:!1,verify_block_reason:null},await Y()}catch(t){let n=t?.response?.data?.message??`核销失败`;e.error(n),z.value&&await X(z.value)}finally{H.value=!1}}}async function ye(){return!B.value||!B.value.can_verify?(Q(),!0):(await Z(),!1)}function Q(){N.value=!1,B.value=null,z.value=``}function $(){M.value=!1,L&&=(window.clearInterval(L),null),I.value&&=(I.value.getTracks().forEach(e=>e.stop()),null)}async function be(){if(!localStorage.getItem(`szkp_h5_verify_token`)){b.replace(j.value);return}if(!navigator.mediaDevices?.getUserMedia){e.warning(`当前环境不支持摄像头,请使用支持摄像头的手机浏览器`);return}R.value=``,M.value=!0;try{I.value=await navigator.mediaDevices.getUserMedia({video:{facingMode:`environment`},audio:!1}),await new Promise(e=>requestAnimationFrame(e)),F.value&&(F.value.srcObject=I.value,await F.value.play()),xe()}catch{e.error(`无法打开摄像头,请检查权限设置`),$()}}function xe(){let t=window.BarcodeDetector;if(!t){e.w
|