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
17 KiB
1 line
17 KiB
import{$t as e,D as t,Et as n,O as r,P as i,S as a,T as o,Y as s,_ as c,_t as l,at as ee,ct as u,d,f,ht as p,in as m,k as te,m as ne,q as h,w as g,x as _}from"./vue.runtime.esm-bundler-CACvpnko.js";import{f as re,h as ie,p as ae,s as v}from"./index-D5exsJys.js";import{s as oe}from"./competitions-Cv_Vb4Fy.js";import{a as se,r as y}from"./signupOptionCodes-CvTkOKn_.js";import{i as ce,n as le,o as ue}from"./applications-AYtK0hKj.js";import{a as b,n as de,t as fe}from"./schemaAdminColumns-D9uCX5IN.js";import{a as pe,n as me,o as he,r as ge,t as _e}from"./listPageState-BzwZpEQc.js";import{t as ve}from"./PortalPagination-DgTa7HSo.js";async function ye(e,t){let{data:n}=await v.post(`/competitions/${e}/applications/batch-review-result`,t);return n}y.map(e=>e.value);var be={class:`container-fluid p-3 p-md-4`},xe={class:`filter-panel mb-3`},Se={class:`row g-2 align-items-center`},Ce={class:`col-md-3`},we={class:`col-md-2`},Te=[`value`],Ee=[`value`],De={class:`col-md-2`},Oe=[`value`],ke={class:`col-md-2`},Ae=[`onUpdate:modelValue`],je={value:``},Me=[`value`],Ne={class:`col-md-2`},Pe={class:`col-md-2`},Fe={class:`col-12 col-md-auto d-flex gap-2`},Ie={class:`selection-toolbar mt-2`},Le={class:`d-flex flex-wrap align-items-center gap-2`},Re={class:`btn-group btn-group-sm portal-selection-mode-group`,role:`group`},ze={key:0,class:`badge bg-light text-dark ms-1`},Be={key:0,class:`badge bg-light text-dark ms-1`},Ve=[`disabled`],He=[`disabled`],Ue={key:1,class:`dropdown`},We={class:`dropdown-menu dropdown-menu-end`},Ge=[`disabled`],Ke={class:`small text-secondary mb-0 mt-2`},qe={class:`portal-table-scroll table-panel`},Je={class:`table table-hover align-middle mb-0 admin-list-table portal-data-table`},Ye={class:`text-center portal-sticky-left`,style:{width:`2.5rem`}},Xe=[`checked`],Ze={class:`portal-sticky-right-3`},Qe={key:0},$e=[`colspan`],et={key:1},tt=[`colspan`],nt={class:`text-center portal-sticky-left`},rt=[`checked`,`disabled`,`onChange`],it={class:`text-secondary`},at={class:`cell-wrap`},ot={class:`cell-wrap`},st={class:`cell-wrap`},ct={class:`cell-wrap`},lt={class:`portal-sticky-right-4`},ut={class:`portal-sticky-right-3`},dt={class:`portal-sticky-right-2`},ft={key:0,class:`admin-manage-status-tag admin-manage-status-pass`},pt={key:1,class:`admin-manage-status-tag admin-manage-status-fail`},mt={key:2},ht={class:`portal-sticky-right-1`},gt=[`onClick`],_t={key:0,class:`modal fade show d-block`,tabindex:`-1`,style:{background:`rgba(0,0,0,.35)`}},vt={class:`modal-dialog modal-dialog-centered`},yt={class:`modal-content`},bt={class:`modal-header`},xt={class:`modal-body`},St={class:`mb-0`},Ct={class:`modal-footer`},wt=[`disabled`],Tt={key:1,class:`modal fade show d-block`,tabindex:`-1`,style:{background:`rgba(0,0,0,.35)`}},Et={class:`modal-dialog modal-dialog-centered modal-lg`},Dt={class:`modal-content`},Ot={class:`modal-body`},kt={class:`modal-footer`},At=[`disabled`],jt={key:2,class:`modal fade show d-block`,tabindex:`-1`,style:{background:`rgba(0,0,0,.35)`}},Mt={class:`modal-dialog modal-dialog-centered modal-lg`},Nt={class:`modal-content`},Pt={class:`modal-body`},Ft={class:`modal-footer`},It=[`disabled`],x=te({__name:`ManageProjectsView`,setup(te){let v=re(),x=ae(),S=i(`manageCompetitionId`,l(null)),C=i(`manageCompetitionSlug`,l(``)),w=l(!1),T=l([]),E=p({page:1,perPage:15,total:0});function Lt(){return _e(`manage-projects`,C.value)}function Rt(){let e={};return j.keyword.trim()&&(e.keyword=j.keyword.trim()),j.track&&(e.track=j.track),j.event_location&&(e.event_location=j.event_location),j.signup_locale&&(e.signup_locale=j.signup_locale),j.review_result&&(e.review_result=j.review_result),j.review_eligible&&(e.review_eligible=j.review_eligible),L.value!==`desc`&&(e.sort_dir=L.value),e}function D(){return me({page:E.page,perPage:E.perPage,filters:Rt()})}function O(){let e=Lt();e.endsWith(`.`)||he(e,{page:E.page,perPage:E.perPage,filters:Rt()})}function zt(){let e=pe(Lt(),v.query);E.page=e.page,E.perPage=e.perPage,j.keyword=e.filters.keyword??``,j.track=e.filters.track??``,j.event_location=e.filters.event_location??``,j.signup_locale=e.filters.signup_locale??``,j.review_result=e.filters.review_result===`passed`||e.filters.review_result===`rejected`||e.filters.review_result===`pending`?e.filters.review_result:``,(e.filters.review_eligible===`1`||e.filters.review_eligible===`0`)&&(j.review_eligible=e.filters.review_eligible),(e.filters.sort_dir===`asc`||e.filters.sort_dir===`desc`)&&(L.value=e.filters.sort_dir)}function k(){let e=D();ge(e,v.query)||x.replace({name:`manage-projects`,params:{slug:C.value},query:e})}let A=l([]),j=p({keyword:``,track:``,event_location:``,signup_locale:``,review_result:``,review_eligible:`1`}),Bt=y,M=p({}),N=l([]),P=l([]),F=_(()=>b(N.value,de)),Vt=_(()=>b(P.value,fe)),I=_(()=>21+F.value.length),L=l(`desc`),R=l(`audit`),z=l([]),B=l([]),V=l(!1),H=l(`xlsx`),U=l(!1),W=l(0),G=l(!1),K=l(!1),q=l(``),J=l(!1);function Y(e){let t={page:e,per_page:E.perPage,status:`submitted`,sort_by:`team_avg`,sort_dir:L.value},n=j.keyword.trim();n&&(t.keyword=n),j.track&&(t.track=j.track),j.event_location&&(t.event_location=j.event_location),j.signup_locale&&(t.signup_locale=j.signup_locale),(j.review_result===`passed`||j.review_result===`rejected`||j.review_result===`pending`)&&(t.review_result=j.review_result),j.review_eligible===`1`&&(t.review_eligible=!0),j.review_eligible===`0`&&(t.review_eligible=!1);for(let[e,n]of Object.entries(M))String(n??``).trim()!==``&&(t[e]=n);return t}function Ht(e){return e.submitter_name?.trim()||e.submitter_mobile?.trim()||`—`}function Ut(e){if(!e)return`—`;let t=new Date(e.includes(` `)?e.replace(/-/g,`/`):e);if(Number.isNaN(t.getTime()))return e;let n=e=>String(e).padStart(2,`0`);return`${t.getFullYear()}-${n(t.getMonth()+1)}-${n(t.getDate())} ${n(t.getHours())}:${n(t.getMinutes())}`}function Wt(e){return e==null||Number.isNaN(e)?`-`:e.toFixed(2)}function Gt(e){return e.review_fully_completed?e.team_sum==null?`-`:e.team_sum.toFixed(2):`待评审`}function Kt(e){return Wt(e.team_avg)}function X(e){return R.value===`export`?!0:e.review_fully_completed}let Z=_(()=>R.value===`audit`?z.value:B.value);function qt(e){R.value===`audit`?z.value=e:B.value=e}function Jt(e){R.value=e}let Yt=_(()=>R.value===`audit`?`当前勾选用于批量通过/未通过`:`当前勾选用于「导出表格 + 所选附件」,与审核勾选互不影响`);function Xt(e){return Z.value.includes(e)}let Zt=_(()=>{let e=T.value.filter(X),t=Z.value;return e.length>0&&e.every(e=>t.includes(e.id))});function Qt(e){let t=e.target.checked,n=T.value.filter(X).map(e=>e.id),r=Z.value;qt(t?Array.from(new Set([...r,...n])):r.filter(e=>!n.includes(e)))}function $t(e,t,n){if(!X(t)){n.target.checked=!1;return}let r=n.target.checked,i=[...Z.value];if(r)i.includes(e)||i.push(e);else{let t=i.indexOf(e);t>=0&&i.splice(t,1)}qt(i)}function en(){L.value=L.value===`desc`?`asc`:`desc`,Q(1)}function tn(e){Q(e)}function nn(e){E.perPage=e,Q(1)}async function rn(){let e=S.value;e&&(A.value=await oe(e))}async function Q(e=E.page){let t=S.value;if(t){w.value=!0,E.page=e,O(),k();try{let n=await ue(t,Y(e));T.value=n.data,N.value=n.schema_list_fields??[],P.value=n.schema_filter_fields??[],E.total=n.meta.total,n.meta.current_page&&n.meta.current_page!==E.page&&(E.page=n.meta.current_page,O(),k())}finally{w.value=!1}}}function an(){j.keyword=``,j.track=``,j.event_location=``,j.signup_locale=``,j.review_result=``,j.review_eligible=`1`;for(let e of Object.keys(M))M[e]=``;z.value=[],B.value=[],Q(1)}async function $(e){let t=S.value;if(t){if(e===`selected`&&B.value.length===0){ie.warning(`请切换到「导出选择」并勾选要导出附件的项目`);return}H.value=e,V.value=!0;try{W.value=(await ce(t,{mode:e,...Y(E.page),application_ids:e===`selected`?B.value:void 0})).total}catch{W.value=E.total}}}async function on(){let e=S.value;if(e){U.value=!0;try{await le(e,{mode:H.value,...Y(E.page),application_ids:H.value===`selected`?B.value:void 0}),V.value=!1}finally{U.value=!1}}}async function sn(e){let t=S.value;if(!(!t||z.value.length===0)){J.value=!0;try{await ye(t,{application_ids:z.value,result:e,note:q.value.trim()||void 0}),G.value=!1,K.value=!1,q.value=``,z.value=[],await Q(E.page)}finally{J.value=!1}}}function cn(e){O(),x.push({name:`manage-project-detail`,params:{slug:C.value,id:String(e.id)},query:D()})}return ee(S,async e=>{e&&(await rn(),zt(),await Q(E.page))},{immediate:!0}),(i,l)=>(h(),o(`div`,be,[l[54]||=a(`div`,{class:`d-flex justify-content-between align-items-center flex-wrap gap-2 mb-3`},[a(`h5`,{class:`mb-0 section-title`},`项目管理`)],-1),a(`div`,xe,[a(`div`,Se,[a(`div`,Ce,[u(a(`input`,{"onUpdate:modelValue":l[0]||=e=>j.keyword=e,type:`search`,class:`form-control`,placeholder:`搜索项目、姓名、学校、手机号、推荐方`,onKeydown:l[1]||=ne(e=>Q(1),[`enter`])},null,544),[[f,j.keyword]])]),a(`div`,we,[u(a(`select`,{"onUpdate:modelValue":l[2]||=e=>j.track=e,class:`form-select`},[l[23]||=a(`option`,{value:``},`全部赛道`,-1),(h(!0),o(c,null,s(A.value,e=>(h(),o(`option`,{key:e.track_code,value:e.track_code},m(e.title),9,Te))),128)),A.value.some(e=>e.track_code===n(`other`))?g(``,!0):(h(),o(`option`,{key:0,value:n(se)},`其他`,8,Ee))],512),[[d,j.track]])]),a(`div`,De,[u(a(`select`,{"onUpdate:modelValue":l[3]||=e=>j.event_location=e,class:`form-select`},[l[24]||=a(`option`,{value:``},`全部意向参赛地点`,-1),(h(!0),o(c,null,s(n(Bt),e=>(h(),o(`option`,{key:e.value,value:e.value},m(e.label),9,Oe))),128))],512),[[d,j.event_location]])]),a(`div`,ke,[u(a(`select`,{"onUpdate:modelValue":l[4]||=e=>j.signup_locale=e,class:`form-select`},[...l[25]||=[a(`option`,{value:``},`全部填报语言`,-1),a(`option`,{value:`zh-CN`},`中文填报`,-1),a(`option`,{value:`en`},`英文填报`,-1)]],512),[[d,j.signup_locale]])]),(h(!0),o(c,null,s(Vt.value,e=>(h(),o(`div`,{key:`mf-${e.key}`,class:`col-md-2`},[u(a(`select`,{"onUpdate:modelValue":t=>M[e.key]=t,class:`form-select`},[a(`option`,je,`全部`+m(e.label),1),(h(!0),o(c,null,s(e.options??[],e=>(h(),o(`option`,{key:e.value,value:e.value},m(e.label),9,Me))),128))],8,Ae),[[d,M[e.key]]])]))),128)),a(`div`,Ne,[u(a(`select`,{"onUpdate:modelValue":l[5]||=e=>j.review_result=e,class:`form-select`},[...l[26]||=[a(`option`,{value:``},`全部状态`,-1),a(`option`,{value:`passed`},`通过`,-1),a(`option`,{value:`rejected`},`未通过`,-1),a(`option`,{value:`pending`},`待评定`,-1)]],512),[[d,j.review_result]])]),a(`div`,Pe,[u(a(`select`,{"onUpdate:modelValue":l[6]||=e=>j.review_eligible=e,class:`form-select`},[...l[27]||=[a(`option`,{value:``},`全部(是否参与评审)`,-1),a(`option`,{value:`1`},`参与评审`,-1),a(`option`,{value:`0`},`不参与评审`,-1)]],512),[[d,j.review_eligible]])]),a(`div`,Fe,[a(`button`,{type:`button`,class:`btn btn-primary px-3`,onClick:l[7]||=e=>Q(1)},`查询`),a(`button`,{type:`button`,class:`btn btn-light border px-3`,onClick:an},`重置`)])]),a(`div`,Ie,[a(`div`,Le,[l[31]||=a(`span`,{class:`small text-secondary`},`勾选用途:`,-1),a(`div`,Re,[a(`button`,{type:`button`,class:e([`btn`,R.value===`audit`?`btn-primary`:`btn-outline-primary`]),onClick:l[8]||=e=>Jt(`audit`)},[l[28]||=t(` 审核选择 `,-1),z.value.length?(h(),o(`span`,ze,m(z.value.length),1)):g(``,!0)],2),a(`button`,{type:`button`,class:e([`btn`,R.value===`export`?`btn-primary`:`btn-outline-primary`]),onClick:l[9]||=e=>Jt(`export`)},[l[29]||=t(` 导出选择 `,-1),B.value.length?(h(),o(`span`,Be,m(B.value.length),1)):g(``,!0)],2)]),R.value===`audit`?(h(),o(c,{key:0},[a(`button`,{type:`button`,class:`btn btn-sm btn-manage-pass`,disabled:z.value.length===0,onClick:l[10]||=e=>{G.value=!0,q.value=`同意参赛。`}},` 通过 `,8,Ve),a(`button`,{type:`button`,class:`btn btn-sm btn-manage-reject`,disabled:z.value.length===0,onClick:l[11]||=e=>{K.value=!0,q.value=``}},` 未通过 `,8,He)],64)):(h(),o(`div`,Ue,[l[30]||=a(`button`,{class:`btn btn-primary btn-sm dropdown-toggle`,type:`button`,"data-bs-toggle":`dropdown`},` 导出 `,-1),a(`ul`,We,[a(`li`,null,[a(`button`,{class:`dropdown-item`,type:`button`,onClick:l[12]||=e=>$(`xlsx`)},`仅导出表格`)]),a(`li`,null,[a(`button`,{class:`dropdown-item`,type:`button`,disabled:B.value.length===0,onClick:l[13]||=e=>$(`selected`)},` 导出表格 + 所选附件 `,8,Ge)]),a(`li`,null,[a(`button`,{class:`dropdown-item`,type:`button`,onClick:l[14]||=e=>$(`all`)},`导出表格 + 全部附件`)])])]))]),a(`p`,Ke,m(Yt.value),1)])]),a(`div`,qe,[a(`table`,Je,[a(`thead`,null,[a(`tr`,null,[a(`th`,Ye,[(h(),o(`input`,{key:`select-all-${R.value}-${E.page}`,class:`form-check-input`,type:`checkbox`,checked:Zt.value,"aria-label":`全选本页`,onChange:Qt},null,40,Xe))]),l[32]||=a(`th`,{style:{width:`3rem`}},`序号`,-1),l[33]||=a(`th`,null,`填报语言`,-1),l[34]||=a(`th`,null,`项目编号`,-1),l[35]||=a(`th`,null,`项目名称`,-1),l[36]||=a(`th`,null,`负责人`,-1),l[37]||=a(`th`,null,`学校`,-1),l[38]||=a(`th`,null,`意向参赛地点`,-1),l[39]||=a(`th`,null,`赛道`,-1),(h(!0),o(c,null,s(F.value,e=>(h(),o(`th`,{key:`th-${e.key}`},m(e.label),1))),128)),l[40]||=a(`th`,null,`推荐方`,-1),l[41]||=a(`th`,null,`手机号`,-1),l[42]||=a(`th`,null,`提交人`,-1),l[43]||=a(`th`,null,`提交人手机号`,-1),l[44]||=a(`th`,null,`附件`,-1),l[45]||=a(`th`,null,`提交时间`,-1),l[46]||=a(`th`,{class:`portal-sticky-right-5`},`总分`,-1),l[47]||=a(`th`,{class:`portal-sticky-right-4`},`进程`,-1),a(`th`,Ze,[a(`button`,{type:`button`,class:`btn btn-link btn-sm p-0 text-decoration-none`,onClick:en},` 平均分 `+m(L.value===`desc`?`↓`:`↑`),1)]),l[48]||=a(`th`,{class:`portal-sticky-right-2`},`状态`,-1),l[49]||=a(`th`,null,`是否参与评审`,-1),l[50]||=a(`th`,{class:`portal-sticky-right-1`},`操作`,-1)])]),a(`tbody`,null,[w.value?(h(),o(`tr`,Qe,[a(`td`,{colspan:I.value,class:`text-center py-4 text-secondary`},`加载中…`,8,$e)])):T.value.length===0?(h(),o(`tr`,et,[a(`td`,{colspan:I.value,class:`text-center py-4 text-secondary`},`暂无符合条件的数据`,8,tt)])):(h(!0),o(c,{key:2},s(T.value,(t,n)=>(h(),o(`tr`,{key:t.id},[a(`td`,nt,[(h(),o(`input`,{key:`${R.value}-${E.page}-${t.id}`,class:`form-check-input`,type:`checkbox`,checked:Xt(t.id),disabled:!X(t),onChange:e=>$t(t.id,t,e)},null,40,rt))]),a(`td`,it,m((E.page-1)*E.perPage+n+1),1),a(`td`,null,m(t.signup_locale_label||`中文填报`),1),a(`td`,null,m(t.project_code),1),a(`td`,at,m(t.project_name),1),a(`td`,null,m(t.player_name),1),a(`td`,ot,m(t.school||`—`),1),a(`td`,null,m(t.event_location_label||t.event_location||`—`),1),a(`td`,st,m(t.track_title),1),(h(!0),o(c,null,s(F.value,e=>(h(),o(`td`,{key:`td-${e.key}`,class:`cell-wrap`},m(t.schema_display?.[e.key]||`—`),1))),128)),a(`td`,ct,m(t.recommend||`—`),1),a(`td`,null,m(t.contact_mobile||`—`),1),a(`td`,null,m(Ht(t)),1),a(`td`,null,m(t.submitter_mobile||`—`),1),a(`td`,null,m(t.files_count),1),a(`td`,null,m(Ut(t.submitted_at)),1),a(`td`,{class:e([`portal-sticky-right-5`,{"admin-total-pending-text":!t.review_fully_completed}])},m(Gt(t)),3),a(`td`,lt,m(t.review_progress),1),a(`td`,ut,m(Kt(t)),1),a(`td`,dt,[t.review_result===`passed`?(h(),o(`span`,ft,`通过`)):t.review_result===`rejected`?(h(),o(`span`,pt,`未通过`)):(h(),o(`span`,mt,`-`))]),a(`td`,null,m(t.review_eligible===!1?`否`:`是`),1),a(`td`,ht,[a(`button`,{type:`button`,class:`btn btn-sm btn-outline-primary`,onClick:e=>cn(t)},`查看`,8,gt)])]))),128))])])]),r(ve,{page:E.page,"per-page":E.perPage,total:E.total,"onUpdate:page":tn,"onUpdate:perPage":nn},null,8,[`page`,`per-page`,`total`]),V.value?(h(),o(`div`,_t,[a(`div`,vt,[a(`div`,yt,[a(`div`,bt,[l[51]||=a(`h5`,{class:`modal-title`},`导出报名材料`,-1),a(`button`,{type:`button`,class:`btn-close`,onClick:l[15]||=e=>V.value=!1})]),a(`div`,xt,[a(`p`,St,`共 `+m(W.value||E.total)+` 份数据,模式:`+m(H.value),1)]),a(`div`,Ct,[a(`button`,{type:`button`,class:`btn btn-light`,onClick:l[16]||=e=>V.value=!1},`取消`),a(`button`,{type:`button`,class:`btn btn-primary`,disabled:U.value,onClick:on},m(U.value?`导出中…`:`开始导出`),9,wt)])])])])):g(``,!0),G.value?(h(),o(`div`,Tt,[a(`div`,Et,[a(`div`,Dt,[l[52]||=a(`div`,{class:`modal-header`},[a(`h5`,{class:`modal-title`},`审核意见`)],-1),a(`div`,Ot,[u(a(`textarea`,{"onUpdate:modelValue":l[17]||=e=>q.value=e,class:`form-control`,rows:`6`},null,512),[[f,q.value]])]),a(`div`,kt,[a(`button`,{type:`button`,class:`btn btn-secondary`,onClick:l[18]||=e=>G.value=!1},`取消`),a(`button`,{type:`button`,class:`btn btn-success`,disabled:J.value,onClick:l[19]||=e=>sn(`passed`)},` 确认通过 `,8,At)])])])])):g(``,!0),K.value?(h(),o(`div`,jt,[a(`div`,Mt,[a(`div`,Nt,[l[53]||=a(`div`,{class:`modal-header`},[a(`h5`,{class:`modal-title`},`审核意见`)],-1),a(`div`,Pt,[u(a(`textarea`,{"onUpdate:modelValue":l[20]||=e=>q.value=e,class:`form-control`,rows:`8`},null,512),[[f,q.value]])]),a(`div`,Ft,[a(`button`,{type:`button`,class:`btn btn-secondary`,onClick:l[21]||=e=>K.value=!1},`取消`),a(`button`,{type:`button`,class:`btn btn-warning text-dark`,disabled:J.value,onClick:l[22]||=e=>sn(`rejected`)},` 确认未通过 `,8,It)])])])])):g(``,!0)]))}});export{x as default}; |