|
|
import{$t as e,C as t,D as n,O as r,Y as i,Z as ee,_t as a,at as o,b as s,ct as c,d as l,g as u,ht as d,in as f,k as p,p as m,q as h,st as te,u as g,w as _,x as v}from"./vue.runtime.esm-bundler-OsdSFvn7.js";import{b as y,p as b,s as x}from"./api-Cy3G2Clw.js";import{o as ne,s as re}from"./index-BCZX_WPn.js";import{t as S}from"./_plugin-vue_export-helper-CXTkFu_Z.js";import{t as ie}from"./PortalPagination-CP5glO9c.js";var C={class:`reviewer-projects-page`},w={class:`container-fluid p-3 p-md-4`},T={class:`filter-panel mb-3`},E={class:`row g-2`},D={class:`col-md-4`},O={class:`col-md-3`},k={class:`col-12 col-md-auto d-flex gap-2`},A={key:0,class:`alert alert-warning py-2 small mb-3`,role:`alert`},j={key:1,class:`small text-secondary mb-2`,"aria-live":`polite`},M={class:`portal-table-scroll table-panel mb-0`},N={class:`table table-hover align-middle mb-0 admin-list-table portal-data-table portal-reviewer-table`},P={key:0},F={class:`text-secondary text-nowrap portal-sticky-left`},I={class:`reviewer-only-col`},L={class:`reviewer-only-col`},R={class:`reviewer-only-col text-nowrap`},z={class:`admin-actions-cell portal-sticky-right-1`},B=S(p({__name:`ReviewerProjectsView`,setup(p){let S=ne(),B=re(),V=s(()=>String(S.params.slug??``).trim()),H=a([]),U=a(!1),W=a(``),G=a(``),K=d({keyword:``,review_status:``}),q=a({current_page:1,last_page:1,per_page:20,total:0}),J=a(1),Y=a(15);function X(e,t){let n=typeof e==`string`?Number(e):typeof e==`number`?e:NaN;return Number.isInteger(n)&&n>0?n:t}function Z(){let e={};return J.value>1&&(e.page=String(J.value)),Y.value!==15&&(e.per_page=String(Y.value)),e}function ae(){J.value=X(S.query.page,1),Y.value=X(S.query.per_page,15)}function oe(){let e=Z(),t=typeof S.query.page==`string`?S.query.page:void 0,n=typeof S.query.per_page==`string`?S.query.per_page:void 0;t===e.page&&n===e.per_page||B.replace({query:e})}function se(){let e=new URLSearchParams;e.set(`competition_slug`,V.value),e.set(`page`,String(J.value)),e.set(`per_page`,String(Y.value));let t=K.keyword.trim();return t&&e.set(`keyword`,t),(K.review_status===`pending`||K.review_status===`reviewed`)&&e.set(`review_status`,K.review_status),e}async function ce(){let e=V.value,{token:t}=y();if(!e||!t){W.value=`未登录或缺少赛事信息`;return}U.value=!0,W.value=``;try{let e=`${b()}${x}?${se().toString()}`,n=await fetch(e,{headers:{Authorization:`Bearer ${t}`,Accept:`application/json`}});if(!n.ok){let e=await n.json().catch(()=>({}));W.value=(typeof e==`object`&&e&&`message`in e?String(e.message??``):``)||`加载失败(${n.status})`,H.value=[],G.value=``;return}let r=await n.json();H.value=Array.isArray(r.data)?r.data:[];let i=r.meta;i&&(q.value={current_page:i.current_page??1,last_page:i.last_page??1,per_page:i.per_page??20,total:i.total??0}),le()}catch{W.value=`网络错误,请稍后重试`,H.value=[],G.value=``}finally{U.value=!1}}function le(){let e=q.value.total;if(e<=0){G.value=`暂无符合条件的数据`;return}let t=[`共 ${e} 条`],n=K.keyword.trim();n&&t.push(`关键词「${n}」`),K.review_status===`pending`?t.push(`待评审`):K.review_status===`reviewed`&&t.push(`已评审`),G.value=t.join(` · `)}function Q(e=J.value){J.value=e}function $(){K.keyword=``,K.review_status=``,Q(1)}ae(),o([V,J,Y],()=>{oe(),ce()},{immediate:!0});let ue=s(()=>U.value?`加载中…`:G.value||`暂无报名数据`);function de(e){J.value=e}function fe(e){Y.value=e,J.value=1}function pe(e){return(q.value.current_page-1)*q.value.per_page+e+1}function me(e){return e.score_is_pending?`评审`:`查看`}return(a,o)=>{let s=ee(`router-link`);return h(),_(`div`,C,[v(`div`,w,[o[7]||=v(`div`,{class:`d-flex justify-content-between align-items-center flex-wrap gap-2 mb-3`},[v(`h5`,{class:`mb-0 section-title`},`项目评审`)],-1),v(`div`,T,[v(`div`,E,[v(`div`,D,[c(v(`input`,{"onUpdate:modelValue":o[0]||=e=>K.keyword=e,type:`search`,class:`form-control`,placeholder:`搜索项目、姓名、学校、手机号、推荐方`,onKeydown:o[1]||=m(e=>Q(1),[`enter`])},null,544),[[l,K.keyword]])]),v(`div`,O,[c(v(`select`,{"onUpdate:modelValue":o[2]||=e=>K.review_status=e,class:`form-select`},[...o[4]||=[v(`option`,{value:``},`全部评审状态`,-1),v(`option`,{value:`pending`},`待评审`,-1),v(`option`,{value:`reviewed`},`已评审`,-1)]],512),[[g,K.review_status]])]),v(`div`,k,[v(`button`,{type:`button`,class:`btn btn-primary px-3`,onClick:o[3]||=e=>Q(1)},`查询`),v(`button`,{type:`button`,class:`btn btn-light border px-3`,onClick:$},`重置`)])])]),W.value?(h(),_(`p`,A,f(W.value),1)):(h(),_(`p`,j,f(ue.value),1)),v(`div`,M,[v(`table`,N,[o[6]||=v(`thead`,{class:`table-light`},[v(`tr`,null,[v(`th`,{class:`text-nowrap portal-sticky-left`,style:{width:`3.5rem`}},`序号`),v(`th`,{class:`text-nowrap`},`项目编号`),v(`th`,{class:`cell-wrap`},`项目名称`),v(`th`,{class:`text-nowrap`},`姓名`),v(`th`,{class:`cell-wrap`},`项目所在地`),v(`th`,{class:`cell-wrap reviewer-only-col`},`毕业院校`),v(`th`,{class:`text-nowrap reviewer-only-col`},`最高学历`),v(`th`,{class:`cell-wrap`},`赛道`),v(`th`,{class:`text-nowrap`},`评分`),v(`th`,{class:`text-nowrap reviewer-only-col`},`提交时间`),v(`th`,{class:`text-nowrap admin-actions-head portal-sticky-right-1`},`操作`)])],-1),v(`tbody`,null,[!U.value&&H.value.length===0&&!W.value?(h(),_(`tr`,P,[...o[5]||=[v(`td`,{colspan:`11`,class:`text-center text-secondary py-4`},`暂无符合条件的数据`,-1)]])):t(``,!0),(h(!0),_(u,null,i(H.value,(t,i)=>(h(),_(`tr`,{key:t.id,"data-list-row":``},[v(`td`,F,f(pe(i)),1),v(`td`,null,f(t.project_code),1),v(`td`,null,f(t.project_name||`—`),1),v(`td`,null,f(t.player_name||`—`),1),v(`td`,null,f(t.location_label),1),v(`td`,I,f(t.school||`—`),1),v(`td`,L,f(t.degree||`—`),1),v(`td`,null,f(t.track_title||t.track_code||`—`),1),v(`td`,{class:e({"admin-total-pending-text":t.score_is_pending})},f(t.score_display),3),v(`td`,R,f(t.submitted_at||`—`),1),v(`td`,z,[r(s,{class:`btn btn-sm btn-outline-primary`,to:{name:`reviewer-application-detail`,params:{slug:V.value,id:String(t.id)},query:Z()}},{default:te(()=>[n(f(me(t)),1)]),_:2},1032,[`to`])])]))),128))])])]),r(ie,{page:J.value,"per-page":Y.value,total:q.value.total,"onUpdate:page":de,"onUpdate:perPage":fe},null,8,[`page`,`per-page`,`total`])])])}}}),[[`__scopeId`,`data-v-4ff044c8`]]);export{B as default}; |