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
7.2 KiB
1 line
7.2 KiB
import{A as e,G as t,J as n,K as r,O as i,Q as a,S as o,T as ee,Y as s,an as c,ct as l,en as u,h as d,k as f,ot as p,vt as m,x as h}from"./vue.runtime.esm-bundler-Dt_AyShc.js";import{_ as g,f as te,h as _,k as v}from"./api-Dpfxb1ca.js";import{E as y,d as ne,f as re,g as ie,p as ae}from"./index-D9t8QC7c.js";import{t as b}from"./_plugin-vue_export-helper-CXTkFu_Z.js";/* empty css */import{n as oe,t as se}from"./participantTheme-DJmAYiDK.js";import{c as x,d as ce,r as le,s as S}from"./competitionBranding-yuKuMrc8.js";import{t as ue}from"./PortalHeaderBrand-CMozNyA5.js";import{t as C}from"./PortalChangePasswordModal-C07-WfEt.js";async function w(e){let{token:t}=v();if(!t)throw Error(`未登录`);let n=await fetch(`${g()}/api/v1/review/auth/password`,{method:`POST`,headers:{Authorization:`Bearer ${t}`,Accept:`application/json`,"Content-Type":`application/json`},body:JSON.stringify(e)});if(!n.ok){let e=await n.json().catch(()=>({})),t=e.errors?.current_password?.[0]||e.errors?.password?.[0]||e.message||`修改密码失败`;throw Error(t)}}var T={class:`reviewer-layout-root`},E={class:`navbar navbar-expand-lg layout-header`},D={class:`container-fluid px-4 layout-header-inner`},O={class:`dropdown`},k={class:`header-user dropdown-toggle`,type:`button`,"data-bs-toggle":`dropdown`,"aria-expanded":`false`},A={class:`header-user-name`},j={class:`dropdown-menu dropdown-menu-end header-user-menu`},M={id:`mobileNavSection`,class:`container-fluid px-4 pt-2 pb-1 d-lg-none`},N={class:`mobile-nav-wrap`},P={class:`container-fluid px-4 py-3 layout-main`},F={class:`row g-3 portal-layout-row`},I={class:`col-12 col-md-3 col-lg-2 layout-sider`},L={class:`card h-100 portal-sider-card`},R={class:`card-body`},z={class:`nav flex-column gap-2`},B={class:`col-12 col-md-9 col-lg-10 reviewer-main-column portal-main-column`},V={class:`reviewer-main-surface border rounded-3 bg-white h-100`},H={class:`border-top bg-white text-center py-2 small text-secondary prototype-subtitle`},U={id:`reviewerProfileModal`,class:`modal fade`,tabindex:`-1`,"aria-hidden":`true`},de={class:`modal-dialog modal-dialog-centered profile-modal-dialog`},W={class:`modal-content profile-modal-content`},fe={class:`modal-body profile-modal-body`},pe={class:`row g-3`},me={class:`col-md-6`},he={class:`profile-field`},ge={class:`profile-field-value`},_e={class:`col-md-6`},ve={class:`profile-field`},ye={class:`profile-field-value`},be={class:`col-12`},xe={class:`profile-field`},Se={class:`profile-field-value`},G=b(e({__name:`ReviewerLayout`,setup(e){let b=ae(),G=re(),K=h(()=>String(G.params.slug??``).trim()),q=h(()=>[`reviewer-projects`,`reviewer-application-detail`].includes(String(G.name??``))),J=m(S()),Y=m(``),X=m(`评审员`),Ce=h(()=>ce(J.value,Y.value)),we=h(()=>{if(x(J.value.review.footerCopyright))return J.value.review.footerCopyright;if(x(J.value.login.footerCopyright))return J.value.login.footerCopyright;let e=Y.value.trim();return e?`版权所有:${e}`:`版权所有`});async function Te(){let e=K.value;if(!e){J.value=S(),Y.value=``;return}try{let t=await fetch(`${g()}/api/v1/public/competitions/by-slug/${encodeURIComponent(e)}`,{headers:{Accept:`application/json`}});if(!t.ok){J.value=S(),Y.value=``;return}let n=await t.json(),r=n.data!=null&&typeof n.data==`object`&&!Array.isArray(n.data)?n.data:n;if(!ne(r).enabled){_(),e&&b.replace({name:`reviewer-login`,params:{slug:e}});return}Y.value=String(r.name??``),J.value=le(r.branding_json??null)}catch{J.value=S(),Y.value=``}}p(J,()=>se(J.value.login.themePrimary),{deep:!0,immediate:!0}),p(K,()=>void Te(),{immediate:!0}),s(`reviewerCompetitionName`,Y);let Z=m({name:`—`,mobile:`—`,username:`—`});async function Ee(){let{token:e}=v();if(e)try{let t=await fetch(`${g()}${te}`,{headers:{Authorization:`Bearer ${e}`,Accept:`application/json`}});if(!t.ok)return;let n=(await t.json()).reviewer;X.value=n?.name?.trim()||n?.username?.trim()||`评审员`,Z.value={name:n?.name??`—`,mobile:n?.mobile??`—`,username:n?.username??`—`}}catch{}}function De(){_();let e=K.value;e?b.replace({name:`reviewer-login`,params:{slug:e}}):b.replace(`/c`)}let Q=m(null),$=m(!1);function Oe(){Q.value?.reset();let e=document.getElementById(`reviewerPasswordModal`);e&&y.getOrCreateInstance(e).show()}async function ke(e){$.value=!0;try{await w(e),ie.success(`密码已更新`);let t=document.getElementById(`reviewerPasswordModal`);t&&y.getOrCreateInstance(t).hide()}catch(e){Q.value?.setError(e instanceof Error?e.message:`修改密码失败`)}finally{$.value=!1}}return t(()=>{document.body.classList.add(`prototype-page`,`participant-portal-theme`,`reviewer-mode`,`admin-desktop-page`,`reviewer-score-2colors`),Ee()}),r(()=>{document.body.classList.remove(`prototype-page`,`participant-portal-theme`,`reviewer-mode`,`admin-desktop-page`,`reviewer-score-2colors`),oe()}),(e,t)=>{let r=a(`router-link`),s=a(`router-view`);return n(),ee(`div`,T,[o(`header`,E,[o(`div`,D,[f(ue,{"logo-url":J.value.login.logoUrl,name:Ce.value},null,8,[`logo-url`,`name`]),o(`div`,O,[o(`button`,k,[t[0]||=o(`svg`,{width:`22`,height:`22`,viewBox:`0 0 24 24`,fill:`none`,"aria-hidden":`true`},[o(`circle`,{cx:`12`,cy:`12`,r:`9.5`,stroke:`currentColor`,"stroke-width":`2`}),o(`circle`,{cx:`12`,cy:`9`,r:`3.2`,fill:`currentColor`}),o(`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),o(`span`,A,c(X.value),1)]),o(`ul`,j,[t[3]||=o(`li`,null,[o(`a`,{class:`dropdown-item`,href:`javascript:void(0)`,"data-bs-toggle":`modal`,"data-bs-target":`#reviewerProfileModal`},[o(`span`,{class:`menu-icon`},`👤`),i(`个人信息 `)])],-1),o(`li`,null,[o(`a`,{class:`dropdown-item`,href:`javascript:void(0)`,onClick:d(Oe,[`prevent`])},[...t[1]||=[o(`span`,{class:`menu-icon`},`🔒`,-1),i(`修改密码 `,-1)]])]),t[4]||=o(`li`,null,[o(`hr`,{class:`dropdown-divider`})],-1),o(`li`,null,[o(`a`,{class:`dropdown-item text-danger`,href:`javascript:void(0)`,onClick:d(De,[`prevent`])},[...t[2]||=[o(`span`,{class:`menu-icon`},`↪`,-1),i(`退出登录 `,-1)]])])])])])]),o(`div`,M,[o(`div`,N,[f(r,{class:u([`mobile-nav-link`,{active:q.value}]),to:{name:`reviewer-projects`,params:{slug:K.value}}},{default:l(()=>[...t[5]||=[i(` 项目评审 `,-1)]]),_:1},8,[`class`,`to`])])]),o(`div`,P,[o(`div`,F,[o(`aside`,I,[o(`div`,L,[o(`div`,R,[o(`nav`,z,[f(r,{class:u([`nav-link text-start`,{active:q.value}]),to:{name:`reviewer-projects`,params:{slug:K.value}}},{default:l(()=>[...t[6]||=[i(` 项目评审 `,-1)]]),_:1},8,[`class`,`to`])])])])]),o(`main`,B,[o(`div`,V,[f(s)])])])]),o(`footer`,H,c(we.value),1),o(`div`,U,[o(`div`,de,[o(`div`,W,[t[10]||=o(`div`,{class:`modal-header profile-modal-header`},[o(`h5`,{class:`modal-title profile-modal-title`},`个人信息`),o(`button`,{type:`button`,class:`btn-close`,"data-bs-dismiss":`modal`,"aria-label":`关闭`})],-1),o(`div`,fe,[o(`div`,pe,[o(`div`,me,[o(`div`,he,[t[7]||=o(`div`,{class:`profile-field-label`},`姓名`,-1),o(`div`,ge,c(Z.value.name),1)])]),o(`div`,_e,[o(`div`,ve,[t[8]||=o(`div`,{class:`profile-field-label`},`手机号`,-1),o(`div`,ye,c(Z.value.mobile),1)])]),o(`div`,be,[o(`div`,xe,[t[9]||=o(`div`,{class:`profile-field-label`},`登录账号`,-1),o(`div`,Se,c(Z.value.username),1)])])])])])])]),f(C,{ref_key:`passwordModalRef`,ref:Q,"modal-id":`reviewerPasswordModal`,submitting:$.value,onSubmit:ke},null,8,[`submitting`])])}}}),[[`__scopeId`,`data-v-98234e46`]]);export{G as default}; |