[split-upload 5/6] f2fd4fa backup via proxy

This commit is contained in:
Simon
2026-08-11 14:17:39 +08:00
parent 90ff78563a
commit 7e7cafb4a3
74 changed files with 9410 additions and 3 deletions
@@ -0,0 +1 @@
import{a8 as A,ah as N,ai as P,aj as U,ak as O,a5 as o,a6 as l,al as r,a7 as z,aa as m,L as E,am as Q,an as S,b as R,I as j,ao as q,ap as D,aq as i,s as v,X as T,a4 as I}from"./index-Cj8AuQw6.js";import{g as M,h as W,a as X}from"./auth-BIncOQKn.js";const $={class:"login-page"},F={class:"login-card"},G={key:0,class:"qr-login"},H={class:"qr-container"},J={key:0,class:"qr-loading"},K={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=A({__name:"Login",setup(se){const p=N(),c=P(),s=i(!0),h=i(""),y=i(!1),f=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,f.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 X(w);a.status==="scanned"?f.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("扫码已取消"),f.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 p.push({name:"Bind",query:{userid:e.userid,name:e.name}});return}c.setToken(a),e&&c.setUserInfo(e),s.value=!1,T("登录成功"),await p.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 p.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 p.push({name:"ChatView"})}catch(t){console.error("OAuth回调处理失败:",t),v("授权失败,请重试"),s.value=!0}finally{n.value=!1}}return U(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",$,[r("div",F,[e[5]||(e[5]=z('<div class="login-header" data-v-069790d6><div class="login-logo-row" data-v-069790d6><span class="logo-block" data-v-069790d6>IT</span><h1 class="login-title" data-v-069790d6>智能IT服务</h1></div><p class="login-subtitle" data-v-069790d6>扫码登录</p></div>',1)),s.value?(o(),l("div",G,[r("div",H,[y.value?(o(),l("div",J,[m(t,{type:"spinner",size:"32px"}),e[0]||(e[0]=r("p",null,"加载中...",-1))])):h.value?(o(),l("div",K,[r("img",{src:h.value,alt:"企微扫码登录"},null,8,Y)])):(o(),l("div",Z,[e[2]||(e[2]=r("p",null,"获取二维码失败",-1)),m(k,{size:"small",onClick:u},{default:Q(()=>[...e[1]||(e[1]=[S("重试",-1)])]),_:1})]))]),e[4]||(e[4]=r("p",{class:"qr-hint"},"请使用企业微信扫码登录",-1)),f.value==="scanned"?(o(),l("p",ee,[m(B,{name:"checked"}),e[3]||(e[3]=S(" 已扫码,请在手机确认 ",-1))])):q("",!0)])):q("",!0),n.value?(o(),l("div",ae,[m(t,{type:"spinner",size:"40px"}),r("p",null,D(_.value),1)])):q("",!0)])])}}}),le=I(te,[["__scopeId","data-v-069790d6"]]);export{le as default};
@@ -0,0 +1 @@
import{s as a}from"./index-Cj8AuQw6.js";import{A as p,a as e,B as t,b as P,C as i,c as l,d as c,e as n,f as d,D as m,E as g,F as u,I as b,L as f,g as B,O as h,P as C,R as T,S as w,h as x,i as S,j as y,T as I,k as v,l as G,m as N,n as k,o as F,p as R,q as A,r as D,t as L,u as Z,v as E,w as O,x as j,y as q,z,G as H,H as J,J as K,K as M,M as Q,N as U,Q as V,U as W,V as X,W as Y,X as _,Y as $,Z as ss,_ as as,$ as os,a0 as rs,a1 as ps,a2 as es}from"./index-Cj8AuQw6.js";import{C as Ps,I as is,N as ls,a as cs,S as ns,b as ds,T as ms,c as gs,i as us,n as bs,d as fs,s as Bs,t as hs}from"./index-BuiC1p3y.js";import{C as Ts,c as ws}from"./index-CSN_rLOd.js";import{F as Ss,N as ys,R as Is,a as vs,f as Gs,n as Ns,r as ks,b as Fs}from"./index-ClPOLY6c.js";export{p as ActionBar,e as ActionBarButton,t as Badge,P as Button,Ps as Card,i as Cell,Ts as CellGroup,l as Checkbox,c as Collapse,n as CollapseItem,d as ConfigProvider,m as Dialog,g as Empty,u as Field,Ss as Form,b as Icon,is as Image,f as Loading,B as Locale,ls as NavBar,cs as NoticeBar,ys as Notify,h as Overlay,C as Popup,Is as Radio,vs as RadioGroup,T as Rate,w as Search,ns as Step,ds as Steps,x as Sticky,S as Swipe,y as SwipeItem,I as Tab,v as Tabs,ms as Tag,G as actionBarButtonProps,N as actionBarProps,k as badgeProps,F as buttonProps,gs as cardProps,ws as cellGroupProps,R as cellProps,A as checkboxProps,D as closeToast,L as collapseItemProps,Z as collapseProps,E as configProviderProps,O as dialogProps,j as emptyProps,q as fieldProps,Gs as formProps,z as iconProps,us as imageProps,H as loadingProps,bs as navBarProps,fs as noticeBarProps,Ns as notifyProps,J as overlayProps,K as popupProps,ks as radioGroupProps,Fs as radioProps,M as rateProps,Q as searchProps,U as setGlobalZIndex,V as showConfirmDialog,W as showDialog,X as showFailToast,Y as showLoadingToast,_ as showSuccessToast,a as showToast,Bs as stepsProps,$ as stickyProps,ss as swipeProps,as as tabProps,os as tabsProps,hs as tagProps,rs as toastProps,ps as useAllTabStatus,es as useGlobalZIndex};
@@ -0,0 +1 @@
:root,:host{--van-cell-group-background: var(--van-background-2);--van-cell-group-title-color: var(--van-text-color-2);--van-cell-group-title-padding: var(--van-padding-md) var(--van-padding-md);--van-cell-group-title-font-size: var(--van-font-size-md);--van-cell-group-title-line-height: 16px;--van-cell-group-inset-padding: 0 var(--van-padding-md);--van-cell-group-inset-radius: var(--van-radius-lg);--van-cell-group-inset-title-padding: var(--van-padding-md) var(--van-padding-md)}.van-cell-group{background:var(--van-cell-group-background)}.van-cell-group--inset{margin:var(--van-cell-group-inset-padding);border-radius:var(--van-cell-group-inset-radius);overflow:hidden}.van-cell-group__title{padding:var(--van-cell-group-title-padding);color:var(--van-cell-group-title-color);font-size:var(--van-cell-group-title-font-size);line-height:var(--van-cell-group-title-line-height)}.van-cell-group__title--inset{padding:var(--van-cell-group-inset-title-padding)}