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
9.5 KiB

import{r as e}from"./rolldown-runtime-BYbx6iT9.js";import{$t as t,C as n,D as r,Et as ee,O as i,Q as te,S as ne,Y as a,Z as o,_t as s,at as c,b as l,ct as u,g as d,in as f,k as p,q as m,st as h,w as g,x as _}from"./vue.runtime.esm-bundler-OsdSFvn7.js";import{b as v,d as y,f as b,i as x}from"./index-BXj425qm.js";import{t as S}from"./_plugin-vue_export-helper-CXTkFu_Z.js";import{o as C}from"./competitions--jOaif9I.js";import{t as w}from"./adminCompetition-CUh3Du09.js";async function T(e){let{data:t}=await x.post(`/reviewers`,e),n=t?.data??t;if(!n||typeof n!=`object`)throw Error(`创建响应无效`);return n}async function E(e,t){let{data:n}=await x.patch(`/reviewers/${e}`,t),r=n?.data??n;if(!r||typeof r!=`object`)throw Error(`更新响应无效`);return r}async function re(e){await x.post(`/reviewers/${e}/delete`)}function D(e){if(!e||typeof e!=`object`)throw Error(`列表响应格式无效`);let t=e;if(Array.isArray(t.data)&&typeof t.current_page==`number`){let e=t.data;return{data:e,meta:{current_page:t.current_page,last_page:typeof t.last_page==`number`?t.last_page:1,per_page:typeof t.per_page==`number`?t.per_page:e.length||15,total:typeof t.total==`number`?t.total:e.length}}}throw Error(`列表响应格式无效`)}async function ie(e){let{data:t}=await x.get(`/reviewer-scopes`,{params:e});return D(t)}async function O(e){let{data:t}=await x.get(`/competitions/${e}/reviewer-scope-track-counts`),n=t?.data??t;return!n||typeof n!=`object`?{}:n}async function ae(e){let{data:t}=await x.post(`/reviewer-scopes`,e),n=t?.data??t;if(!n||typeof n!=`object`)throw Error(`创建响应无效`);return n}async function oe(e){await x.post(`/reviewer-scopes/${e}/delete`)}var se={class:`proto-reviewer-page admin-desktop-page`},ce={key:1,class:`reviewer-manage-shell`},le={class:`reviewer-track-panel`},ue={class:`reviewer-track-tabs`},k=[`onClick`],A={class:`reviewer-track-tab-name`},j={class:`reviewer-track-tab-count`},M={class:`reviewer-editor-panel`},N={class:`reviewer-editor-head`},P={class:`reviewer-track-title`},F={class:`reviewer-track-meta mb-0`},I={class:`reviewer-editor-actions`},L=[`disabled`],R={class:`table-responsive`},z={key:0,class:`table table-sm align-middle mb-0 reviewer-manage-table`},B={class:`text-end reviewer-row-actions`},V=[`onClick`],H=[`onClick`],U={key:1,class:`empty-hint`},W=p({__name:`ReviewerManageView`,setup(e){let{selectedCompetitionId:p}=v(w()),x=s([]),S=s({}),D=s(null),W=s([]),G=s(!1),K=s(!1),q=s(!1),J=s(`create`),Y=s(!1),X=s(null),Z=s(),Q=s({name:``,mobile:``,username:``,password:``}),de={name:[{required:!0,message:`请填写姓名`,trigger:`blur`}],username:[{required:!0,message:`请填写账户`,trigger:`blur`},{pattern:/^[A-Za-z0-9._-]+$/,message:`仅字母、数字、点、横线或下划线`,trigger:`blur`}],password:[{validator:(e,t,n)=>{if(J.value===`create`&&(!t||String(t).trim()===``)){n(Error(`请填写密码`));return}if(t&&String(t).trim().length>0&&String(t).length<6){n(Error(`密码不少于 6 位`));return}n()},trigger:`blur`}]},fe=l(()=>x.value.find(e=>e.track_code===D.value)?.title??``),pe=l(()=>`已配置 ${D.value?S.value[D.value]??0:0} 名评审员`);async function me(){let e=p.value;if(G.value=!0,!e){x.value=[],S.value={},D.value=null,G.value=!1;return}try{if(x.value=(await C(e)).filter(e=>e.is_enabled).sort((e,t)=>e.sort-t.sort),!x.value.length){D.value=null,S.value={};return}(!D.value||!x.value.some(e=>e.track_code===D.value))&&(D.value=x.value[0]?.track_code??null),S.value=await O(e)}catch(e){x.value=[],b.warning(e instanceof Error?e.message:`赛道加载失败`)}finally{G.value=!1}}async function $(){let e=p.value,t=D.value;if(!e||!t){W.value=[];return}K.value=!0;try{W.value=(await ie({competition_id:e,track_code:t,page:1,per_page:500})).data,S.value=await O(e)}catch(e){W.value=[],b.error(e instanceof Error?e.message:`加载失败`)}finally{K.value=!1}}function he(e){D.value=e}c(p,()=>{D.value=null,me().then(()=>$())},{immediate:!0}),c(D,()=>{$()});function ge(e){return e.reviewer?.password_display??`—`}function _e(e){let t=e.reviewer?.mobile;return t&&String(t).trim()!==``?Stri