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
5.9 KiB

import{A as e,Dt as t,G as n,J as r,K as i,O as a,Q as o,S as s,T as ee,Y as c,an as l,ct as u,h as d,k as f,ot as p,vt as m,x as h}from"./vue.runtime.esm-bundler-EOeHqR7Z.js";import{_ as g}from"./api-IlNPlR49.js";import{T as _,a as te,f as ne,h as re,p as v}from"./index-xGP6mfsH.js";import{t as y}from"./_plugin-vue_export-helper-BOai-rQB.js";import{r as ie}from"./auth-CoFEv4dW.js";import{t as b}from"./adminCompetition-ChmoocV-.js";import{r as x}from"./site-DbEWHcKU.js";/* empty css */import{n as S,t as ae}from"./participantTheme-B3FTrwQQ.js";import{a as C,n as w,o as T}from"./competitionBranding-BqoVO1VJ.js";import{t as E}from"./PortalChangePasswordModal-D8VgTf-p.js";var D={class:`manage-layout-root`},O={class:`navbar navbar-expand-lg layout-header`},k={class:`container-fluid px-4`},A={class:`navbar-brand mb-0 prototype-title`},j={class:`dropdown`},M={class:`header-user dropdown-toggle`,type:`button`,"data-bs-toggle":`dropdown`,"aria-expanded":`false`},N={class:`header-user-name`},P={class:`dropdown-menu dropdown-menu-end header-user-menu`},F={class:`container-fluid px-4 pt-2 pb-1 d-lg-none`},I={class:`mobile-nav-wrap`},L={class:`container-fluid px-4 py-3 layout-main`},R={class:`row g-3 portal-layout-row`},oe={class:`col-12 col-md-3 col-lg-2 layout-sider`},z={class:`card h-100 portal-sider-card`},B={class:`card-body`},V={class:`nav flex-column gap-2`},H={class:`col-12 col-md-9 col-lg-10 portal-main-column`},U={class:`manage-main-surface border rounded-3 bg-white h-100`},W={class:`border-top bg-white text-center py-2 small text-secondary prototype-subtitle`},G=y(e({__name:`CompetitionManageLayout`,setup(e){let y=ne(),G=v(),K=te(),q=b(),J=h(()=>String(y.params.slug??``).trim()),Y=m(null),X=m(``),Z=m(C()),se=h(()=>{let e=Z.value.review?.pageTitle?.trim();if(e)return e;let t=X.value.trim();return t?`${t} · 赛事管理`:`赛事管理`}),ce=h(()=>{if(T(Z.value.review.footerCopyright))return Z.value.review.footerCopyright;if(T(Z.value.login.footerCopyright))return Z.value.login.footerCopyright;let e=X.value.trim();return e?`版权所有:${e}`:`版权所有:${x}`});c(`manageCompetitionId`,Y),c(`manageCompetitionSlug`,J),c(`manageCompetitionName`,X);async function le(){let e=J.value;if(e)try{let t=await fetch(`${g()}/api/v1/public/competitions/by-slug/${encodeURIComponent(e)}`,{headers:{Accept:`application/json`}});if(!t.ok)throw Error(`赛事不存在`);let n=await t.json(),r=n.data!=null&&typeof n.data==`object`&&!Array.isArray(n.data)?n.data:n;Y.value=Number(r.id),X.value=String(r.name??``),Z.value=w(r.branding_json??null),Y.value&&q.selectCompetition(Y.value)}catch{Y.value=null,X.value=``,Z.value=C()}}function ue(){K.logout(G),G.replace({name:`manage-login`,params:{slug:J.value}})}let Q=m(null),$=m(!1);function de(){Q.value?.reset();let e=document.getElementById(`managePasswordModal`);e&&_.getOrCreateInstance(e).show()}async function fe(e){$.value=!0;try{await ie(e),re.success(`密码已更新`);let t=document.getElementById(`managePasswordModal`);t&&_.getOrCreateInstance(t).hide()}catch(e){Q.value?.setError(e instanceof Error?e.message:`修改密码失败`)}finally{$.value=!1}}return p(Z,()=>ae(Z.value.login.themePrimary),{deep:!0,immediate:!0}),p(J,()=>void le(),{immediate:!0}),n(()=>{document.body.classList.add(`prototype-page`,`participant-portal-theme`,`admin-desktop-page`)}),i(()=>{document.body.classList.remove(`prototype-page`,`participant-portal-theme`,`admin-desktop-page`),S()}),(e,n)=>{let i=o(`router-link`),c=o(`router-view`);return r(),ee(`div`,D,[s(`header`,O,[s(`div`,k,[s(`span`,A,l(se.value),1),s(`div`,j,[s(`button`,M,[n[0]||=s(`svg`,{width:`22`,height:`22`,viewBox:`0 0 24 24`,fill:`none`,"aria-hidden":`true`},[s(`circle`,{cx:`12`,cy:`12`,r:`9.5`,stroke:`currentColor`,"stroke-width":`2`}),s(`circle`,{cx:`12`,cy:`9`,r:`3.2`,fill:`currentColor`}),s(`path`,{d:`M6.8 18.2c1.1-2.4 3-3.6 5.2-3.6s4.1 1.2 5.2 3.6`,fill:`currentColor`})],-1),s(`span`,N,l(t(K).displayName),1)]),s(`ul`,P,[s(`li`,null,[s(`a`,{class:`dropdown-item`,href:`javascript:void(0)`,onClick:d(de,[`prevent`])},[...n[1]||=[s(`span`,{class:`menu-icon`},`🔒`,-1),a(`修改密码 `,-1)]])]),n[3]||=s(`li`,null,[s(`hr`,{class:`dropdown-divider`})],-1),s(`li`,null,[s(`a`,{class:`dropdown-item text-danger`,href:`javascript:void(0)`,onClick:d(ue,[`prevent`])},[...n[2]||=[s(`span`,{class:`menu-icon`},`↪`,-1),a(`退出登录 `,-1)]])])])])])]),s(`div`,F,[s(`div`,I,[f(i,{class:`mobile-nav-link`,to:{name:`manage-dashboard`,params:{slug:J.value}}},{default:u(()=>[...n[4]||=[a(`综合看板`,-1)]]),_:1},8,[`to`]),f(i,{class:`mobile-nav-link`,to:{name:`manage-projects`,params:{slug:J.value}}},{default:u(()=>[...n[5]||=[a(`项目管理`,-1)]]),_:1},8,[`to`]),f(i,{class:`mobile-nav-link`,to:{name:`manage-reviewers`,params:{slug:J.value}}},{default:u(()=>[...n[6]||=[a(`评审员管理`,-1)]]),_:1},8,[`to`]),f(i,{class:`mobile-nav-link`,to:{name:`audience-manage-registrations`,params:{slug:J.value}}},{default:u(()=>[...n[7]||=[a(`观众信息管理`,-1)]]),_:1},8,[`to`])])]),s(`div`,L,[s(`div`,R,[s(`aside`,oe,[s(`div`,z,[s(`div`,B,[s(`nav`,V,[f(i,{class:`nav-link text-start`,to:{name:`manage-dashboard`,params:{slug:J.value}}},{default:u(()=>[...n[8]||=[a(` 综合看板 `,-1)]]),_:1},8,[`to`]),f(i,{class:`nav-link text-start`,to:{name:`manage-projects`,params:{slug:J.value}}},{default:u(()=>[...n[9]||=[a(` 项目管理 `,-1)]]),_:1},8,[`to`]),f(i,{class:`nav-link text-start`,to:{name:`manage-reviewers`,params:{slug:J.value}}},{default:u(()=>[...n[10]||=[a(` 评审员管理 `,-1)]]),_:1},8,[`to`]),f(i,{class:`nav-link text-start`,to:{name:`audience-manage-registrations`,params:{slug:J.value}}},{default:u(()=>[...n[11]||=[a(` 观众信息管理 `,-1)]]),_:1},8,[`to`])])])])]),s(`main`,H,[s(`div`,U,[f(c,{class:`manage-main-view`})])])])]),s(`footer`,W,l(ce.value),1),f(E,{ref_key:`passwordModalRef`,ref:Q,"modal-id":`managePasswordModal`,submitting:$.value,onSubmit:fe},null,8,[`submitting`])])}}}),[[`__scopeId`,`data-v-b6df0191`]]);export{G as default};