| 1 |
- import{d as B,N as C,a as l,b as n,w as i,c as J,au as E,av as K,aw as P,ax as Y,ay as Z,az as j,aA as G,a4 as H,ai as X,J as h,a5 as x,a3 as ee,K as oe,a6 as ae,r as c,o as _,W as F,Z as D,Y as te,$ as V,ae as se,a1 as b,v as d,ab as Q}from"./vendor-Cv2dYodt.js";import{_ as ne}from"./index-DzEMp7Fy.js";const re=B({name:"login",components:{UserOutlined:E,LockOutlined:K,WechatOutlined:P,QqOutlined:Y,DingdingOutlined:Z,MobileOutlined:j,SafetyCertificateOutlined:G},setup(){const e=H(),a=X(),w=h(),S=h(!1),k=h(!1),m=h("account"),y=h(0),t=x({username:"",password:"",merchant_code:"",mobile:"",verification_code:""}),g={username:[{required:!0,message:"请输入账号"},{min:4,message:"账号长度不能小于4位"}],password:[{required:!0,message:"请输入密码"},{min:6,message:"密码长度不能小于6位"}],merchant_code:[{required:!0,message:"请输入商户编码"},{min:1,message:"商户编码长度不能小于1位"}],mobile:[{required:!0,message:"请输入手机号"},{pattern:/^1[3-9]\d{9}$/,message:"请输入正确的手机号"}],verification_code:[{required:!0,message:"请输入验证码"},{len:6,message:"验证码长度必须为6位"}]},$=async()=>{var o,s;try{await w.value.validateFields(["mobile"]);const r=await b.post("https://aiapi.raycos.com.cn/user/send_verification_code",{mobile:t.mobile,merchant_code:t.merchant_code});if(r.data.code===200){d.success("验证码发送成功"),y.value=60;const f=setInterval(()=>{y.value--,y.value<=0&&clearInterval(f)},1e3)}else d.error(r.data.message||"验证码发送失败")}catch(r){console.error("验证码发送失败:",r),d.error(((s=(o=r.response)==null?void 0:o.data)==null?void 0:s.message)||"验证码发送失败")}},A=async()=>{var o,s;try{S.value=!0,await w.value.validate();let r;if(m.value==="account"?r=await b.post("https://aiapi.raycos.com.cn/user/login",{username:t.username,password:t.password,merchant_code:t.merchant_code}):m.value==="mobile"?r=await b.post("https://aiapi.raycos.com.cn/user/mobile_login",{mobile:t.mobile,verification_code:t.verification_code,merchant_code:t.merchant_code}):r=await b.post("https://aiapi.raycos.com.cn/user/wechat_login",{wechat_state:t.wechat_state}),r.data.code===200){localStorage.setItem("token",r.data.data.token);try{const f=await b.get("https://aiapi.raycos.com.cn/user/info",{headers:{Authorization:`JWT ${r.data.data.token}`}});console.log(f),f.data.code===200?(e.commit("app/setUser",{user:f.data.data,permission:f.data.data||[]}),localStorage.setItem("userInfo",JSON.stringify(f.data.data)),localStorage.setItem("permissions",JSON.stringify(f.data.data||[]))):d.warning("获取用户信息失败")}catch(f){console.error("获取用户信息失败:",f),d.warning("获取用户信息失败,请重新登录");return}k.value?m.value==="account"?localStorage.setItem("rememberedAccount",JSON.stringify({username:t.username,merchant_code:t.merchant_code,loginType:"account"})):m.value==="mobile"&&localStorage.setItem("rememberedAccount",JSON.stringify({mobile:t.mobile,merchant_code:t.merchant_code,loginType:"mobile"})):localStorage.removeItem("rememberedAccount"),d.success("登录成功"),a.push("/")}else d.error(r.data.message||"登录失败")}catch(r){console.error("登录失败:",r),d.error(((s=(o=r.response)==null?void 0:o.data)==null?void 0:s.message)||"登录失败,请检查网络连接")}finally{S.value=!1}},T=(o=[])=>{const s={};return o.filter(r=>r.type==="btn").forEach(r=>{s[r.path]?s[r.path][r.key]=!0:s[r.path]={[r.key]:!0}}),s},M=()=>{const o=localStorage.getItem("rememberedAccount");if(o)try{const s=JSON.parse(o);k.value=!0,s.loginType==="account"?(m.value="account",t.username=s.username):s.loginType==="mobile"&&(m.value="mobile",t.mobile=s.mobile)}catch(s){console.error("解析记住的账号信息失败:",s),localStorage.removeItem("rememberedAccount")}},O=()=>{localStorage.removeItem("rememberedAccount"),k.value=!1,d.success("已清除记住的账号信息")};ee(k,o=>{o||O()}),oe(()=>{M()});const U=()=>{m.value="mobile",t.username="",t.password="";const o=localStorage.getItem("mobile");o&&(t.mobile=o),Q(()=>{var s;(s=w.value)==null||s.resetFields()}),d.info("已切换到手机号登录模式")},W=()=>{m.value="account",t.mobile="",t.verification_code="";const o=localStorage.getItem("mobile");o&&(t.mobile=o),Q(()=>{var s;(s=w.value)==null||s.resetFields()}),d.info("已切换到账号密码登录模式")},z=async()=>{m.value="wechat",t.username="",t.password="",t.mobile="",t.verification_code="",await L(),Q(()=>{var o;(o=w.value)==null||o.resetFields()}),d.info("已切换到微信扫码登录模式")},I=h(!1),q=h(""),v=h("");let p=null;const L=async()=>{try{const o=await b.get("https://aiapi.raycos.com.cn/api/user/wechat/qrcode");o.data.code===200?(q.value=o.data.data.qrcode_url,v.value=o.data.data.state,N()):d.error("获取微信二维码失败")}catch(o){console.error("获取微信二维码失败:",o),d.error("获取微信二维码失败,请稍后重试")}},N=()=>{p=setInterval(async()=>{try{const o=await b.get("https://aiapi.raycos.com.cn/api/user/wechat/check_login",{params:{state:v.value}});o.data.code===200&&(clearInterval(p),I.value=!1,localStorage.setItem("token",o.data.data.token),await R(o.data.data.token),d.success("微信登录成功"),a.push("/"))}catch(o){console.error("检查微信登录状态失败:",o)}},2e3)},u=()=>{I.value=!1,p&&(clearInterval(p),p=null)},R=async o=>{try{const s=await b.get("https://aiapi.raycos.com.cn/user/info",{headers:{Authorization:`JWT ${o}`}});s.data.code===200?e.commit("app/setUser",{user:s.data.data.userInfo,permission:s.data.data.permissions||[],auth:T(s.data.data.permissions)}):d.warning("获取用户信息失败")}catch(s){throw console.error("获取用户信息失败:",s),d.warning("获取用户信息失败,请重新登录"),s}};return ae(()=>{p&&(clearInterval(p),p=null)}),{loginForm:w,formData:t,rules:g,loading:S,rememberMe:k,loginType:m,countdown:y,handleLogin:A,sendVerificationCode:$,switchToMobileLogin:U,switchToAccountLogin:W,switchToWechatLogin:z,wechatLoginModal:I,wechatQrCode:q,getWechatQrCode:L,handleWechatLoginCancel:u,clearRememberedAccount:O}}}),ie={class:"login-page"},le={class:"login-container"},ce={class:"login-content"},de={class:"verification-code-input"},ue={key:2,class:"wechat-login-container"},me={key:0,class:"wechat-qrcode-wrapper"},pe=["src"],fe={key:1,class:"qrcode-loading"},ge={class:"form-options"},ve={class:"login-footer"},he={class:"other-login"},_e={class:"social-login"},be={class:"wechat-qrcode-container"},we=["src"];function ye(e,a,w,S,k,m){const y=c("UserOutlined"),t=c("a-input"),g=c("a-form-item"),$=c("LockOutlined"),A=c("a-input-password"),T=c("MobileOutlined"),M=c("SafetyCertificateOutlined"),O=c("a-button"),U=c("a-spin"),W=c("a-checkbox"),z=c("router-link"),I=c("a-form"),q=c("WechatOutlined"),v=c("a-tooltip"),p=c("QqOutlined"),L=c("DingdingOutlined"),N=c("a-modal");return _(),C("div",ie,[l("div",le,[l("div",ce,[a[13]||(a[13]=l("div",{class:"login-header"},[l("h2",null,"欢迎登录"),l("p",{class:"sub-title"},"请输入您的账号信息")],-1)),n(I,{ref:"loginForm",model:e.formData,rules:e.rules,layout:"vertical"},{default:i(()=>[e.loginType==="account"?(_(),C(F,{key:0},[n(g,{label:"账号",name:"username"},{default:i(()=>[n(t,{value:e.formData.username,"onUpdate:value":a[0]||(a[0]=u=>e.formData.username=u),placeholder:"请输入账号",size:"large"},{prefix:i(()=>[n(y,{style:{color:"rgba(0,0,0,.25)"}})]),_:1},8,["value"])]),_:1}),n(g,{label:"密码",name:"password"},{default:i(()=>[n(A,{value:e.formData.password,"onUpdate:value":a[1]||(a[1]=u=>e.formData.password=u),placeholder:"请输入密码",size:"large"},{prefix:i(()=>[n($,{style:{color:"rgba(0,0,0,.25)"}})]),_:1},8,["value"])]),_:1}),n(g,{label:"商户编码",name:"merchant_code"},{default:i(()=>[n(t,{value:e.formData.merchant_code,"onUpdate:value":a[2]||(a[2]=u=>e.formData.merchant_code=u),placeholder:"请输入商户编码",size:"large"},null,8,["value"])]),_:1})],64)):e.loginType==="mobile"?(_(),C(F,{key:1},[n(g,{label:"手机号",name:"mobile"},{default:i(()=>[n(t,{value:e.formData.mobile,"onUpdate:value":a[3]||(a[3]=u=>e.formData.mobile=u),placeholder:"请输入手机号",size:"large"},{prefix:i(()=>[n(T,{style:{color:"rgba(0,0,0,.25)"}})]),_:1},8,["value"])]),_:1}),n(g,{label:"验证码",name:"verification_code"},{default:i(()=>[l("div",de,[n(t,{value:e.formData.verification_code,"onUpdate:value":a[4]||(a[4]=u=>e.formData.verification_code=u),placeholder:"请输入验证码",size:"large"},{prefix:i(()=>[n(M,{style:{color:"rgba(0,0,0,.25)"}})]),_:1},8,["value"]),n(O,{disabled:!!e.countdown||!e.formData.mobile,onClick:e.sendVerificationCode,size:"large"},{default:i(()=>[D(te(e.countdown?`${e.countdown}秒后重试`:"获取验证码"),1)]),_:1},8,["disabled","onClick"])])]),_:1})],64)):V("",!0),e.loginType==="wechat"?(_(),C("div",ue,[e.wechatQrCode?(_(),C("div",me,[l("img",{src:e.wechatQrCode,alt:"微信登录二维码",class:"wechat-qrcode"},null,8,pe),a[7]||(a[7]=l("p",{class:"qrcode-tip"},"请使用微信扫描二维码登录",-1)),a[8]||(a[8]=l("p",{class:"qrcode-sub-tip"},"扫码后请在微信中确认登录",-1))])):(_(),C("div",fe,[n(U,{tip:"正在加载二维码..."})]))])):V("",!0),l("div",ge,[n(W,{checked:e.rememberMe,"onUpdate:checked":a[5]||(a[5]=u=>e.rememberMe=u)},{default:i(()=>a[9]||(a[9]=[D("记住账号")])),_:1},8,["checked"]),n(z,{to:"/forget-password",class:"forgot-password"},{default:i(()=>a[10]||(a[10]=[D("忘记密码?")])),_:1})]),n(g,null,{default:i(()=>[n(O,{type:"primary",loading:e.loading,size:"large",block:"",onClick:e.handleLogin},{default:i(()=>a[11]||(a[11]=[D(" 登录 ")])),_:1},8,["loading","onClick"])]),_:1})]),_:1},8,["model","rules"]),l("div",ve,[l("div",he,[a[12]||(a[12]=l("div",{class:"divider"},[l("span",null,"其他登录方式")],-1)),l("div",_e,[n(v,{title:"微信登录"},{default:i(()=>[n(q,{class:se(["social-icon",{active:e.loginType==="wechat"}]),onClick:e.switchToWechatLogin},null,8,["class","onClick"])]),_:1}),n(v,{title:"QQ登录"},{default:i(()=>[n(p,{class:"social-icon"})]),_:1}),n(v,{title:"钉钉登录"},{default:i(()=>[n(L,{class:"social-icon"})]),_:1}),e.loginType==="account"?(_(),J(v,{key:0,title:"手机号登录"},{default:i(()=>[n(T,{class:"social-icon",onClick:e.switchToMobileLogin},null,8,["onClick"])]),_:1})):(_(),J(v,{key:1,title:"账号密码登录"},{default:i(()=>[n(y,{class:"social-icon",onClick:e.switchToAccountLogin},null,8,["onClick"])]),_:1}))])])])])]),n(N,{visible:e.wechatLoginModal,"onUpdate:visible":a[6]||(a[6]=u=>e.wechatLoginModal=u),title:"微信扫码登录",footer:null,onCancel:e.handleWechatLoginCancel,width:"360px",centered:""},{default:i(()=>[l("div",be,[l("img",{src:e.wechatQrCode,alt:"微信登录二维码",class:"wechat-qrcode"},null,8,we),a[14]||(a[14]=l("p",{class:"qrcode-tip"},"请使用微信扫描二维码登录",-1))])]),_:1},8,["visible","onCancel"])])}const Oe=ne(re,[["render",ye],["__scopeId","data-v-55231996"]]);export{Oe as default};
|