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