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