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

1 month ago
import{$t as e,C as t,D as n,Et as r,O as i,Q as ee,S as te,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-6_koQ1g6.js";import{u as v}from"./api-DouN6RcT.js";import{E as y,O as b,T as x,b as S,g as C,l as w,o as T,r as E,s as D,u as O,v as k}from"./index-BL8ZPRcX.js";import{t as A}from"./_plugin-vue_export-helper-S3RvzygF.js";import{o as j}from"./competitions-BP5gfno4.js";import{t as M}from"./adminCompetition-CkfrtkaD.js";async function N(e){if(v())return T(e);let{data:t}=await E.post(`/reviewers`,e),n=t?.data??t;if(!n||typeof n!=`object`)throw Error(`创建响应无效`);return n}async function ne(e,t){if(v())return S(e,t);let{data:n}=await E.put(`/reviewers/${e}`,t),r=n?.data??n;if(!r||typeof r!=`object`)throw Error(`更新响应无效`);return r}async function re(e){if(v()){w(e);return}await E.delete(`/reviewers/${e}`)}function P(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){if(v())return C(e);let{data:t}=await E.get(`/reviewer-scopes`,{params:e});return P(t)}async function F(e){if(v())return k(e);let{data:t}=await E.get(`/competitions/${e}/reviewer-scope-track-counts`),n=t?.data??t;return!n||typeof n!=`object`?{}:n}async function ae(e){if(v())return D(e);let{data:t}=await E.post(`/reviewer-scopes`,e),n=t?.data??t;if(!n||typeof n!=`object`)throw Error(`创建响应无效`);return n}async function oe(e){if(v()){O(e);return}await E.delete(`/reviewer-scopes/${e}`)}var I={class:`proto-reviewer-page admin-desktop-page`},L={key:1,class:`reviewer-manage-shell`},R={class:`reviewer-track-panel`},z={class:`reviewer-track-tabs`},B=[`onClick`],V={class:`reviewer-track-tab-name`},H={class:`reviewer-track-tab-count`},U={class:`reviewer-editor-panel`},W={class:`reviewer-editor-head`},G={class:`reviewer-track-title`},K={class:`reviewer-track-meta mb-0`},q={class:`reviewer-editor-actions`},se=[`disabled`],ce={class:`table-responsive`},le={key:0,class:`table table-sm align-middle mb-0 reviewer-manage-table`},ue={class:`text-end reviewer-row-actions`},de=[`onClick`],fe=[`onClick`],pe={key:1,class:`empty-hint`},me={class:`footnote`},J=A(p({__name:`ReviewerManageView`,setup(p){let S=l(()=>v()),{selectedCompetitionId:C}=b(M()),w=s([]),T=s({}),E=s(null),D=s([]),O=s(!1),k=s(!1),A=s(!1),P=s(`create`),J=s(!1),Y=s(null),X=s(),Z=s({name:``,mobile:``,username:``,password:``}),he={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(P.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`}]},ge=l(()=>w.value.find(e=>e.track_code===E.value)?.title??``),_e=l(()=>`已配置 ${E.value?T.value[E.value]??0:0} 名评审员`);async function Q(){let e=C.value;if(O.value=!0,!e){w.value=[],T.value={},E.value=null,O.value=!1;return}try{if(w.value=(await j(e)).filter(e=>e.is_enabled).sort((e,t)=>e.sort-t.sort),!w.value.length){E.value=null,T.value={};return}(!E.value||!w.value.some(e=>e.track_code===E.value))&&(E.value=w.value[0]?.track_code??null),T.value=await F(e)}catch(e){w.value=[],y.warning(e instanceof Error?e.message:`赛道加载失败`)}finally{O.value=!1}}async function $(){let e=C.value,t=E.value;if(!e||!t){D.value=[];return}k.value=!0;try{D.value=(await ie({competition_id:e,track_code:t,page:1,per_page:500})).data,T.value=await F(e)}catch(e){D.value=[],y.error(e instanceof Error?e.message:`加载失败`)}finally{k.value=!1}}function ve(e){E.value=e}c(C,()