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

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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-CpTiFmNV.js";import{t as D}from"./_plugin-vue_export-helper-CXTkFu_Z.js";import{n as O}from"./auth-Caz6fjbW.js";import{a as k}from"./competitions-B2lNEUkv.js";import{t as A}from"./adminCompetition-BXo69CdG.js";import{i as j}from"./site-j0hHE9UV.js";var M={key:0,class:`menu-section-label`},N=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`,M,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(N,{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`]]),P=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(N,{nodes:e.nodes},null,8,[`nodes`])]),_:1},8,[`default-active`])}}}),[[`__scopeId`,`data-v-982feb37`]]),F={class:`header-inner`},I={key:0,class:`muted`},L={class:`switcher-item`},R={class:`truncate`},z={class:`slug truncate`},B={type:`button`,class:`admin-user-trigger`,"aria-label":`账号菜单`},V={class:`admin-user-name`},H=D(h({__name:`AdminLayout`,setup(l){let h=E(),C=w(),D=T(),M=A(),{menus:N}=x(D),{competitions:H,selectedCompetitionId:U}=x(M),{displayName:W}=x(C),G=c(!1),K=c(!1),q=c(!1),J=c(),Y=p({current_password:``,password:``,password_confirmation:``}),X={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!==Y.password){n(Error(`两次输入的新密码不一致`));return}n()},trigger:`blur`}]};async function Z(){try{let e=await k({page:1,per_page:100});M.setCompetitionList(e.data)}catch(e){S.warning(e instanceof Error?e.message:`赛事列表加载失败,请检查网络与权限`)}}function ee(){G.value=!G.value}function te(e){M.selectCompetition(e)}function Q(){Y.current_password=``,Y.password=``,Y.password_confirmation=``,J.value?.clearValidate()}function ne(){Q(),K.value=!0}function re(){C.logout(h),h.replace(`/admin/login`)}function ie(e){if(e===`password`){ne();return}e===`logout`&&re()}async function $(){let e=J.value;if(e&&await e.validate().catch(()=>!1)){q.value=!0;try{await O({current_password:Y.current_password,password:Y.password,password_confirmation:Y.password_confirmation}),K.value=!1,S.success(`密码已更新`)}catch(e){S.error(e instanceof Error?e.message:`修改密码失败`)}finally{q.value=!1}}}return a(()=>{j(),Z()}),(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`,F,[r(l,{circle:``,plain:``,size:`small`,"aria-label":`收起或展开侧栏`,onClick:ee},{default:v(()=>[t(m(G.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(H).length?(_(!0),y(f,{key:1},o(n(H),e=>(_(),i(p,{key:e.id,onClick:t=>te(e.id)},{default:v(()=>[b(`div`,L,[b(`span`,R,m(e.name),1),b(`span`,z,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(U)?(_(),y(`span`,I,`(#`+m(n(U))+`)`,1)):e(``,!0)]),_:1})]),_:1}),r(x,{trigger:`click`,placement:`bottom-end`,onCommand:ie},{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`,B,[b(`span`,V,m(n(W)),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:G.value?`0px`:`230px`},{default:v(()=>[u(r(C,{class:`aside-scroll`},{default:v(()=>[c[12]||=b(`div`,{class:`aside-title`},`导航`,-1),r(P,{nodes:n(N)},null,8,[`nodes`])]),_:1},512),[[d,!G.value]])]),_:1},8,[`width`]),r(E,{class:`admin-main`},{default:v(()=>[r(T)]),_:1})]),_:1}),r(j,{modelValue:K.value,"onUpdate:modelValue":c[4]||=e=>K.value=e,title:`修改密码`,width:`min(420px, 92vw)`,"destroy-on-close":``,onClosed:Q},{footer:v(()=>[r(l,{onClick:c[3]||=e=>K.value=!1},{default:v(()=>[...c[13]||=[t(`取消`,-1)]]),_:1}),r(l,{type:`primary`,loading:q.value,onClick:$},{default:v(()=>[...c[14]||=[t(` 保存 `,-1)]]),_:1},8,[`loading`])]),default:v(()=>[r(A,{ref_key:`passwordFormRef`,ref:J,model:Y,rules:X,"label-position":`top`,onSubmit:g($,[`prevent`])},{default:v(()=>[r(k,{label:`当前密码`,prop:`current_password`},{default:v(()=>[r(O,{modelValue:Y.current_password,"onUpdate:modelValue":c[0]||=e=>Y.current_password=e,type:`password`,"show-password":``,autocomplete:`current-password`},null,8,[`modelValue`])]),_:1}),r(k,{label:`新密码`,prop:`password`},{default:v(()=>[r(O,{modelValue:Y.password,"onUpdate:modelValue":c[1]||=e=>Y.password=e,type:`password`,"show-password":``,autocomplete:`new-password`},null,8,[`modelValue`])]),_:1}),r(k,{label:`确认新密码`,prop:`password_confirmation`},{default:v(()=>[r(O,{modelValue:Y.password_confirmation,"onUpdate:modelValue":c[2]||=e=>Y.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{H as default};