|
|
import{C as e,D as t,Et as n,O as r,S as i,T as a,W as o,Y as s,Z as c,_ as l,_t as u,ct as d,h as f,ht as p,in as m,k as h,p as g,q as _,st as v,w as y,x as b}from"./vue.runtime.esm-bundler-CACvpnko.js";import{C as x,a as S,f as C,h as w,o as T,p as E}from"./index-D5exsJys.js";import{t as D}from"./_plugin-vue_export-helper-CXTkFu_Z.js";import{n as O}from"./auth-Dp3MNaAu.js";import{o as k}from"./competitions-Cv_Vb4Fy.js";import{t as A}from"./adminCompetition-D_kJwSx5.js";import{a as j}from"./site-BxiJvB6v.js";var M={key:0,class:`menu-section-label`},N=D(h({__name:`AdminMenuNest`,props:{nodes:{}},setup(n){return(o,u)=>{let d=c(`el-sub-menu`),f=c(`el-menu-item`);return _(!0),a(l,null,s(n.nodes,(n,o)=>(_(),a(l,{key:n.section||n.name||String(o)},[n.section&&!n.name?(_(),a(`div`,M,m(n.section),1)):n.children?.length&&n.name?(_(),e(d,{key:1,index:n.name},{title:v(()=>[i(`span`,null,m(n.title),1)]),default:v(()=>[r(N,{nodes:n.children},null,8,[`nodes`])]),_:2},1032,[`index`])):n.name?(_(),e(f,{key:2,index:n.name},{default:v(()=>[t(m(n.title),1)]),_:2},1032,[`index`])):y(``,!0)],64))),128)}}}),[[`__scopeId`,`data-v-346ecfd3`]]),ee=D(h({__name:`AdminMenuTree`,props:{nodes:{}},setup(t){let n=C(),i=E(),a=b(()=>n.name==null?``:String(n.name));function o(e){if(!i.hasRoute(e)){w.warning(`该菜单对应的前端页面尚未发布,请刷新或重新部署前端资源`);return}i.push({name:e}).catch(()=>{})}return(n,i)=>{let s=c(`el-menu`);return _(),e(s,{"default-active":a.value,class:`admin-side-menu`,onSelect:o},{default:v(()=>[r(N,{nodes:t.nodes},null,8,[`nodes`])]),_:1},8,[`default-active`])}}}),[[`__scopeId`,`data-v-982feb37`]]),P={class:`header-inner`},F={key:0,class:`muted`},I={class:`switcher-item`},L={class:`truncate`},R={class:`slug truncate`},z={type:`button`,class:`admin-user-trigger`,"aria-label":`账号菜单`},te={class:`admin-user-name`},B=D(h({__name:`AdminLayout`,setup(h){let b=E(),C=S(),D=T(),M=A(),{menus:N}=x(D),{competitions:B,selectedCompetitionId:V}=x(M),{displayName:H}=x(C),U=u(!1),W=u(!1),G=u(!1),K=u(),q=p({current_password:``,password:``,password_confirmation:``}),J={current_password:[{required:!0,message:`请输入当前密码`,trigger:`blur`}],password:[{required:!0,message:`请输入新密码`,trigger:`blur`},{min:6,max:255,message:`新密码长度为 6–255 个字符`,trigger:`blur`}],password_confirmation:[{required:!0,message:`请再次输入新密码`,trigger:`blur`},{validator:(e,t,n)=>{if(t!==q.password){n(Error(`两次输入的新密码不一致`));return}n()},trigger:`blur`}]};async function Y(){try{let e=await k({page:1,per_page:100});M.setCompetitionList(e.data)}catch(e){w.warning(e instanceof Error?e.message:`赛事列表加载失败,请检查网络与权限`)}}function X(){U.value=!U.value}function Z(e){M.selectCompetition(e)}function Q(){q.current_password=``,q.password=``,q.password_confirmation=``,K.value?.clearValidate()}function ne(){Q(),W.value=!0}function re(){C.logout(b),b.replace(`/admin/login`)}function ie(e){if(e===`password`){ne();return}e===`logout`&&re()}async function $(){let e=K.value;if(e&&await e.validate().catch(()=>!1)){G.value=!0;try{await O({current_password:q.current_password,password:q.password,password_confirmation:q.password_confirmation}),W.value=!1,w.success(`密码已更新`)}catch(e){w.error(e instanceof Error?e.message:`修改密码失败`)}finally{G.value=!1}}}return o(()=>{j(),Y()}),(o,u)=>{let p=c(`el-button`),h=c(`el-dropdown-item`),b=c(`el-dropdown-menu`),x=c(`el-dropdown`),S=c(`el-header`),C=c(`el-scrollbar`),w=c(`el-aside`),T=c(`router-view`),E=c(`el-main`),D=c(`el-container`),O=c(`el-input`),k=c(`el-form-item`),A=c(`el-form`),j=c(`el-dialog`);return _(),e(D,{class:`admin-shell`},{default:v(()=>[r(S,{class:`admin-header`,height:`56px`},{default:v(()=>[i(`div`,P,[r(p,{circle:``,plain:``,size:`small`,"aria-label":`收起或展开侧栏`,onClick:X},{default:v(()=>[t(m(U.value?`☰`:`⟨`),1)]),_:1}),u[10]||=i(`span`,{class:`admin-brand`},`管理后台`,-1),u[11]||=i(`div`,{class:`header-spacer`},null,-1),r(x,{trigger:`click`,placement:`bottom-end`},{dropdown:v(()=>[r(b,{style:{"min-width":`220px`}},{default:v(()=>[n(B).length?(_(!0),a(l,{key:1},s(n(B),t=>(_(),e(h,{key:t.id,onClick:e=>Z(t.id)},{default:v(()=>[i(`div`,I,[i(`span`,L,m(t.name),1),i(`span`,R,m(t.slug),1)])]),_:2},1032,[`onClick`]))),128)):(_(),e(h,{key:0,disabled:``},{default:v(()=>[...u[6]||=[t(`暂无赛事,请先在「赛事列表」创建`,-1)]]),_:1}))]),_:1})]),default:v(()=>[r(p,{type:`danger`,plain:``,size:`small`},{default:v(()=>[u[5]||=t(` 赛事切换 `,-1),n(V)?(_(),a(`span`,F,`(#`+m(n(V))+`)`,1)):y(``,!0)]),_:1})]),_:1}),r(x,{trigger:`click`,placement:`bottom-end`,onCommand:ie},{dropdown:v(()=>[r(b,null,{default:v(()=>[r(h,{command:`password`},{default:v(()=>[...u[8]||=[t(`修改密码`,-1)]]),_:1}),r(h,{divided:``,command:`logout`},{default:v(()=>[...u[9]||=[t(`退出`,-1)]]),_:1})]),_:1})]),default:v(()=>[i(`button`,z,[i(`span`,te,m(n(H)),1),u[7]||=i(`span`,{class:`admin-user-caret`,"aria-hidden":`true`},`▾`,-1)])]),_:1})])]),_:1}),r(D,{class:`admin-body`},{default:v(()=>[r(w,{class:`admin-aside`,width:U.value?`0px`:`230px`},{default:v(()=>[d(r(C,{class:`aside-scroll`},{default:v(()=>[u[12]||=i(`div`,{class:`aside-title`},`导航`,-1),r(ee,{nodes:n(N)},null,8,[`nodes`])]),_:1},512),[[g,!U.value]])]),_:1},8,[`width`]),r(E,{class:`admin-main`},{default:v(()=>[r(T)]),_:1})]),_:1}),r(j,{modelValue:W.value,"onUpdate:modelValue":u[4]||=e=>W.value=e,title:`修改密码`,width:`min(420px, 92vw)`,"destroy-on-close":``,onClosed:Q},{footer:v(()=>[r(p,{onClick:u[3]||=e=>W.value=!1},{default:v(()=>[...u[13]||=[t(`取消`,-1)]]),_:1}),r(p,{type:`primary`,loading:G.value,onClick:$},{default:v(()=>[...u[14]||=[t(` 保存 `,-1)]]),_:1},8,[`loading`])]),default:v(()=>[r(A,{ref_key:`passwordFormRef`,ref:K,model:q,rules:J,"label-position":`top`,onSubmit:f($,[`prevent`])},{default:v(()=>[r(k,{label:`当前密码`,prop:`current_password`},{default:v(()=>[r(O,{modelValue:q.current_password,"onUpdate:modelValue":u[0]||=e=>q.current_password=e,type:`password`,"show-password":``,autocomplete:`current-password`},null,8,[`modelValue`])]),_:1}),r(k,{label:`新密码`,prop:`password`},{default:v(()=>[r(O,{modelValue:q.password,"onUpdate:modelValue":u[1]||=e=>q.password=e,type:`password`,"show-password":``,autocomplete:`new-password`},null,8,[`modelValue`])]),_:1}),r(k,{label:`确认新密码`,prop:`password_confirmation`},{default:v(()=>[r(O,{modelValue:q.password_confirmation,"onUpdate:modelValue":u[2]||=e=>q.password_confirmation=e,type:`password`,"show-password":``,autocomplete:`new-password`},null,8,[`modelValue`])]),_:1})]),_:1},8,[`model`])]),_:1},8,[`modelValue`])]),_:1})}}}),[[`__scopeId`,`data-v-455075a1`]]);export{B as default}; |