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.

1 line
6.6 KiB

1 month ago
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-BXcJqdBr.js";import{t as D}from"./_plugin-vue_export-helper-CXTkFu_Z.js";import{n as O}from"./auth-Bu2D5GkR.js";import{o as k}from"./competitions-DCWXX_w5.js";import{t as A}from"./adminCompetition-Cq-OCRRq.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`},{dropd