Files
evening_detective_frontend/dist/assets/TicketScannerView-B1lQSBRz.js
T
2026-09-29 13:01:05 +07:00

1 line
4.2 KiB
JavaScript

import{B as e,C as t,D as n,Ft as r,G as i,H as a,L as o,O as s,S as c,_t as l,b as u,ft as d,h as f,k as p,tt as m,u as h,w as g,x as _}from"./client-Cpk7Zqeq.js";import{t as v}from"./Card-C3qoUF8q.js";import{t as y}from"./Button-So9RkBwP.js";import{t as b}from"./Input-B-BGqKBA.js";import{t as x}from"./Alert-BcUKnssM.js";import{t as S}from"./use-message-CUjJ01YL.js";import{t as C}from"./Space-CRuh_NvC.js";import{nt as w,t as T}from"./index-CGsLOuAb.js";import{n as E}from"./es-DPDNoR0w.js";import{t as D}from"./HeaderMenu-C9xMHJBS.js";import{t as O}from"./_plugin-vue_export-helper-BDNMzG2s.js";import{t as k}from"./datetime-BJNH0M1T.js";var A={class:`center-block-custom center-middle-block-custom scanner-page`},j={key:0},M={key:1},N={key:2},P=O(p({__name:`TicketScannerPage`,setup(p){let O=T(),P=h(),F=E(),I=S(),L=d(``),R=d(),z=d(``),B=d(!1),V=d(),H=d(!1),U,W=0,G=u(()=>{try{return new URL(L.value.trim()).pathname.match(/\/tickets\/([^/]+)/)?.[1]||``}catch{return L.value.trim()}});async function K(){if(!(!G.value||B.value)){B.value=!0,z.value=``,R.value=void 0;try{let e=await F.GetTicket({token:G.value});e.error||!e.ticket?z.value=e.error||`Билет не найден`:R.value=e.ticket}catch(e){z.value=e instanceof Error?e.message:`Не удалось проверить билет`}finally{B.value=!1}}}async function q(){if(!(!G.value||B.value)){B.value=!0,z.value=``;try{let e=await F.AcceptTicket({token:G.value});e.error||!e.ticket?z.value=e.error||`Не удалось принять билет`:(R.value=e.ticket,I.success(`Билет принят`))}catch(e){z.value=e instanceof Error?e.message:`Не удалось принять билет`}finally{B.value=!1}}}async function J(){let e=window.BarcodeDetector;if(!e||!navigator.mediaDevices?.getUserMedia){z.value=`Сканирование камерой не поддерживается. Введите ссылку вручную.`;return}try{U=await navigator.mediaDevices.getUserMedia({video:{facingMode:`environment`}}),H.value=!0,await o(),V.value&&(V.value.srcObject=U,await V.value.play());let t=new e,n=async()=>{if(!H.value||!V.value)return;let e=await t.detect(V.value);if(e[0]?.rawValue){L.value=e[0].rawValue,Y(),await K();return}W=requestAnimationFrame(n)};W=requestAnimationFrame(n)}catch{z.value=`Не удалось открыть камеру. Введите ссылку вручную.`}}function Y(){H.value=!1,cancelAnimationFrame(W),U?.getTracks().forEach(e=>e.stop()),U=void 0}return a(()=>{O.isAuthenticated||P.replace(`/login`)}),e(Y),(e,a)=>(i(),g(f,null,[s(D,{active:`games`}),_(`div`,A,[s(l(v),{title:`Проверка билета`,class:`scanner-card`},{default:m(()=>[s(l(C),{vertical:``},{default:m(()=>[H.value?(i(),g(`video`,{key:0,ref_key:`video`,ref:V,class:`scanner-video`,muted:``,playsinline:``},null,512)):t(``,!0),H.value?(i(),c(l(y),{key:2,onClick:Y},{default:m(()=>[...a[2]||=[n(`Остановить камеру`,-1)]]),_:1})):(i(),c(l(y),{key:1,onClick:J},{default:m(()=>[...a[1]||=[n(`Сканировать камерой`,-1)]]),_:1})),s(l(b),{value:L.value,"onUpdate:value":a[0]||=e=>L.value=e,placeholder:`Или вставьте ссылку на билет`,onKeyup:w(K,[`enter`])},null,8,[`value`]),s(l(y),{type:`primary`,loading:B.value,onClick:K},{default:m(()=>[...a[3]||=[n(`Проверить билет`,-1)]]),_:1},8,[`loading`]),z.value?(i(),c(l(x),{key:3,type:`error`},{default:m(()=>[n(r(z.value),1)]),_:1})):t(``,!0),R.value?(i(),g(f,{key:4},[s(l(x),{type:R.value.status===`active`?`success`:`warning`},{default:m(()=>[n(r(R.value.gameName),1),a[4]||=_(`br`,null,null,-1),n(` Статус: `+r(R.value.status===`active`?`действителен`:`уже использован`)+` `,1),R.value.usedBy?(i(),g(`span`,j,` · `+r(R.value.usedBy),1)):t(``,!0),R.value.usedAt?(i(),g(`br`,M)):t(``,!0),R.value.usedAt?(i(),g(`span`,N,`Использован: `+r(l(k)(R.value.usedAt)),1)):t(``,!0)]),_:1},8,[`type`]),R.value.status===`active`&&R.value.gameStatus!==`finish`?(i(),c(l(y),{key:0,type:`primary`,loading:B.value,onClick:q},{default:m(()=>[...a[5]||=[n(` Принять билет `,-1)]]),_:1},8,[`loading`])):t(``,!0)],64)):t(``,!0)]),_:1})]),_:1})])],64))}}),[[`__scopeId`,`data-v-8a7f8b5d`]]),F=p({__name:`TicketScannerView`,setup(e){return(e,t)=>(i(),c(P))}});export{F as default};