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