You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
2 lines
2.9 KiB
2 lines
2.9 KiB
import{D as e,O as t,Z as n,_t as r,in as i,k as a,m as o,q as s,st as c,w as l,x as u}from"./vue.runtime.esm-bundler-6_koQ1g6.js";import{u as d}from"./api-CH6mod_b.js";import{C as f,E as p,i as m,r as h,t as g,w as _}from"./index-D8PaKRyd.js";import{t as v}from"./_plugin-vue_export-helper-S3RvzygF.js";async function y(e){if(d()){if(!e.username.trim()||!e.password.trim())throw Error(`请输入账号和密码`);return{token:`mock_admin_${Date.now()}`,user:{id:1,name:`Mock 管理员`,username:e.username.trim()}}}try{let{data:t}=await h.post(`/auth/login`,e);return b(t)}catch(e){if(m.isAxiosError(e)){let t=e.response?.data,n=t&&typeof t==`object`?t:{},r=(typeof n.message==`string`?n.message:``)||(n.errors&&typeof n.errors==`object`?Object.values(n.errors).flat().join(`
|
|
`):``)||e.message;throw Error(r||`登录失败`)}throw e}}function b(e){if(e&&typeof e==`object`){let t=e,n=t.data,r=(typeof t.token==`string`?t.token:void 0)??(typeof t.access_token==`string`?t.access_token:void 0)??(n&&typeof n.token==`string`?n.token:void 0);if(typeof r==`string`)return{token:r,user:t.user??t.admin??n?.user}}throw Error(`登录响应无效`)}var x={class:`login-wrap`},S=v(a({__name:`AdminLoginView`,setup(a){let d=f(),m=_(),h=g(),v=r(``),b=r(``),S=r(!1);async function C(){if(!v.value.trim()||!b.value.trim()){p.warning(`请输入账号和密码`);return}S.value=!0;try{let e=await y({username:v.value.trim(),password:b.value.trim()});h.setToken(e.token);let t=typeof d.query.redirect==`string`?d.query.redirect:``;t&&t.startsWith(`/admin`)?await m.replace(t):await m.replace({name:`admin-competitions-list`}),p.success(`登录成功`)}catch(e){p.error(e instanceof Error?e.message:`登录失败`)}finally{S.value=!1}}return(r,a)=>{let d=n(`el-input`),f=n(`el-form-item`),p=n(`el-button`),m=n(`el-form`),h=n(`el-card`);return s(),l(`div`,x,[t(h,{class:`login-card`,shadow:`hover`},{header:c(()=>[...a[2]||=[u(`div`,{class:`card-title`},`管理员登录`,-1)]]),default:c(()=>[t(m,{"label-position":`top`,onSubmit:o(C,[`prevent`])},{default:c(()=>[t(f,{label:`账号`},{default:c(()=>[t(d,{modelValue:v.value,"onUpdate:modelValue":a[0]||=e=>v.value=e,modelModifiers:{trim:!0},autocomplete:`username`,clearable:``},null,8,[`modelValue`])]),_:1}),t(f,{label:`密码`},{default:c(()=>[t(d,{modelValue:b.value,"onUpdate:modelValue":a[1]||=e=>b.value=e,type:`password`,autocomplete:`current-password`,"show-password":``},null,8,[`modelValue`])]),_:1}),t(p,{type:`danger`,class:`w-100`,"native-type":`submit`,loading:S.value},{default:c(()=>[e(i(S.value?`登录中…`:`登录`),1)]),_:1},8,[`loading`])]),_:1}),a[3]||=u(`p`,{class:`hint`},[e(` 连接真实后端时请将 `),u(`code`,null,`VITE_ADMIN_USE_MOCK`),e(` 设为 `),u(`code`,null,`false`),e(` 并重启前端;默认管理员账号由 Laravel `),u(`code`,null,`php artisan db:seed --class=AdminUserSeeder`),e(` 写入。 `)],-1)]),_:1})])}}}),[[`__scopeId`,`data-v-1132d8e3`]]);export{S as default}; |