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

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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};