2 lines
13 KiB
JavaScript
2 lines
13 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 u,g as o,h as d,v as A,i as r,j as m,n as v,t as f,k as p,l as g,m as I,F as h,s as y,p as b,q as C,u as k,x as R,y as Q,I as E,z,S as Z,A as V}from"./index-CpNRQgjE.js";import{C as G,f as w,s as B,A as N,l as j}from"./config.CeLegioC.js";import Y from"./pages-profile-profile.B4yr9-t8.js";import{_ as D}from"./_plugin-vue_export-helper.BCo6x5W8.js";import"./config-doctor.TgARj_nM.js";import"./navigation.CsipbD6y.js";const O=D(e({__name:"index",setup(e){const D=a([]),O=l({phone:"",code:"",institutionId:""}),J=a(""),F=a(!1),L=a(!1),S=a(!1),T=a(!1),U=a(0),W=a(""),x=a(!1),M=a(!1),H=a(!1),P=a(!1),X=a(!1),q=a(!1);let K=null,_=null;const $=s((()=>D.value.find((e=>e.id===O.institutionId)))),ee=s((()=>U.value>0)),ae=s((()=>S.value?"发送中...":ee.value?`${U.value}s`:"获取验证码"));function le(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 se(){F.value=!F.value}async function te(){if(!S.value&&!ee.value&&ce()){S.value=!0;try{let a;try{a=await B(O.phone)}catch(e){if(!(e instanceof N&&"AUTH_PHONE_NOT_FOUND"===e.code))throw e;a=await B(O.phone,"register")}oe(a.message||"验证码已发送"),U.value=60,de(),K=setInterval((()=>{U.value-=1,U.value<=0&&de()}),1e3)}catch(e){oe(e instanceof Error?e.message:"验证码发送失败")}finally{S.value=!1}}}function ne(){if(!T.value&&ce())if(O.code.trim())if($.value){if(!F.value)return oe("请阅读并勾选用户协议"),L.value=!1,void C((()=>{L.value=!0,setTimeout((()=>{L.value=!1}),500)}));T.value=!0,j({phone:O.phone,code:O.code,institution_code:$.value.code,institution_name:$.value.name}).then((e=>{var a,l,s;const t=e.user||{},n={...t,id:t.id?String(t.id):"",phone:t.phone||O.phone,institutionId:(null==(a=$.value)?void 0:a.code)||"",institutionCode:(null==(l=$.value)?void 0:l.code)||"",institutionName:(null==(s=$.value)?void 0:s.name)||""};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),oe(e.message||"正在进入系统..."),b({url:"/pages/config/config"})})).catch((e=>{oe(e instanceof Error?e.message:"登录失败,请稍后重试")})).finally((()=>{T.value=!1}))}else oe("请选择所属机构");else oe("请输入短信验证码")}function ce(){return!!/^1[3-9]\d{9}$/.test(O.phone)||(oe("请输入正确的手机号"),!1)}function ie(e){V({title:"service"===e?"用户服务协议":"隐私保护政策",content:"这里是前端模拟协议内容,后续可替换为正式协议页面或富文本接口。",showCancel:!1,confirmColor:"#00478d"})}function ue(){H.value=!1,M.value=!0}function oe(e){_&&clearTimeout(_),W.value=e,x.value=!0,_=setTimeout((()=>{x.value=!1}),2500)}function de(){K&&(clearInterval(K),K=null)}return t((()=>{!async function(){X.value=!0;try{const e=await w();D.value=e.map(le)}catch(e){oe(e instanceof Error?e.message:"机构列表加载失败"),D.value=[]}finally{X.value=!1,q.value=!0}}()})),n((()=>{de(),_&&clearTimeout(_)})),(e,a)=>{const l=k,s=R,t=Q,n=E,y=z,b=Z;return c(),i(t,{class:"page-root"},{default:u((()=>[H.value?(c(),i(Y,{key:0,onOpenSettings:ue,onGoHome:a[0]||(a[0]=e=>H.value=!1)})):o("",!0),M.value?d((c(),i(G,{key:1,onOpenProfile:a[1]||(a[1]=e=>H.value=!0)},null,512)),[[A,!H.value]]):o("",!0),M.value||H.value?o("",!0):(c(),i(t,{key:2,class:"auth-page"},{default:u((()=>[r(t,{class:"auth-container"},{default:u((()=>[r(t,{class:"header"},{default:u((()=>[r(l,{class:"logo",mode:"aspectFit",src:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEgAAABICAYAAAEi6oPRAAAKQ2lDQ1BJQ0MgcHJvZmlsZQAAeNqdU3dYk/cWPt/3ZQ9WQtjwsZdsgQAiI6wIyBBZohCSAGGEEBJAxYWIClYUFRGcSFXEgtUKSJ2I4qAouGdBiohai1VcOO4f3Ke1fXrv7e371/u855zn/M55zw+AERImkeaiagA5UoU8Otgfj09IxMm9gAIVSOAEIBDmy8JnBcUAAPADeXh+dLA//AGvbwACAHDVLiQSx+H/g7pQJlcAIJEA4CIS5wsBkFIAyC5UyBQAyBgAsFOzZAoAlAAAbHl8QiIAqg0A7PRJPgUA2KmT3BcA2KIcqQgAjQEAmShHJAJAuwBgVYFSLALAwgCgrEAiLgTArgGAWbYyRwKAvQUAdo5YkA9AYACAmUIszAAgOAIAQx4TzQMgTAOgMNK/4KlfcIW4SAEAwMuVzZdL0jMUuJXQGnfy8ODiIeLCbLFCYRcpEGYJ5CKcl5sjE0jnA0zODAAAGvnRwf44P5Dn5uTh5mbnbO/0xaL+a/BvIj4h8d/+vIwCBAAQTs/v2l/l5dYDcMcBsHW/a6lbANpWAGjf+V0z2wmgWgrQevmLeTj8QB6eoVDIPB0cCgsL7SViob0w44s+/zPhb+CLfvb8QB7+23rwAHGaQJmtwKOD/XFhbnauUo7nywRCMW735yP+x4V//Y4p0eI0sVwsFYrxWIm4UCJNx3m5UpFEIcmV4hLpfzLxH5b9CZN3DQCshk/ATrYHtctswH7uAQKLDljSdgBAfvMtjBoLkQAQZzQyefcAAJO/+Y9AKwEAzZek4wAAvOgYXKiUF0zGCAAARKCBKrBBBwzBFKzADpzBHbzAFwJhBkRADCTAPBBCBuSAHAqhGJZBGVTAOtgEtbADGqARmuEQtMExOA3n4BJcgetwFwZgGJ7CGLyGCQRByAgTYSE6iBFijtgizggXmY4EImFINJKApCDpiBRRIsXIcqQCqUJqkV1II/ItchQ5jVxA+pDbyCAyivyKvEcxlIGyUQPUAnVAuagfGorGoHPRdDQPXYCWomvRGrQePYC2oqfRS+h1dAB9io5jgNExDmaM2WFcjIdFYIlYGibHFmPlWDVWjzVjHVg3dhUbwJ5h7wgkAouAE+wIXoQQwmyCkJBHWExYQ6gl7CO0EroIVwmDhDHCJyKTqE+0JXoS+cR4YjqxkFhGrCbuIR4hniVeJw4TX5NIJA7JkuROCiElkDJJC0lrSNtILaRTpD7SEGmcTCbrkG3J3uQIsoCsIJeRt5APkE+S+8nD5LcUOsWI4kwJoiRSpJQSSjVlP+UEpZ8yQpmgqlHNqZ7UCKqIOp9aSW2gdlAvU4epEzR1miXNmxZDy6Qto9XQmmlnafdoL+l0ugndgx5Fl9CX0mvoB+nn6YP0dwwNhg2Dx0hiKBlrGXsZpxi3GS+ZTKYF05eZyFQw1zIbmWeYD5hvVVgq9ip8FZHKEpU6lVaVfpXnqlRVc1U/1XmqC1SrVQ+rXlZ9pkZVs1DjqQnUFqvVqR1Vu6k2rs5Sd1KPUM9RX6O+X/2C+mMNsoaFRqCGSKNUY7fGGY0hFsYyZfFYQtZyVgPrLGuYTWJbsvnsTHYF+xt2L3tMU0NzqmasZpFmneZxzQEOxrHg8DnZnErOIc4NznstAy0/LbHWaq1mrX6tN9p62r7aYu1y7Rbt69rvdXCdQJ0snfU6bTr3dQm6NrpRuoW623XP6j7TY+t56Qn1yvUO6d3RR/Vt9KP1F+rv1u/RHzcwNAg2kBlsMThj8MyQY+hrmGm40fCE4agRy2i6kcRoo9FJoye4Ju6HZ+M1eBc+ZqxvHGKsNN5l3Gs8YWJpMtukxKTF5L4pzZRrmma60bTTdMzMyCzcrNisyeyOOdWca55hvtm82/yNhaVFnMVKizaLx5balnzLBZZNlvesmFY+VnlW9VbXrEnWXOss623WV2xQG1ebDJs6m8u2qK2brcR2m23fFOIUjynSKfVTbtox7PzsCuya7AbtOfZh9iX2bfbPHcwcEh3WO3Q7fHJ0dcx2bHC866ThNMOpxKnD6VdnG2ehc53zNRemS5DLEpd2lxdTbaeKp26fesuV5RruutK10/Wjm7ub3K3ZbdTdzD3Ffav7TS6bG8ldwz3vQfTw91jicczjnaebp8LzkOcvXnZeWV77vR5Ps5wmntYwbcjbxFvgvct7YDo+PWX6zukDPsY+Ap96n4e+pr4i3z2+I37Wfpl+B/ye+zv6y/2P+L/hefIW8U4FYAHBAeUBvYEagbMDawMfBJkEpQc1BY0FuwYvDD4VQgwJDVkfcpNvwBfyG/ljM9xnLJrRFcoInRVaG/owzCZMHtYRjobPCN8Qfm+m+UzpzLYIiOBHbIi4H2kZmRf5fRQpKjKqLupRtFN0cXT3LNas5Fn7Z72O8Y+pjLk722q2cnZnrGpsUmxj7Ju4gLiquIF4h/hF8ZcSdBMkCe2J5MTYxD2J43MC52yaM5zkmlSWdGOu5dyiuRfm6c7Lnnc8WTVZkHw4hZgSl7I/5YMgQlAvGE/lp25NHRPyhJuFT0W+oo2iUbG3uEo8kuadVpX2ON07fUP6aIZPRnXGMwlPUit5kRmSuSPzTVZE1t6sz9lx2S05lJyUnKNSDWmWtCvXMLcot09mKyuTDeR55m3KG5OHyvfkI/lz89sVbIVM0aO0Uq5QDhZML6greFsYW3i4SL1IWtQz32b+6vkjC4IWfL2QsFC4sLPYuHhZ8eAiv0W7FiOLUxd3LjFdUrpkeGnw0n3LaMuylv1Q4lhSVfJqedzyjlKD0qWlQyuCVzSVqZTJy26u9Fq5YxVhlWRV72qX1VtWfyoXlV+scKyorviwRrjm4ldOX9V89Xlt2treSrfK7etI66Trbqz3Wb+vSr1qQdXQhvANrRvxjeUbX21K3nShemr1js20zcrNAzVhNe1bzLas2/KhNqP2ep1/XctW/a2rt77ZJtrWv913e/MOgx0VO97vlOy8tSt4V2u9RX31btLugt2PGmIbur/mft24R3dPxZ6Pe6V7B/ZF7+tqdG9s3K+/v7IJbVI2jR5IOnDlm4Bv2pvtmne1cFoqDsJB5cEn36Z8e+NQ6KHOw9zDzd+Zf7f1COtIeSvSOr91rC2jbaA9ob3v6IyjnR1eHUe+t/9+7zHjY3XHNY9XnqCdKD3x+eSCk+OnZKeenU4/PdSZ3Hn3TPyZa11RXb1nQ8+ePxd07ky3X/fJ897nj13wvHD0Ivdi2yW3S609rj1HfnD94UivW2/rZffL7Vc8rnT0Tes70e/Tf/pqwNVz1/jXLl2feb3vxuwbt24m3Ry4Jbr1+Hb27Rd3Cu5M3F16j3iv/L7a/eoH+g/qf7T+sWXAbeD4YMBgz8NZD+8OCYee/pT/04fh0kfMR9UjRiONj50fHxsNGr3yZM6T4aeypxPPyn5W/3nrc6vn3/3i+0vPWPzY8Av5i8+/rnmp83Lvq6mvOscjxx+8znk98ab8rc7bfe+477rfx70fmSj8QP5Q89H6Y8en0E/3Pud8/vwv94Tz+4A5JREAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAADKmlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxMzIgNzkuMTU5Mjg0LCAyMDE2LzA0LzE5LTEzOjEzOjQwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpGRkE0MjcxNTdEQzYxMUU4QkZBOERDOEVCQ0U0NTBGMSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpGRkE0MjcxNDdEQzYxMUU4QkZBOERDOEVCQ0U0NTBGMSIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxNS41IChNYWNpbnRvc2gpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6QkE4RkFCN0M3REM1MTFFOEJGQThEQzhFQkNFNDUwRjEiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6QkE4RkFCN0Q3REM1MTFFOEJGQThEQzhFQkNFNDUwRjEiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz5BZZ+3AAAB1ElEQVR42mJkAALtmZb/GfAAJkIKwIoYiAA4FV1JO0Ylk0hWxILLHTgV6cyywqoIIIAYiQinb8S4iYs036E7esgEJq6ABAGAACImMBmo5m6yDcLlR5gcNnnaumhADWIhJoOTbRC+9ILPa9+o4TWAAAIlyDVAOphCc1SYqGAICNwZxumIidi8NILz2qhBdCyPaOcicgq1wRnYAAFErRKSgZo+GzSOoWpQD1sHsRCjCDnzkpp90DM+If2jUTbqoFEHjZZDpJYroyFESeNmNFHTykEqg8g9bwACCNRiVAYyLgEx1wA7Zu3V9OMhVBt1opajBlsaCh7NZaMOGnXQgFeupHZjKO1CjUbZqINGHTTqoFEHjTpo1EGjDhqMgw342kejUTaahggpoOdg1WiUjTpoODoIvL7tzSBykB5AgPbtGIdBGIYCaBR16swROEQvzT06cxjm1lRFDC0LcpXC+xJzpIdJhOW8e4z359MVWSde1C32xRYasC0mCmascDZzrQz+7NgABAgQINnRY/iUrb5D9v9l9toqCBAgQIAAAQIESAABAgQIEKCD5ZK9QPaMigoCdIJP7NdjOyoIECBAgGQBGjB8zVDjam153T0OqInJbBAWfdg8AExKZVcA71uIAAAAAElFTkSuQmCC"}),r(s,{class:"title"},{default:u((()=>[m("临床思维训练")])),_:1}),r(s,{class:"subtitle"},{default:u((()=>[m("提升临床决策能力的高效平台")])),_:1})])),_:1}),r(t,{class:"form"},{default:u((()=>[r(t,{class:"form-group"},{default:u((()=>[r(s,{class:"label"},{default:u((()=>[m("手机号码")])),_:1}),r(t,{class:v(["input-wrap",{focused:"phone"===J.value}])},{default:u((()=>[r(s,{class:"country-code"},{default:u((()=>[m("+86")])),_:1}),r(t,{class:"separator"}),r(n,{class:"input",type:"number",maxlength:"11",modelValue:O.phone,"onUpdate:modelValue":a[2]||(a[2]=e=>O.phone=e),placeholder:"请输入手机号","placeholder-class":"placeholder",onFocus:a[3]||(a[3]=e=>J.value="phone"),onBlur:a[4]||(a[4]=e=>J.value=""),onConfirm:ne},null,8,["modelValue"])])),_:1},8,["class"])])),_:1}),r(t,{class:"form-group"},{default:u((()=>[r(s,{class:"label"},{default:u((()=>[m("验证码")])),_:1}),r(t,{class:"code-row"},{default:u((()=>[r(t,{class:v(["input-wrap code-input-wrap",{focused:"code"===J.value}])},{default:u((()=>[r(t,{class:"verified-icon","aria-hidden":"true"}),r(n,{class:"input",type:"number",maxlength:"6",modelValue:O.code,"onUpdate:modelValue":a[5]||(a[5]=e=>O.code=e),placeholder:"短信验证码","placeholder-class":"placeholder",onFocus:a[6]||(a[6]=e=>J.value="code"),onBlur:a[7]||(a[7]=e=>J.value=""),onConfirm:ne},null,8,["modelValue"])])),_:1},8,["class"]),r(y,{class:v(["code-button",{disabled:ee.value||S.value}]),disabled:ee.value||S.value,onClick:te},{default:u((()=>[m(f(ae.value),1)])),_:1},8,["class","disabled"])])),_:1})])),_:1}),r(t,{class:"form-group"},{default:u((()=>[r(s,{class:"label"},{default:u((()=>[m("所属机构")])),_:1}),r(t,{class:"select-wrap",onClick:a[8]||(a[8]=e=>P.value=!0)},{default:u((()=>[r(s,{class:v(["select-text",{muted:!$.value}])},{default:u((()=>[m(f($.value?$.value.name:"选择医院或医学院校"),1)])),_:1},8,["class"]),r(t,{class:"select-arrow","aria-hidden":"true"})])),_:1})])),_:1}),r(s,{class:"hint"},{default:u((()=>[m("* 未注册手机号登录时将自动创建账号")])),_:1}),r(t,{class:"login-area"},{default:u((()=>[r(y,{class:v(["login-button",{loading:T.value}]),disabled:T.value,onClick:ne},{default:u((()=>[T.value?(c(),i(t,{key:0,class:"loading-spinner"})):(c(),i(s,{key:1},{default:u((()=>[m("登录 / 注册")])),_:1}))])),_:1},8,["class","disabled"])])),_:1})])),_:1}),r(t,{class:"footer"},{default:u((()=>[r(t,{class:v(["agreement",{shake:L.value}]),onClick:se},{default:u((()=>[r(t,{class:v(["checkbox",{checked:F.value}])},null,8,["class"]),r(t,{class:"agreement-copy"},{default:u((()=>[r(s,{class:"agreement-text"},{default:u((()=>[m("我已阅读并同意 ")])),_:1}),r(s,{class:"agreement-link",onClick:a[9]||(a[9]=p((e=>ie("service")),["stop"]))},{default:u((()=>[m("《用户服务协议》")])),_:1}),r(s,{class:"agreement-text"},{default:u((()=>[m(" 与 ")])),_:1}),r(s,{class:"agreement-link",onClick:a[10]||(a[10]=p((e=>ie("privacy")),["stop"]))},{default:u((()=>[m("《隐私保护政策》")])),_:1})])),_:1})])),_:1},8,["class"])])),_:1})])),_:1}),r(t,{class:v(["toast",{visible:x.value}])},{default:u((()=>[m(f(W.value),1)])),_:1},8,["class"]),P.value?(c(),i(t,{key:0,class:"picker-mask",onClick:a[13]||(a[13]=e=>P.value=!1)},{default:u((()=>[r(t,{class:"picker-panel",onClick:a[12]||(a[12]=p((()=>{}),["stop"]))},{default:u((()=>[r(t,{class:"picker-header"},{default:u((()=>[r(s,{class:"picker-title"},{default:u((()=>[m("选择所属机构")])),_:1}),r(s,{class:"picker-close",onClick:a[11]||(a[11]=e=>P.value=!1)},{default:u((()=>[m("关闭")])),_:1})])),_:1}),r(b,{class:"institution-list","scroll-y":""},{default:u((()=>[X.value?(c(),i(t,{key:0,class:"institution-empty"},{default:u((()=>[m("机构列表加载中...")])),_:1})):0===D.value.length?(c(),i(t,{key:1,class:"institution-empty"},{default:u((()=>[m("暂无可选机构")])),_:1})):(c(!0),g(h,{key:2},I(D.value,(e=>(c(),i(t,{key:e.id,class:v(["institution-item",{active:O.institutionId===e.id}]),onClick:a=>function(e){O.institutionId=e.id,P.value=!1}(e)},{default:u((()=>[r(t,{class:"institution-copy"},{default:u((()=>[r(s,{class:"institution-name"},{default:u((()=>[m(f(e.name),1)])),_:2},1024),r(s,{class:"institution-meta"},{default:u((()=>[m(f(e.city)+" · "+f(e.typeName),1)])),_:2},1024)])),_:2},1024),O.institutionId===e.id?(c(),i(t,{key:0,class:"selected-mark"})):o("",!0)])),_:2},1032,["class","onClick"])))),128))])),_:1})])),_:1})])),_:1})):o("",!0)])),_:1}))])),_:1})}}}),[["__scopeId","data-v-fbf7d73c"]]);export{O as default};
|