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

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