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