import{a6 as U,af as A,ag as N,ah as P,ai as O,a3 as o,a4 as l,aj as r,a5 as z,a8 as m,L as E,ak as Q,al as q,b as R,I as j,am as S,an as D,ao as i,s as v,U as T,a2 as I}from"./index-Dry6uMZb.js";import{g as M,h as W,a as $}from"./auth-C4b7Y9ej.js";const F={class:"login-page"},G={class:"login-card"},H={key:0,class:"qr-login"},J={class:"qr-container"},K={key:0,class:"qr-loading"},X={key:1,class:"qr-code"},Y=["src"],Z={key:2,class:"qr-error"},ee={key:0,class:"scan-tip"},ae={key:1,class:"loading-container"},te=U({__name:"Login",setup(se){const f=A(),c=N(),s=i(!0),h=i(""),y=i(!1),p=i(""),n=i(!1),_=i("请稍候...");let g=null,w="";function x(){return typeof navigator>"u"?!1:/wxwork/i.test(navigator.userAgent)}async function u(){y.value=!0,p.value="waiting";try{const a=await M();h.value=`data:image/png;base64,${a.qrcode_png_base64}`,w=a.ticket,b()}catch(a){console.error("获取二维码失败:",a),v("获取二维码失败,请重试")}finally{y.value=!1}}async function C(){if(w)try{const a=await $(w);a.status==="scanned"?p.value="scanned":a.status==="confirmed"&&a.token?(d(),await L(a.token,a.user_info)):a.status==="expired"?(d(),v("二维码已过期,请重新扫码"),u()):a.status==="cancelled"&&(d(),v("扫码已取消"),p.value="waiting",u())}catch(a){console.warn("轮询扫码状态失败:",a)}}function b(){d(),g=setInterval(C,2e3)}function d(){g&&(clearInterval(g),g=null)}async function L(a,e){n.value=!0,_.value="登录中...";try{if(e!=null&&e.is_new_user){s.value=!1,await f.push({name:"Bind",query:{userid:e.userid,name:e.name}});return}c.setToken(a),e&&c.setUserInfo(e),s.value=!1,T("登录成功"),await f.push({name:"ChatView"})}catch(t){console.error("登录失败:",t),v("登录失败,请重试"),s.value=!0}finally{n.value=!1}}async function V(a,e){n.value=!0,_.value="授权中...";try{const t=await W(a,e);if(t.is_new_user){s.value=!1,await f.push({name:"Bind",query:{userid:t.user_info.userid,name:t.user_info.name}});return}c.setToken(t.token),c.setUserInfo(t.user_info),s.value=!1,T("登录成功"),await f.push({name:"ChatView"})}catch(t){console.error("OAuth回调处理失败:",t),v("授权失败,请重试"),s.value=!0}finally{n.value=!1}}return P(async()=>{const a=new URLSearchParams(window.location.search),e=a.get("code"),t=a.get("state");if(e){await V(e,t||void 0);return}if(x()){n.value=!0,_.value="正在跳转企微授权...";try{await c.redirectToOAuth()}catch(k){console.error("跳转授权失败:",k),s.value=!0,u()}finally{n.value=!1}}else s.value=!0,u()}),O(()=>{d()}),(a,e)=>{const t=E,k=R,B=j;return o(),l("div",F,[r("div",G,[e[5]||(e[5]=z('
扫码登录