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

1 month ago
import{$t as e,C as t,D as n,Et as r,O as i,Y as a,Z as ee,_t as o,at as s,b as c,ct as l,d as te,g as u,ht as ne,in as d,k as re,l as f,p as ie,q as p,st as ae,u as oe,w as m,x as h}from"./vue.runtime.esm-bundler-OsdSFvn7.js";import{_ as se,k as ce,u as le}from"./api-Dpfxb1ca.js";import{l as g,u as ue}from"./index-CpTiFmNV.js";import{t as _}from"./_plugin-vue_export-helper-CXTkFu_Z.js";import{a as de,n as fe,o as pe,r as me,t as he}from"./listPageState-y2a2WJrd.js";import{n as ge,t as _e}from"./eventLocations-BfEKlYoy.js";var v={class:`reviewer-projects-page`},y={class:`container-fluid p-3 p-md-4`},b={class:`filter-panel mb-3`},x={class:`row g-2 align-items-center`},S={class:`col-12 d-flex flex-wrap align-items-center gap-3`},C={class:`form-check form-check-inline mb-0`},w=[`id`,`value`],T=[`for`],E={class:`col-md-4`},D={class:`col-md-3`},O={class:`col-12 col-md-auto d-flex gap-2`},k={key:0,class:`alert alert-warning py-2 small mb-3`,role:`alert`},A={key:1,class:`small text-secondary mb-2`,"aria-live":`polite`},j={class:`portal-table-scroll table-panel mb-0`},M={class:`table table-hover align-middle mb-0 admin-list-table portal-data-table portal-reviewer-table`},N={key:0},P={class:`text-secondary text-nowrap portal-sticky-left`},F={class:`reviewer-only-col`},I={class:`reviewer-only-col`},ve={class:`reviewer-only-col text-nowrap`},ye={class:`admin-actions-cell portal-sticky-right-1`},L=_(re({__name:`ReviewerProjectsView`,setup(re){let _=g(),L=ue(),R=c(()=>String(_.params.slug??``).trim()),z=o([]),B=o(!1),V=o(``),H=o(``),U=ne({keyword:``,event_location:``,review_status:``}),be=_e,W=o({current_page:1,last_page:1,per_page:20,total:0}),G=o(1),K=o(15);function q(){return he(`reviewer-projects`,R.value)}function J(){let e={};return U.event_location&&(e.event_location=U.event_location),U.keyword.trim()&&(e.keyword=U.keyword.trim()),U.review_status&&(e.review_status=U.review_status),e}function Y(){return fe({page:G.value,perPage:K.value,filters:J()})}function X(){let e=q();e.endsWith(`.`)||pe(e,{page:G.value,perPage:K.value,filters:J()})}function xe(){let e=de(q(),_.query);G.value=e.page,K.value=e.perPage,U.event_location=e.filters.event_location??``,U.keyword=e.filters.keyword??``,U.review_status=e.filters.review_status===`pending`||e.filters.review_status===`reviewed`?e.filters.review_status:``}function Z(){let e=Y();me(e,_.query)||R.value&&L.replace({name:`reviewer-projects`,params:{slug:R.value},query:e})}function Se(){let e=new URLSearchParams;e.set(`competition_slug`,R.value),e.set(`page`,String(G.value)),e.set(`per_page`,String(K.value));let t=U.keyword.trim();return t&&e.set(`keyword`,t),U.event_location&&e.set(`event_location`,U.event_location),(U.review_status===`pending`||U.review_status===`reviewed`)&&e.set(`review_status`,U.review_status),e}async function Q(){let e=R.value,{token:t}=ce();if(!e||!t){V.value=`未登录或缺少赛事信息`;return}B.value=!0,V.value=``;try{let e=`${se()}${le}?${Se().toString()}`,n=await fetch(e,{headers:{Authorization:`Bearer ${t}`,Accept:`application/json`}});if(!n.ok){let e=await n.json().catch(()=>({}));V.value=(typeof e==`object`&&e&&`message`in e?String(e.message??``):``)||`加载失败(${n.status})`,z.value=[],H.value=``;return}let r=await n.json();z.value=Array.isArray(r.data)?r.data:[];let i=r.meta;i&&(W.value={current_page:i.current_page??1,last_page:i.last_page??1,per_page:i.per_page??20,total:i.total??0}),Ce()}catch{V.value=`网络错误,请稍后重试`,z.value=[],H.value=``}finally{B.value=!1}}function Ce(){let e=W.value.total;if(e<=0){H.value=`暂无符合条件的数据`;return}let t=[`共 ${e} 条`];U.event_location&&t.push(U.event_location);let n=U.keyword.trim();n&&t.push(`关键词「${n}」`),U.review_status===`pending`?t.push(`待评审`):U.review_status===`reviewed`&&t.push(`已评审`),H.value=t.join(` · `)}function $(e=G.value){let t=G.value!==e;G.value=e,t||(X(),Z(),Q())}function we(){U.keyword=``,U.event_location=``,U.review_status=``,$(1)}xe(),s([R,G,K],()=>{X(),Z(),Q()},{immediate:!0});let Te=c(()=>B.value?`加载中…`:H.value||`暂无报名数据