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