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