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