You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1 line
16 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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-DFPdDGyr.js";import{o as se}from"./competitions-B-kaXeZ_.js";import{n as ce}from"./publicSourceChannels-B0c-JYrL.js";import{r as le}from"./signupChannels-BJYYH5pG.js";import{i as ue,n as de,o as fe}from"./applications-DGPoOeR-.js";import{a as pe,n as me,o as he,t as ge}from"./listPageState-BSDA5803.js";import{n as _e,r as ve,t as y}from"./entryGroups-mdEgVvvl.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={class:`col-md-2`},Me=[`value`],Ne={class:`col-md-2`},Pe=[`value`],Fe={class:`col-12 col-md-auto d-flex gap-2`},Ie={class:`selection-toolbar mt-2`},Le={class:`d-flex flex-wrap align-items-center gap-2`},Re={class:`btn-group btn-group-sm portal-selection-mode-group`,role:`group`},ze={key:0,class:`badge bg-light text-dark ms-1`},Be={key:0,class:`badge bg-light text-dark ms-1`},Ve=[`disabled`],He=[`disabled`],Ue={key:1,class:`dropdown`},We={class:`dropdown-menu dropdown-menu-end`},Ge=[`disabled`],Ke={class:`small text-secondary mb-0 mt-2`},qe={class:`portal-table-scroll table-panel`},Je={class:`table table-hover align-middle mb-0 admin-list-table portal-data-table`},Ye={class:`text-center portal-sticky-left`,style:{width:`2.5rem`}},Xe=[`checked`],Ze={class:`portal-sticky-right-3`},Qe={key:0},$e={key:1},et={class:`text-center portal-sticky-left`},tt=[`checked`,`disabled`,`onChange`],nt={class:`text-secondary`},rt={class:`cell-wrap`},it={class:`cell-wrap`},at={class:`cell-wrap`},ot={class:`cell-wrap`},st={class:`cell-wrap`},ct={class:`cell-wrap`},lt={class:`portal-sticky-right-4`},ut={class:`portal-sticky-right-3`},dt={class:`portal-sticky-right-2`},ft={key:0,class:`admin-manage-status-tag admin-manage-status-pass`},pt={key:1,class:`admin-manage-status-tag admin-manage-status-fail`},mt={key:2},ht={class:`portal-sticky-right-1`},gt=[`onClick`],_t={key:0,class:`modal fade show d-block`,tabindex:`-1`,style:{background:`rgba(0,0,0,.35)`}},vt={class:`modal-dialog modal-dialog-centered`},yt={class:`modal-content`},bt={class:`modal-header`},xt={class:`modal-body`},St={class:`mb-0`},Ct={class:`modal-footer`},wt=[`disabled`],Tt={key:1,class:`modal fade show d-block`,tabindex:`-1`,style:{background:`rgba(0,0,0,.35)`}},Et={class:`modal-dialog modal-dialog-centered modal-lg`},Dt={class:`modal-content`},Ot={class:`modal-body`},kt={class:`modal-footer`},At=[`disabled`],jt={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`},Nt={class:`modal-content`},Pt={class:`modal-body`},Ft={class:`modal-footer`},It=[`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 Lt(){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:``,review_eligible:``,signup_channel_id:``,public_source_channel_id:``}),Rt=_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.review_eligible===`1`&&(t.review_eligible=!0),N.review_eligible===`0`&&(t.review_eligible=!1),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 zt(e){return e.signup_channel?.channel_name||e.signup_channel_code||`—`}function Bt(e){return e.public_source_channel?`${e.public_source_channel.source_name}(${e.public_source_channel.source_code})`:e.public_source_code||`—`}function Vt(e){return e.submitter_name?.trim()||e.submitter_mobile?.trim()||`—`}function Ht(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 Ut(e){return e==null||Number.isNaN(e)?`-`:e.toFixed(2)}function Wt(e){return e.review_fully_completed?e.team_sum==null?`-`:e.team_sum.toFixed(2):`待评审`}function Gt(e){return e.review_fully_completed?Ut(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 Kt=c(()=>F.value===`audit`?`当前勾选用于批量通过/未通过`:`当前勾选用于「导出表格 + 所选附件」,与审核勾选互不影响`);function qt(e){return J.value.includes(e)}let Jt=c(()=>{let e=w.value.filter(q),t=J.value;return e.length>0&&e.every(e=>t.includes(e.id))});function Yt(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 Xt(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 Zt(){P.value=P.value===`desc`?`asc`:`desc`,Z(1)}function Qt(e){Z(e)}function $t(e){T.perPage=e,Z(1)}async function en(){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 fe(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 tn(){N.keyword=``,N.track=``,N.entry_group=y,N.review_result=``,N.review_eligible=``,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 ue(t,{mode:e,...K(T.page),application_ids:e===`selected`?L.value:void 0})).total}catch{V.value=T.total}}}async function nn(){let e=x.value;if(e){B.value=!0;try{await de(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 rn(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 en(),Lt(),await Z(T.page))},{immediate:!0}),(a,s)=>(m(),g(`div`,be,[s[60]||=_(`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[25]||=_(`span`,{class:`small text-secondary text-nowrap`},`参赛组别`,-1),(m(!0),g(d,null,o(r(Rt),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[26]||=_(`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[27]||=[_(`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.review_eligible=e,class:`form-select`},[...s[28]||=[_(`option`,{value:``},`全部(是否参与评审)`,-1),_(`option`,{value:`1`},`参与评审`,-1),_(`option`,{value:`0`},`不参与评审`,-1)]],512),[[h,N.review_eligible]])]),_(`div`,je,[l(_(`select`,{"onUpdate:modelValue":s[7]||=e=>N.signup_channel_id=e,class:`form-select`},[s[29]||=_(`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,Me))),128))],512),[[h,N.signup_channel_id]])]),_(`div`,Ne,[l(_(`select`,{"onUpdate:modelValue":s[8]||=e=>N.public_source_channel_id=e,class:`form-select`},[s[30]||=_(`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,Pe))),128))],512),[[h,N.public_source_channel_id]])]),_(`div`,Fe,[_(`button`,{type:`button`,class:`btn btn-primary px-3`,onClick:s[9]||=e=>Z(1)},`查询`),_(`button`,{type:`button`,class:`btn btn-light border px-3`,onClick:tn},`重置`)])]),_(`div`,Ie,[_(`div`,Le,[s[34]||=_(`span`,{class:`small text-secondary`},`勾选用途:`,-1),_(`div`,Re,[_(`button`,{type:`button`,class:e([`btn`,F.value===`audit`?`btn-primary`:`btn-outline-primary`]),onClick:s[10]||=e=>X(`audit`)},[s[31]||=n(` 审核选择 `,-1),I.value.length?(m(),g(`span`,ze,p(I.value.length),1)):t(``,!0)],2),_(`button`,{type:`button`,class:e([`btn`,F.value===`export`?`btn-primary`:`btn-outline-primary`]),onClick:s[11]||=e=>X(`export`)},[s[32]||=n(` 导出选择 `,-1),L.value.length?(m(),g(`span`,Be,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[12]||=e=>{H.value=!0,W.value=`同意参赛。`}},` 通过 `,8,Ve),_(`button`,{type:`button`,class:`btn btn-sm btn-manage-reject`,disabled:I.value.length===0,onClick:s[13]||=e=>{U.value=!0,W.value=``}},` 未通过 `,8,He)],64)):(m(),g(`div`,Ue,[s[33]||=_(`button`,{class:`btn btn-primary btn-sm dropdown-toggle`,type:`button`,"data-bs-toggle":`dropdown`},` 导出 `,-1),_(`ul`,We,[_(`li`,null,[_(`button`,{class:`dropdown-item`,type:`button`,onClick:s[14]||=e=>Q(`xlsx`)},`仅导出表格`)]),_(`li`,null,[_(`button`,{class:`dropdown-item`,type:`button`,disabled:L.value.length===0,onClick:s[15]||=e=>Q(`selected`)},` 导出表格 + 所选附件 `,8,Ge)]),_(`li`,null,[_(`button`,{class:`dropdown-item`,type:`button`,onClick:s[16]||=e=>Q(`all`)},`导出表格 + 全部附件`)])])]))]),_(`p`,Ke,p(Kt.value),1)])]),_(`div`,qe,[_(`table`,Je,[_(`thead`,null,[_(`tr`,null,[_(`th`,Ye,[(m(),g(`input`,{key:`select-all-${F.value}-${T.page}`,class:`form-check-input`,type:`checkbox`,checked:Jt.value,"aria-label":`全选本页`,onChange:Yt},null,40,Xe))]),s[35]||=_(`th`,{style:{width:`3rem`}},`序号`,-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`,null,`附件`,-1),s[49]||=_(`th`,null,`提交时间`,-1),s[50]||=_(`th`,{class:`portal-sticky-right-5`},`总分`,-1),s[51]||=_(`th`,{class:`portal-sticky-right-4`},`进程`,-1),_(`th`,Ze,[_(`button`,{type:`button`,class:`btn btn-link btn-sm p-0 text-decoration-none`,onClick:Zt},` 平均分 `+p(P.value===`desc`?`↓`:`↑`),1)]),s[52]||=_(`th`,{class:`portal-sticky-right-2`},`状态`,-1),s[53]||=_(`th`,null,`是否参与评审`,-1),s[54]||=_(`th`,{class:`portal-sticky-right-1`},`操作`,-1)])]),_(`tbody`,null,[C.value?(m(),g(`tr`,Qe,[...s[55]||=[_(`td`,{colspan:`22`,class:`text-center py-4 text-secondary`},`加载中…`,-1)]])):w.value.length===0?(m(),g(`tr`,$e,[...s[56]||=[_(`td`,{colspan:`22`,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`,et,[(m(),g(`input`,{key:`${F.value}-${T.page}-${t.id}`,class:`form-check-input`,type:`checkbox`,checked:qt(t.id),disabled:!q(t),onChange:e=>Xt(t.id,t,e)},null,40,tt))]),_(`td`,nt,p((T.page-1)*T.perPage+n+1),1),_(`td`,null,p(t.project_code),1),_(`td`,rt,p(t.project_name),1),_(`td`,null,p(t.player_name),1),_(`td`,it,p(t.school||`—`),1),_(`td`,null,p(t.entry_group||`—`),1),_(`td`,at,p(t.track_title),1),_(`td`,ot,p(zt(t)),1),_(`td`,st,p(t.recommend||`—`),1),_(`td`,null,p(t.contact_mobile||`—`),1),_(`td`,null,p(Vt(t)),1),_(`td`,null,p(t.submitter_mobile||`—`),1),_(`td`,ct,p(Bt(t)),1),_(`td`,null,p(t.files_count),1),_(`td`,null,p(Ht(t.submitted_at)),1),_(`td`,{class:e([`portal-sticky-right-5`,{"admin-total-pending-text":!t.review_fully_completed}])},p(Wt(t)),3),_(`td`,lt,p(t.review_progress),1),_(`td`,ut,p(Gt(t)),1),_(`td`,dt,[t.review_result===`passed`?(m(),g(`span`,ft,`通过`)):t.review_result===`rejected`?(m(),g(`span`,pt,`未通过`)):(m(),g(`span`,mt,`-`))]),_(`td`,null,p(t.review_eligible===!1?`否`:`是`),1),_(`td`,ht,[_(`button`,{type:`button`,class:`btn btn-sm btn-outline-primary`,onClick:e=>rn(t)},`查看`,8,gt)])]))),128))])])]),i(ve,{page:T.page,"per-page":T.perPage,total:T.total,"onUpdate:page":Qt,"onUpdate:perPage":$t},null,8,[`page`,`per-page`,`total`]),R.value?(m(),g(`div`,_t,[_(`div`,vt,[_(`div`,yt,[_(`div`,bt,[s[57]||=_(`h5`,{class:`modal-title`},`导出报名材料`,-1),_(`button`,{type:`button`,class:`btn-close`,onClick:s[17]||=e=>R.value=!1})]),_(`div`,xt,[_(`p`,St,`共 `+p(V.value||T.total)+` 份数据,模式:`+p(z.value),1)]),_(`div`,Ct,[_(`button`,{type:`button`,class:`btn btn-light`,onClick:s[18]||=e=>R.value=!1},`取消`),_(`button`,{type:`button`,class:`btn btn-primary`,disabled:B.value,onClick:nn},p(B.value?`导出中…`:`开始导出`),9,wt)])])])])):t(``,!0),H.value?(m(),g(`div`,Tt,[_(`div`,Et,[_(`div`,Dt,[s[58]||=_(`div`,{class:`modal-header`},[_(`h5`,{class:`modal-title`},`审核意见`)],-1),_(`div`,Ot,[l(_(`textarea`,{"onUpdate:modelValue":s[19]||=e=>W.value=e,class:`form-control`,rows:`6`},null,512),[[u,W.value]])]),_(`div`,kt,[_(`button`,{type:`button`,class:`btn btn-secondary`,onClick:s[20]||=e=>H.value=!1},`取消`),_(`button`,{type:`button`,class:`btn btn-success`,disabled:G.value,onClick:s[21]||=e=>$(`passed`)},` 确认通过 `,8,At)])])])])):t(``,!0),U.value?(m(),g(`div`,jt,[_(`div`,Mt,[_(`div`,Nt,[s[59]||=_(`div`,{class:`modal-header`},[_(`h5`,{class:`modal-title`},`审核意见`)],-1),_(`div`,Pt,[l(_(`textarea`,{"onUpdate:modelValue":s[22]||=e=>W.value=e,class:`form-control`,rows:`8`},null,512),[[u,W.value]])]),_(`div`,Ft,[_(`button`,{type:`button`,class:`btn btn-secondary`,onClick:s[23]||=e=>U.value=!1},`取消`),_(`button`,{type:`button`,class:`btn btn-warning text-dark`,disabled:G.value,onClick:s[24]||=e=>$(`rejected`)},` 确认未通过 `,8,It)])])])])):t(``,!0)]))}});export{b as default};