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