|
|
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 ee,vt as _,w as v,x as y}from"./vue.runtime.esm-bundler-Dt_AyShc.js";import{a as b,f as x,g as S,o as C,p as w,w as T}from"./index-DZf__Hx9.js";import{t as E}from"./_plugin-vue_export-helper-CXTkFu_Z.js";import{n as D}from"./auth-B2yMndMv.js";import{o as O}from"./competitions-BN_ZQA17.js";import{t as k}from"./adminCompetition-y2TuqwaJ.js";import{a as A}from"./site-DFdehYNY.js";var j={key:0,class:`menu-section-label`},M=E(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`,j,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(M,{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`])):v(``,!0)],64))),128)}}}),[[`__scopeId`,`data-v-346ecfd3`]]),N=E(e({__name:`AdminMenuTree`,props:{nodes:{}},setup(e){let n=x(),r=w(),a=y(()=>n.name==null?``:String(n.name));function s(e){if(!r.hasRoute(e)){S.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(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":`账号菜单`},B={class:`admin-user-name`},V=E(e({__name:`AdminLayout`,setup(e){let y=w(),x=b(),E=C(),j=k(),{menus:M}=T(E),{competitions:V,selectedCompetitionId:H}=T(j),{displayName:U}=T(x),W=_(!1),G=_(!1),K=_(!1),q=_(),J=p({current_password:``,password:``,password_confirmation:``}),Y={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!==J.password){n(Error(`两次输入的新密码不一致`));return}n()},trigger:`blur`}]};async function X(){try{let e=await O({page:1,per_page:100});j.setCompetitionList(e.data)}catch(e){S.warning(e instanceof Error?e.message:`赛事列表加载失败,请检查网络与权限`)}}function Z(){W.value=!W.value}function te(e){j.selectCompetition(e)}function Q(){J.current_password=``,J.password=``,J.password_confirmation=``,q.value?.clearValidate()}function ne(){Q(),G.value=!0}function re(){x.logout(y),y.replace(`/admin/login`)}function ie(e){if(e===`password`){ne();return}e===`logout`&&re()}async function $(){let e=q.value;if(e&&await e.validate().catch(()=>!1)){K.value=!0;try{await D({current_password:J.current_password,password:J.password,password_confirmation:J.password_confirmation}),G.value=!1,S.success(`密码已更新`)}catch(e){S.error(e instanceof Error?e.message:`修改密码失败`)}finally{K.value=!1}}}return r(()=>{A(),X()}),(e,r)=>{let p=o(`el-button`),_=o(`el-dropdown-item`),y=o(`el-dropdown-menu`),b=o(`el-dropdown`),x=o(`el-header`),S=o(`el-scrollbar`),C=o(`el-aside`),w=o(`router-view`),T=o(`el-main`),E=o(`el-container`),D=o(`el-input`),O=o(`el-form-item`),k=o(`el-form`),A=o(`el-dialog`);return i(),t(E,{class:`admin-shell`},{default:f(()=>[h(x,{class:`admin-header`,height:`56px`},{default:f(()=>[s(`div`,P,[h(p,{circle:``,plain:``,size:`small`,"aria-label":`收起或展开侧栏`,onClick:Z},{default:f(()=>[a(d(W.value?`☰`:`⟨`),1)]),_:1}),r[10]||=s(`span`,{class:`admin-brand`},`管理后台`,-1),r[11]||=s(`div`,{class:`header-spacer`},null,-1),h(b,{trigger:`click`,placement:`bottom-end`},{dropdown:f(()=>[h(y,{style:{"min-width":`220px`}},{default:f(()=>[n(V).length?(i(!0),c(u,{key:1},l(n(V),e=>(i(),t(_,{key:e.id,onClick:t=>te(e.id)},{default:f(()=>[s(`div`,I,[s(`span`,L,d(e.name),1),s(`span`,R,d(e.slug),1)])]),_:2},1032,[`onClick`]))),128)):(i(),t(_,{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(H)?(i(),c(`span`,F,`(#`+d(n(H))+`)`,1)):v(``,!0)]),_:1})]),_:1}),h(b,{trigger:`click`,placement:`bottom-end`,onCommand:ie},{dropdown:f(()=>[h(y,null,{default:f(()=>[h(_,{command:`password`},{default:f(()=>[...r[8]||=[a(`修改密码`,-1)]]),_:1}),h(_,{divided:``,command:`logout`},{default:f(()=>[...r[9]||=[a(`退出`,-1)]]),_:1})]),_:1})]),default:f(()=>[s(`button`,z,[s(`span`,B,d(n(U)),1),r[7]||=s(`span`,{class:`admin-user-caret`,"aria-hidden":`true`},`▾`,-1)])]),_:1})])]),_:1}),h(E,{class:`admin-body`},{default:f(()=>[h(C,{class:`admin-aside`,width:W.value?`0px`:`230px`},{default:f(()=>[g(h(S,{class:`aside-scroll`},{default:f(()=>[r[12]||=s(`div`,{class:`aside-title`},`导航`,-1),h(N,{nodes:n(M)},null,8,[`nodes`])]),_:1},512),[[ee,!W.value]])]),_:1},8,[`width`]),h(T,{class:`admin-main`},{default:f(()=>[h(w)]),_:1})]),_:1}),h(A,{modelValue:G.value,"onUpdate:modelValue":r[4]||=e=>G.value=e,title:`修改密码`,width:`min(420px, 92vw)`,"destroy-on-close":``,onClosed:Q},{footer:f(()=>[h(p,{onClick:r[3]||=e=>G.value=!1},{default:f(()=>[...r[13]||=[a(`取消`,-1)]]),_:1}),h(p,{type:`primary`,loading:K.value,onClick:$},{default:f(()=>[...r[14]||=[a(` 保存 `,-1)]]),_:1},8,[`loading`])]),default:f(()=>[h(k,{ref_key:`passwordFormRef`,ref:q,model:J,rules:Y,"label-position":`top`,onSubmit:m($,[`prevent`])},{default:f(()=>[h(O,{label:`当前密码`,prop:`current_password`},{default:f(()=>[h(D,{modelValue:J.current_password,"onUpdate:modelValue":r[0]||=e=>J.current_password=e,type:`password`,"show-password":``,autocomplete:`current-password`},null,8,[`modelValue`])]),_:1}),h(O,{label:`新密码`,prop:`password`},{default:f(()=>[h(D,{modelValue:J.password,"onUpdate:modelValue":r[1]||=e=>J.password=e,type:`password`,"show-password":``,autocomplete:`new-password`},null,8,[`modelValue`])]),_:1}),h(O,{label:`确认新密码`,prop:`password_confirmation`},{default:f(()=>[h(D,{modelValue:J.password_confirmation,"onUpdate:modelValue":r[2]||=e=>J.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{V as default}; |