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