2 lines
14 KiB
JavaScript
2 lines
14 KiB
JavaScript
|
|
import{d as e,r as a,a as l,c as s,o as t,b as n,e as c,f as i,w as o,g as u,h as d,v as A,i as r,j as m,n as v,t as p,k as f,l as g,m as h,F as I,s as y,p as b,q as k,u as C,x as R,y as Q,z as E,I as z,A as Z,S as j,B as V}from"./index-DGiVEDOl.js";import{f as B,s as G,A as w,l as N}from"./auth.vuBox8Gk.js";import O from"./pages-config-config.DY3_fj8k.js";import Y from"./pages-profile-profile.DM6PeJS4.js";import{_ as D}from"./_plugin-vue_export-helper.BCo6x5W8.js";import"./config-doctor.TgARj_nM.js";import"./navigation.CRkd1wPM.js";import"./profile.DeoOGLiN.js";import"./session.AIvyRM0e.js";const J=D(e({__name:"index",setup(e){const D=a([]),J=l({phone:"",code:"",institutionId:""}),F=a(""),L=a(!1),S=a(!1),T=a(!1),U=a(!1),W=a(0),x=a(""),M=a(!1),H=a(!1),P=a(!1),X=a(!1),q=a(!1),K=a(!1);let _=null,$=null;const ee=s((()=>D.value.find((e=>e.id===J.institutionId)))),ae=s((()=>W.value>0)),le=s((()=>T.value?"发送中...":ae.value?`${W.value}s`:"获取验证码"));function se(e){const a=[e.province,e.city].filter(Boolean).join(" · ");return{id:String(e.id),code:e.code,name:e.name,city:a||"其他",typeName:{hospital:"医院",college:"医学院校",school:"学校",clinic:"诊所"}[e.type]||"机构"}}function te(){L.value=!L.value}async function ne(){if(!T.value&&!ae.value&&ie()){T.value=!0;try{let a;try{a=await G(J.phone)}catch(e){if(!(e instanceof w&&"AUTH_PHONE_NOT_FOUND"===e.code))throw e;a=await G(J.phone,"register")}de(a.message||"验证码已发送"),W.value=60,Ae(),_=setInterval((()=>{W.value-=1,W.value<=0&&Ae()}),1e3)}catch(e){de(e instanceof Error?e.message:"验证码发送失败")}finally{T.value=!1}}}function ce(){if(!U.value&&ie())if(J.code.trim())if(ee.value){if(!L.value)return de("请阅读并勾选用户协议"),S.value=!1,void C((()=>{S.value=!0,setTimeout((()=>{S.value=!1}),500)}));U.value=!0,N({phone:J.phone,code:J.code,institution_code:ee.value.code,institution_name:ee.value.name}).then((e=>{var a,l,s;const t=e.user||{},n={...t,id:t.id?String(t.id):"",phone:t.phone||J.phone,institutionId:(null==(a=ee.value)?void 0:a.code)||"",institutionCode:(null==(l=ee.value)?void 0:l.code)||"",institutionName:(null==(s=ee.value)?void 0:s.name)||""};var c;(y("clinical-thinking-user",n),y("clinical-thinking-tokens",e.tokens),y("clinical-thinking-access-token",e.tokens.access),y("clinical-thinking-refresh-token",e.tokens.refresh),de(e.message||"正在进入系统..."),null!=(c=t.department)&&("string"==typeof c?""!==c.trim():Array.isArray(c)?0!==c.length:"object"!=typeof c||0!==Object.keys(c).length))?k({url:"/pages/home/home"}):b({url:"/pages/config/config"})})).catch((e=>{de(e instanceof Error?e.message:"登录失败,请稍后重试")})).finally((()=>{U.value=!1}))}else de("请选择所属机构");else de("请输入短信验证码")}function ie(){return!!/^1[3-9]\d{9}$/.test(J.phone)||(de("请输入正确的手机号"),!1)}function oe(e){V({title:"service"===e?"用户服务协议":"隐私保护政策",content:"这里是前端模拟协议内容,后续可替换为正式协议页面或富文本接口。",showCancel:!1,confirmColor:"#00478d"})}function ue(){P.value=!1,H.value=!0}function de(e){$&&clearTimeout($),x.value=e,M.value=!0,$=setTimeout((()=>{M.value=!1}),2500)}function Ae(){_&&(clearInterval(_),_=null)}return t((()=>{!async function(){q.value=!0;try{const e=await B();D.value=e.map(se)}catch(e){de(e instanceof Error?e.message:"机构列表加载失败"),D.value=[]}finally{q.value=!1,K.value=!0}}()})),n((()=>{Ae(),$&&clearTimeout($)})),(e,a)=>{const l=R,s=Q,t=E,n=z,y=Z,b=j;return c(),i(t,{class:"page-root"},{default:o((()=>[P.value?(c(),i(Y,{key:0,onOpenSettings:ue,onGoHome:a[0]||(a[0]=e=>P.value=!1)})):u("",!0),H.value?d((c(),i(O,{key:1,onOpenProfile:a[1]||(a[1]=e=>P.value=!0)},null,512)),[[A,!P.value]]):u("",!0),H.value||P.value?u("",!0):(c(),i(t,{key:2,class:"auth-page"},{default:o((()=>[r(t,{class:"auth-container"},{default:o((()=>[r(t,{class:"header"},{default:o((()=>[r(l,{class:"logo",mode:"aspectFit",src:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEgAAABICAYAAAEi6oPRAAAKQ2lDQ1BJQ0MgcHJvZmlsZQAAeNqdU3dYk/cWP
|