From 483c582251a3a100b23776c174bae4631d7e36a4 Mon Sep 17 00:00:00 2001 From: lion <120344285@qq.com> Date: Fri, 14 Aug 2026 13:07:17 +0800 Subject: [PATCH] daochu --- app/Services/AdminApplicationExportService.php | 2 +- ...shboardView-BG3HrDLL.js => AdminDashboardView-BgnRab08.js} | 2 +- .../{AdminLayout-BTI5o2eW.js => AdminLayout-uoOYnl4f.js} | 2 +- ...{AdminLoginView-CVL7subl.js => AdminLoginView-BFANHawE.js} | 2 +- ...ManageView-DOiTsZGK.js => AdminUserManageView-CL5A4h3-.js} | 2 +- .../assets/{ApplyView-C88S5zde.js => ApplyView-C6M85uKr.js} | 2 +- ...onFormView-CE6wqRFe.js => CompetitionFormView-B35kaWp1.js} | 2 +- ...onListView-CYZHzCBd.js => CompetitionListView-CZtFbhx_.js} | 2 +- ...Layout-RtEzZeOT.js => CompetitionManageLayout-B4taBN2o.js} | 2 +- .../assets/{LoginView-B8c0Fe-9.js => LoginView-DcN2H63N.js} | 2 +- .../assets/{MainLayout-Diabeczz.js => MainLayout-lHj0rP5r.js} | 2 +- ...hboardView-BvyKsQMW.js => ManageDashboardView-cjRK_yIm.js} | 2 +- ...anageLoginView-CCm4mhLJ.js => ManageLoginView-DqZvJ9dh.js} | 2 +- ...ilView-Ck2cINDy.js => ManageProjectDetailView-B3JD_oG2.js} | 2 +- ...View-B8Hb1J0O.css => ManageProjectDetailView-BUKHgQzN.css} | 2 +- public/admin/assets/ManageProjectsView-D0-WoO2G.js | 1 - public/admin/assets/ManageProjectsView-DHJkJNz3.js | 1 + ...iewersView-KhNc4lcH.js => ManageReviewersView-1PCsDj4N.js} | 2 +- ...5jFxZk8.js => ParticipantImpersonateEntryView-DKiE569p.js} | 2 +- ...ingView-DPqAhu6F.js => ParticipantLandingView-Z99ohwU5.js} | 2 +- ...-BxfNT_cP.js => PublicSourceChannelManageView-B1RkKHAq.js} | 2 +- ...iewPortalView-Dwc-2Vuk.js => ReviewPortalView-BDmXNaoO.js} | 2 +- ...-C_C2VT7j.js => ReviewerApplicationDetailView-CmzDBsR6.js} | 2 +- ...{ReviewerLayout-B1QWLigA.js => ReviewerLayout-BgI2L8Cl.js} | 2 +- ...werLoginView-vNgYiK9E.js => ReviewerLoginView-CX0DhvO5.js} | 2 +- ...rManageView-D2W38ovd.js => ReviewerManageView-DQKBYPkH.js} | 2 +- ...jectsView-Ncr8FbkS.js => ReviewerProjectsView-Dxe9Gm-T.js} | 2 +- ...inCompetition-m6obxaBw.js => adminCompetition-DfRlbUCX.js} | 2 +- .../{applications-DrpsfVEd.js => applications-Dl5PbiPv.js} | 2 +- public/admin/assets/{auth-CW8ToWeP.js => auth-Cjgu0CU4.js} | 2 +- .../{competitions-BSJLYyM3.js => competitions-DP_OWCTo.js} | 2 +- ...nloadFeedback-aIJlOgpJ.js => downloadFeedback-CVNWp7w4.js} | 2 +- public/admin/assets/{index-DAT5gpOZ.js => index-t7bgup9e.js} | 4 ++-- ...eChannels-COAaqE-_.js => publicSourceChannels-DRre41RG.js} | 2 +- ...{signupChannels-DsI7Cu8M.js => signupChannels-CGEQ38uA.js} | 2 +- public/admin/index.html | 2 +- tests/Feature/AdminApplicationExportTest.php | 2 +- 37 files changed, 37 insertions(+), 37 deletions(-) rename public/admin/assets/{AdminDashboardView-BG3HrDLL.js => AdminDashboardView-BgnRab08.js} (97%) rename public/admin/assets/{AdminLayout-BTI5o2eW.js => AdminLayout-uoOYnl4f.js} (95%) rename public/admin/assets/{AdminLoginView-CVL7subl.js => AdminLoginView-BFANHawE.js} (91%) rename public/admin/assets/{AdminUserManageView-DOiTsZGK.js => AdminUserManageView-CL5A4h3-.js} (98%) rename public/admin/assets/{ApplyView-C88S5zde.js => ApplyView-C6M85uKr.js} (99%) rename public/admin/assets/{CompetitionFormView-CE6wqRFe.js => CompetitionFormView-B35kaWp1.js} (99%) rename public/admin/assets/{CompetitionListView-CYZHzCBd.js => CompetitionListView-CZtFbhx_.js} (91%) rename public/admin/assets/{CompetitionManageLayout-RtEzZeOT.js => CompetitionManageLayout-B4taBN2o.js} (95%) rename public/admin/assets/{LoginView-B8c0Fe-9.js => LoginView-DcN2H63N.js} (99%) rename public/admin/assets/{MainLayout-Diabeczz.js => MainLayout-lHj0rP5r.js} (97%) rename public/admin/assets/{ManageDashboardView-BvyKsQMW.js => ManageDashboardView-cjRK_yIm.js} (98%) rename public/admin/assets/{ManageLoginView-CCm4mhLJ.js => ManageLoginView-DqZvJ9dh.js} (97%) rename public/admin/assets/{ManageProjectDetailView-Ck2cINDy.js => ManageProjectDetailView-B3JD_oG2.js} (54%) rename public/admin/assets/{ManageProjectDetailView-B8Hb1J0O.css => ManageProjectDetailView-BUKHgQzN.css} (52%) delete mode 100644 public/admin/assets/ManageProjectsView-D0-WoO2G.js create mode 100644 public/admin/assets/ManageProjectsView-DHJkJNz3.js rename public/admin/assets/{ManageReviewersView-KhNc4lcH.js => ManageReviewersView-1PCsDj4N.js} (69%) rename public/admin/assets/{ParticipantImpersonateEntryView-B5jFxZk8.js => ParticipantImpersonateEntryView-DKiE569p.js} (91%) rename public/admin/assets/{ParticipantLandingView-DPqAhu6F.js => ParticipantLandingView-Z99ohwU5.js} (93%) rename public/admin/assets/{PublicSourceChannelManageView-BxfNT_cP.js => PublicSourceChannelManageView-B1RkKHAq.js} (99%) rename public/admin/assets/{ReviewPortalView-Dwc-2Vuk.js => ReviewPortalView-BDmXNaoO.js} (94%) rename public/admin/assets/{ReviewerApplicationDetailView-C_C2VT7j.js => ReviewerApplicationDetailView-CmzDBsR6.js} (98%) rename public/admin/assets/{ReviewerLayout-B1QWLigA.js => ReviewerLayout-BgI2L8Cl.js} (98%) rename public/admin/assets/{ReviewerLoginView-vNgYiK9E.js => ReviewerLoginView-CX0DhvO5.js} (98%) rename public/admin/assets/{ReviewerManageView-D2W38ovd.js => ReviewerManageView-DQKBYPkH.js} (97%) rename public/admin/assets/{ReviewerProjectsView-Ncr8FbkS.js => ReviewerProjectsView-Dxe9Gm-T.js} (97%) rename public/admin/assets/{adminCompetition-m6obxaBw.js => adminCompetition-DfRlbUCX.js} (86%) rename public/admin/assets/{applications-DrpsfVEd.js => applications-Dl5PbiPv.js} (96%) rename public/admin/assets/{auth-CW8ToWeP.js => auth-Cjgu0CU4.js} (91%) rename public/admin/assets/{competitions-BSJLYyM3.js => competitions-DP_OWCTo.js} (94%) rename public/admin/assets/{downloadFeedback-aIJlOgpJ.js => downloadFeedback-CVNWp7w4.js} (86%) rename public/admin/assets/{index-DAT5gpOZ.js => index-t7bgup9e.js} (99%) rename public/admin/assets/{publicSourceChannels-COAaqE-_.js => publicSourceChannels-DRre41RG.js} (82%) rename public/admin/assets/{signupChannels-DsI7Cu8M.js => signupChannels-CGEQ38uA.js} (85%) diff --git a/app/Services/AdminApplicationExportService.php b/app/Services/AdminApplicationExportService.php index d2d6784..d7f6e3a 100644 --- a/app/Services/AdminApplicationExportService.php +++ b/app/Services/AdminApplicationExportService.php @@ -446,7 +446,7 @@ class AdminApplicationExportService $teamSum = $numericScores === [] ? null : array_sum($numericScores); $teamAvg = $numericScores === [] ? null : ($teamSum / count($numericScores)); $totalCell = $fullyCompleted ? $this->formatExportScore($teamSum) : '待评审'; - $avgCell = $fullyCompleted ? $this->formatExportScore($teamAvg) : '-'; + $avgCell = $teamAvg === null ? '-' : $this->formatExportScore($teamAvg); $scoreDetails = collect($trackReviewers) ->map(function (array $reviewer) use ($scoresByReviewerId): string { diff --git a/public/admin/assets/AdminDashboardView-BG3HrDLL.js b/public/admin/assets/AdminDashboardView-BgnRab08.js similarity index 97% rename from public/admin/assets/AdminDashboardView-BG3HrDLL.js rename to public/admin/assets/AdminDashboardView-BgnRab08.js index fbd91e8..e6228b8 100644 --- a/public/admin/assets/AdminDashboardView-BG3HrDLL.js +++ b/public/admin/assets/AdminDashboardView-BgnRab08.js @@ -1 +1 @@ -import{C as e,D as t,Et as n,O as r,Q as ee,S as i,W as te,Y as a,Z as o,_t as s,at as c,b as l,ct as ne,g as u,in as d,k as f,q as p,st as m,w as h,x as g}from"./vue.runtime.esm-bundler-OsdSFvn7.js";import{b as _,f as v,i as y}from"./index-DAT5gpOZ.js";import{t as b}from"./_plugin-vue_export-helper-CXTkFu_Z.js";import{a as x}from"./competitions-BSJLYyM3.js";import{t as re}from"./adminCompetition-m6obxaBw.js";import{t as ie}from"./competitionAdminLabels-v0rVrY9u.js";import{t as ae}from"./datetimeShanghai-D1tceWM9.js";async function S(e){let{data:t}=await y.get(`/competitions/${e}/dashboard`);if(!t||typeof t!=`object`)throw Error(`首页统计响应无效`);return t}var C={class:`dashboard`},w={class:`dashboard-head`},oe={class:`meta-line`},se={class:`time-line`},ce={class:`head-actions`},le={class:`metric-grid`,"aria-label":`核心指标`},ue={class:`metric-label`},T={class:`metric-value`},E={class:`metric-hint`},D={class:`main-grid`},O={class:`panel`},k={class:`setup-list`},A={class:`setup-copy`},j={class:`panel`},M={class:`progress-kpis`},N={class:`main-grid main-grid--wide`},P={class:`panel`},F={class:`panel-head`},I={class:`panel-subtitle`},L={class:`panel`},R={class:`shortcut-list`},z=[`href`],de={key:1,class:`shortcut shortcut-button`,type:`button`,disabled:``},B={class:`panel`},V=b(f({__name:`AdminDashboardView`,setup(f){let y=re(),{competitions:b,selectedCompetitionId:V}=_(y),H=s(!1),U=s(null),fe=[{key:`published`,label:`赛事发布`,description:`对外报名和评审入口依赖发布状态`,routeName:`admin-competition-workspace`},{key:`signup_form_schema`,label:`报名表单`,description:`选手报名字段由 Schema 渲染`,routeName:`admin-competition-workspace`},{key:`tracks`,label:`赛道配置`,description:`评审范围和报名分组按赛道隔离`,routeName:`admin-competition-workspace`},{key:`pledge`,label:`承诺书`,description:`提交报名时需要签署的赛事文本`,routeName:`admin-competition-workspace`},{key:`review_form_schema`,label:`评审表单`,description:`未配置时评审端将使用系统默认表单`,routeName:`admin-competition-workspace`},{key:`reviewer_scopes`,label:`评审范围`,description:`评审员必须绑定赛事和赛道后才能看到项目`,routeName:`admin-reviewers-list`}],W=l(()=>U.value?.summary??null),G=l(()=>U.value?.competition??null),pe=l(()=>{let e=G.value;if(!e)return`未选择赛事`;let t=Date.now(),n=e.signup_open_at?new Date(e.signup_open_at).getTime():null,r=e.signup_close_at?new Date(e.signup_close_at).getTime():null;return e.published?n&&tr?e.status===`reviewing`?`评审中`:`报名已截止`:e.status===`reviewing`?`评审中`:e.status===`ended`?`已结束`:`报名中`:`未发布`}),me=l(()=>{let e=W.value;return[{label:`报名总数`,value:e?.applications_total??0,hint:`含草稿和已提交`},{label:`已提交`,value:e?.applications_submitted??0,hint:`可进入评审范围`},{label:`草稿`,value:e?.applications_draft??0,hint:`选手尚未正式提交`},{label:`待评项目`,value:e?.applications_pending_review??0,hint:`参与评审且暂无评分`},{label:`已评项目`,value:e?.applications_reviewed??0,hint:`至少已有一条评分`},{label:`评审记录`,value:e?.review_scores_total??0,hint:`累计提交评分数`}]}),he=l(()=>{let e=W.value;return!e||e.applications_submitted===0?0:Math.round(e.applications_reviewed/e.applications_submitted*100)}),K=l(()=>`/admin/`.endsWith(`/`)?`/admin/`.slice(0,-1):`/admin/`),q=l(()=>{let e=G.value?.slug;return e?`${K.value}/c/${encodeURIComponent(e)}/apply`:``}),J=l(()=>{let e=G.value?.slug;return e?`${K.value}/c/${encodeURIComponent(e)}/review`:``}),Y=l(()=>{let e=G.value?.slug;return e?`${K.value}/c/${encodeURIComponent(e)}/manage`:``});async function ge(){if(b.value.length>0)return;let e=await x({page:1,per_page:100});y.setCompetitionList(e.data)}async function X(){H.value=!0;try{await ge();let e=V.value;if(!e){U.value=null;return}U.value=await S(e)}catch(e){U.value=null,v.error(e instanceof Error?e.message:`首页数据加载失败`)}finally{H.value=!1}}function Z(e){return e?ae(e,`未配置`):`未配置`}function Q(e){return e===`submitted`||e===`published`||e===`signup_open`?`success`:e===`draft`?`info`:e===`reviewing`?`primary`:e===`signup_closed`||e===`ended`?`warning`:`info`}function _e(e){return e===`submitted`?`已提交`:e===`draft`?`草稿`:e}async function $(e){if(e)try{await navigator.clipboard.writeText(`${window.location.origin}${e}`),v.success(`已复制完整链接`)}catch{v.error(`复制失败,请手动选择文本`)}}return c(V,()=>{X()}),te(()=>{X()}),(te,s)=>{let c=o(`el-tag`),l=o(`el-button`),f=o(`RouterLink`),_=o(`el-progress`),v=o(`el-table-column`),y=o(`el-table`),b=o(`el-empty`),x=ee(`loading`);return ne((p(),h(`div`,C,[U.value&&G.value?(p(),h(u,{key:0},[g(`section`,w,[g(`div`,null,[s[3]||=g(`div`,{class:`eyebrow`},`运营工作台`,-1),g(`h1`,null,d(G.value.name),1),g(`div`,oe,[r(c,{type:Q(G.value.status),effect:`plain`},{default:m(()=>[t(d(n(ie)(G.value.status)),1)]),_:1},8,[`type`]),r(c,{type:G.value.published?`success`:`info`,effect:`plain`},{default:m(()=>[t(d(G.value.published?`已发布`:`未发布`),1)]),_:1},8,[`type`]),g(`span`,null,`当前阶段:`+d(pe.value),1),g(`span`,null,`slug:`+d(G.value.slug),1)]),g(`div`,se,[g(`span`,null,`报名开始:`+d(Z(G.value.signup_open_at)),1),g(`span`,null,`报名截止:`+d(Z(G.value.signup_close_at)),1)])]),g(`div`,ce,[r(f,{to:{name:`admin-competition-workspace`}},{default:m(()=>[r(l,{type:`danger`},{default:m(()=>[...s[4]||=[t(`赛事配置`,-1)]]),_:1})]),_:1}),r(f,{to:{name:`admin-competitions-list`}},{default:m(()=>[r(l,null,{default:m(()=>[...s[5]||=[t(`赛事列表`,-1)]]),_:1})]),_:1})])]),g(`section`,le,[(p(!0),h(u,null,a(me.value,e=>(p(),h(`div`,{key:e.label,class:`metric-card`},[g(`div`,ue,d(e.label),1),g(`div`,T,d(e.value),1),g(`div`,E,d(e.hint),1)]))),128))]),g(`section`,D,[g(`div`,O,[s[7]||=g(`div`,{class:`panel-head`},[g(`h2`,null,`配置完整度`),g(`span`,{class:`panel-subtitle`},`影响报名、提交和评审流转`)],-1),g(`div`,k,[(p(),h(u,null,a(fe,e=>g(`div`,{key:e.key,class:`setup-row`},[r(c,{type:U.value.setup[e.key]?`success`:e.key===`review_form_schema`?`warning`:`danger`,effect:`plain`,size:`small`},{default:m(()=>[t(d(U.value.setup[e.key]?`已完成`:e.key===`review_form_schema`?`默认`:`待处理`),1)]),_:2},1032,[`type`]),g(`div`,A,[g(`strong`,null,d(e.label),1),g(`span`,null,d(e.description),1)]),r(f,{to:{name:e.routeName}},{default:m(()=>[r(l,{link:``,type:`danger`},{default:m(()=>[...s[6]||=[t(`处理`,-1)]]),_:1})]),_:1},8,[`to`])])),64))])]),g(`div`,j,[s[13]||=g(`div`,{class:`panel-head`},[g(`h2`,null,`评审进度`),g(`span`,{class:`panel-subtitle`},`仅统计已提交报名`)],-1),r(_,{percentage:he.value,"stroke-width":12,"show-text":!1},null,8,[`percentage`]),g(`div`,M,[g(`div`,null,[g(`strong`,null,d(W.value?.applications_reviewed??0),1),s[8]||=g(`span`,null,`已评项目`,-1)]),g(`div`,null,[g(`strong`,null,d(W.value?.applications_pending_review??0),1),s[9]||=g(`span`,null,`待评项目`,-1)]),g(`div`,null,[g(`strong`,null,d(W.value?.reviewers_active??0)+`/`+d(W.value?.reviewers_total??0),1),s[10]||=g(`span`,null,`启用评审员`,-1)]),g(`div`,null,[g(`strong`,null,d(W.value?.reviewer_scopes_total??0),1),s[11]||=g(`span`,null,`评审范围`,-1)])]),r(f,{to:{name:`admin-reviewers-list`}},{default:m(()=>[r(l,{type:`danger`,plain:``},{default:m(()=>[...s[12]||=[t(`管理评审员与范围`,-1)]]),_:1})]),_:1})])]),g(`section`,N,[g(`div`,P,[g(`div`,F,[s[14]||=g(`h2`,null,`赛道分布`,-1),g(`span`,I,` 已启用 `+d(W.value?.tracks_enabled??0)+` / `+d(W.value?.tracks_total??0),1)]),r(y,{data:U.value.track_stats,stripe:``,style:{width:`100%`}},{empty:m(()=>[...s[15]||=[g(`span`,{class:`muted`},`暂无赛道,请进入赛事配置维护。`,-1)]]),default:m(()=>[r(v,{prop:`track_title`,label:`赛道`,"min-width":`150`,"show-overflow-tooltip":``}),r(v,{prop:`track_code`,label:`代码`,"min-width":`100`,"show-overflow-tooltip":``}),r(v,{label:`状态`,width:`90`},{default:m(({row:e})=>[r(c,{type:e.is_enabled?`success`:`info`,size:`small`,effect:`plain`},{default:m(()=>[t(d(e.is_enabled?`启用`:`停用`),1)]),_:2},1032,[`type`])]),_:1}),r(v,{prop:`applications_count`,label:`报名`,width:`90`}),r(v,{prop:`submitted_count`,label:`已提交`,width:`90`}),r(v,{prop:`reviewer_scope_count`,label:`评审范围`,width:`100`})]),_:1},8,[`data`])]),g(`div`,L,[s[23]||=g(`div`,{class:`panel-head`},[g(`h2`,null,`常用入口`),g(`span`,{class:`panel-subtitle`},`按当前赛事生成`)],-1),g(`div`,R,[r(f,{to:{name:`admin-competition-workspace`},class:`shortcut`},{default:m(()=>[...s[16]||=[g(`strong`,null,`报名列表与赛事配置`,-1),g(`span`,null,`查看报名详情、附件、分数和赛事设置`,-1)]]),_:1}),r(f,{to:{name:`admin-public-source-channels`},class:`shortcut`},{default:m(()=>[...s[17]||=[g(`strong`,null,`公开来源渠道`,-1),g(`span`,null,`生成首页入口链接和来源归因`,-1)]]),_:1}),g(`button`,{class:`shortcut shortcut-button`,type:`button`,onClick:s[0]||=e=>$(q.value)},[s[18]||=g(`strong`,null,`复制报名链接`,-1),g(`span`,null,d(q.value||`当前赛事暂无 slug`),1)]),g(`button`,{class:`shortcut shortcut-button`,type:`button`,onClick:s[1]||=e=>$(J.value)},[s[19]||=g(`strong`,null,`复制评审链接`,-1),g(`span`,null,d(J.value||`当前赛事暂无 slug`),1)]),Y.value?(p(),h(`a`,{key:0,class:`shortcut`,href:Y.value,target:`_blank`,rel:`noopener noreferrer`},[s[20]||=g(`strong`,null,`打开项目管理端`,-1),g(`span`,null,d(Y.value),1)],8,z)):(p(),h(`button`,de,[...s[21]||=[g(`strong`,null,`打开项目管理端`,-1),g(`span`,null,`当前赛事暂无 slug`,-1)]])),g(`button`,{class:`shortcut shortcut-button`,type:`button`,onClick:s[2]||=e=>$(Y.value)},[s[22]||=g(`strong`,null,`复制项目管理链接`,-1),g(`span`,null,d(Y.value||`当前赛事暂无 slug`),1)])])])]),g(`section`,B,[s[26]||=g(`div`,{class:`panel-head`},[g(`h2`,null,`最近报名`),g(`span`,{class:`panel-subtitle`},`最近更新或提交的 8 条记录`)],-1),r(y,{data:U.value.recent_applications,stripe:``,style:{width:`100%`}},{empty:m(()=>[...s[25]||=[g(`span`,{class:`muted`},`暂无报名记录。`,-1)]]),default:m(()=>[r(v,{prop:`project_name`,label:`项目`,"min-width":`180`,"show-overflow-tooltip":``}),r(v,{prop:`player_name`,label:`负责人`,"min-width":`100`,"show-overflow-tooltip":``}),r(v,{prop:`track_title`,label:`赛道`,"min-width":`130`,"show-overflow-tooltip":``}),r(v,{label:`状态`,width:`100`},{default:m(({row:e})=>[r(c,{type:Q(e.status),size:`small`,effect:`plain`},{default:m(()=>[t(d(_e(e.status)),1)]),_:2},1032,[`type`])]),_:1}),r(v,{prop:`submitted_review_count`,label:`评分数`,width:`90`}),r(v,{label:`提交时间`,"min-width":`170`},{default:m(({row:e})=>[t(d(Z(e.submitted_at)),1)]),_:1}),r(v,{label:`操作`,width:`120`,fixed:`right`},{default:m(()=>[r(f,{to:{name:`admin-competition-workspace`}},{default:m(()=>[r(l,{type:`danger`,link:``},{default:m(()=>[...s[24]||=[t(`进入列表`,-1)]]),_:1})]),_:1})]),_:1})]),_:1},8,[`data`])])],64)):H.value?e(``,!0):(p(),i(b,{key:1,description:`暂无可管理的赛事`},{default:m(()=>[r(f,{to:{name:`admin-competition-new`}},{default:m(()=>[r(l,{type:`danger`},{default:m(()=>[...s[27]||=[t(`新建赛事`,-1)]]),_:1})]),_:1})]),_:1}))])),[[x,H.value]])}}}),[[`__scopeId`,`data-v-f91ed0a8`]]);export{V as default}; \ No newline at end of file +import{C as e,D as t,Et as n,O as r,Q as ee,S as i,W as te,Y as a,Z as o,_t as s,at as c,b as l,ct as ne,g as u,in as d,k as f,q as p,st as m,w as h,x as g}from"./vue.runtime.esm-bundler-OsdSFvn7.js";import{b as _,f as v,i as y}from"./index-t7bgup9e.js";import{t as b}from"./_plugin-vue_export-helper-CXTkFu_Z.js";import{a as x}from"./competitions-DP_OWCTo.js";import{t as re}from"./adminCompetition-DfRlbUCX.js";import{t as ie}from"./competitionAdminLabels-v0rVrY9u.js";import{t as ae}from"./datetimeShanghai-D1tceWM9.js";async function S(e){let{data:t}=await y.get(`/competitions/${e}/dashboard`);if(!t||typeof t!=`object`)throw Error(`首页统计响应无效`);return t}var C={class:`dashboard`},w={class:`dashboard-head`},oe={class:`meta-line`},se={class:`time-line`},ce={class:`head-actions`},le={class:`metric-grid`,"aria-label":`核心指标`},ue={class:`metric-label`},T={class:`metric-value`},E={class:`metric-hint`},D={class:`main-grid`},O={class:`panel`},k={class:`setup-list`},A={class:`setup-copy`},j={class:`panel`},M={class:`progress-kpis`},N={class:`main-grid main-grid--wide`},P={class:`panel`},F={class:`panel-head`},I={class:`panel-subtitle`},L={class:`panel`},R={class:`shortcut-list`},z=[`href`],de={key:1,class:`shortcut shortcut-button`,type:`button`,disabled:``},B={class:`panel`},V=b(f({__name:`AdminDashboardView`,setup(f){let y=re(),{competitions:b,selectedCompetitionId:V}=_(y),H=s(!1),U=s(null),fe=[{key:`published`,label:`赛事发布`,description:`对外报名和评审入口依赖发布状态`,routeName:`admin-competition-workspace`},{key:`signup_form_schema`,label:`报名表单`,description:`选手报名字段由 Schema 渲染`,routeName:`admin-competition-workspace`},{key:`tracks`,label:`赛道配置`,description:`评审范围和报名分组按赛道隔离`,routeName:`admin-competition-workspace`},{key:`pledge`,label:`承诺书`,description:`提交报名时需要签署的赛事文本`,routeName:`admin-competition-workspace`},{key:`review_form_schema`,label:`评审表单`,description:`未配置时评审端将使用系统默认表单`,routeName:`admin-competition-workspace`},{key:`reviewer_scopes`,label:`评审范围`,description:`评审员必须绑定赛事和赛道后才能看到项目`,routeName:`admin-reviewers-list`}],W=l(()=>U.value?.summary??null),G=l(()=>U.value?.competition??null),pe=l(()=>{let e=G.value;if(!e)return`未选择赛事`;let t=Date.now(),n=e.signup_open_at?new Date(e.signup_open_at).getTime():null,r=e.signup_close_at?new Date(e.signup_close_at).getTime():null;return e.published?n&&tr?e.status===`reviewing`?`评审中`:`报名已截止`:e.status===`reviewing`?`评审中`:e.status===`ended`?`已结束`:`报名中`:`未发布`}),me=l(()=>{let e=W.value;return[{label:`报名总数`,value:e?.applications_total??0,hint:`含草稿和已提交`},{label:`已提交`,value:e?.applications_submitted??0,hint:`可进入评审范围`},{label:`草稿`,value:e?.applications_draft??0,hint:`选手尚未正式提交`},{label:`待评项目`,value:e?.applications_pending_review??0,hint:`参与评审且暂无评分`},{label:`已评项目`,value:e?.applications_reviewed??0,hint:`至少已有一条评分`},{label:`评审记录`,value:e?.review_scores_total??0,hint:`累计提交评分数`}]}),he=l(()=>{let e=W.value;return!e||e.applications_submitted===0?0:Math.round(e.applications_reviewed/e.applications_submitted*100)}),K=l(()=>`/admin/`.endsWith(`/`)?`/admin/`.slice(0,-1):`/admin/`),q=l(()=>{let e=G.value?.slug;return e?`${K.value}/c/${encodeURIComponent(e)}/apply`:``}),J=l(()=>{let e=G.value?.slug;return e?`${K.value}/c/${encodeURIComponent(e)}/review`:``}),Y=l(()=>{let e=G.value?.slug;return e?`${K.value}/c/${encodeURIComponent(e)}/manage`:``});async function ge(){if(b.value.length>0)return;let e=await x({page:1,per_page:100});y.setCompetitionList(e.data)}async function X(){H.value=!0;try{await ge();let e=V.value;if(!e){U.value=null;return}U.value=await S(e)}catch(e){U.value=null,v.error(e instanceof Error?e.message:`首页数据加载失败`)}finally{H.value=!1}}function Z(e){return e?ae(e,`未配置`):`未配置`}function Q(e){return e===`submitted`||e===`published`||e===`signup_open`?`success`:e===`draft`?`info`:e===`reviewing`?`primary`:e===`signup_closed`||e===`ended`?`warning`:`info`}function _e(e){return e===`submitted`?`已提交`:e===`draft`?`草稿`:e}async function $(e){if(e)try{await navigator.clipboard.writeText(`${window.location.origin}${e}`),v.success(`已复制完整链接`)}catch{v.error(`复制失败,请手动选择文本`)}}return c(V,()=>{X()}),te(()=>{X()}),(te,s)=>{let c=o(`el-tag`),l=o(`el-button`),f=o(`RouterLink`),_=o(`el-progress`),v=o(`el-table-column`),y=o(`el-table`),b=o(`el-empty`),x=ee(`loading`);return ne((p(),h(`div`,C,[U.value&&G.value?(p(),h(u,{key:0},[g(`section`,w,[g(`div`,null,[s[3]||=g(`div`,{class:`eyebrow`},`运营工作台`,-1),g(`h1`,null,d(G.value.name),1),g(`div`,oe,[r(c,{type:Q(G.value.status),effect:`plain`},{default:m(()=>[t(d(n(ie)(G.value.status)),1)]),_:1},8,[`type`]),r(c,{type:G.value.published?`success`:`info`,effect:`plain`},{default:m(()=>[t(d(G.value.published?`已发布`:`未发布`),1)]),_:1},8,[`type`]),g(`span`,null,`当前阶段:`+d(pe.value),1),g(`span`,null,`slug:`+d(G.value.slug),1)]),g(`div`,se,[g(`span`,null,`报名开始:`+d(Z(G.value.signup_open_at)),1),g(`span`,null,`报名截止:`+d(Z(G.value.signup_close_at)),1)])]),g(`div`,ce,[r(f,{to:{name:`admin-competition-workspace`}},{default:m(()=>[r(l,{type:`danger`},{default:m(()=>[...s[4]||=[t(`赛事配置`,-1)]]),_:1})]),_:1}),r(f,{to:{name:`admin-competitions-list`}},{default:m(()=>[r(l,null,{default:m(()=>[...s[5]||=[t(`赛事列表`,-1)]]),_:1})]),_:1})])]),g(`section`,le,[(p(!0),h(u,null,a(me.value,e=>(p(),h(`div`,{key:e.label,class:`metric-card`},[g(`div`,ue,d(e.label),1),g(`div`,T,d(e.value),1),g(`div`,E,d(e.hint),1)]))),128))]),g(`section`,D,[g(`div`,O,[s[7]||=g(`div`,{class:`panel-head`},[g(`h2`,null,`配置完整度`),g(`span`,{class:`panel-subtitle`},`影响报名、提交和评审流转`)],-1),g(`div`,k,[(p(),h(u,null,a(fe,e=>g(`div`,{key:e.key,class:`setup-row`},[r(c,{type:U.value.setup[e.key]?`success`:e.key===`review_form_schema`?`warning`:`danger`,effect:`plain`,size:`small`},{default:m(()=>[t(d(U.value.setup[e.key]?`已完成`:e.key===`review_form_schema`?`默认`:`待处理`),1)]),_:2},1032,[`type`]),g(`div`,A,[g(`strong`,null,d(e.label),1),g(`span`,null,d(e.description),1)]),r(f,{to:{name:e.routeName}},{default:m(()=>[r(l,{link:``,type:`danger`},{default:m(()=>[...s[6]||=[t(`处理`,-1)]]),_:1})]),_:1},8,[`to`])])),64))])]),g(`div`,j,[s[13]||=g(`div`,{class:`panel-head`},[g(`h2`,null,`评审进度`),g(`span`,{class:`panel-subtitle`},`仅统计已提交报名`)],-1),r(_,{percentage:he.value,"stroke-width":12,"show-text":!1},null,8,[`percentage`]),g(`div`,M,[g(`div`,null,[g(`strong`,null,d(W.value?.applications_reviewed??0),1),s[8]||=g(`span`,null,`已评项目`,-1)]),g(`div`,null,[g(`strong`,null,d(W.value?.applications_pending_review??0),1),s[9]||=g(`span`,null,`待评项目`,-1)]),g(`div`,null,[g(`strong`,null,d(W.value?.reviewers_active??0)+`/`+d(W.value?.reviewers_total??0),1),s[10]||=g(`span`,null,`启用评审员`,-1)]),g(`div`,null,[g(`strong`,null,d(W.value?.reviewer_scopes_total??0),1),s[11]||=g(`span`,null,`评审范围`,-1)])]),r(f,{to:{name:`admin-reviewers-list`}},{default:m(()=>[r(l,{type:`danger`,plain:``},{default:m(()=>[...s[12]||=[t(`管理评审员与范围`,-1)]]),_:1})]),_:1})])]),g(`section`,N,[g(`div`,P,[g(`div`,F,[s[14]||=g(`h2`,null,`赛道分布`,-1),g(`span`,I,` 已启用 `+d(W.value?.tracks_enabled??0)+` / `+d(W.value?.tracks_total??0),1)]),r(y,{data:U.value.track_stats,stripe:``,style:{width:`100%`}},{empty:m(()=>[...s[15]||=[g(`span`,{class:`muted`},`暂无赛道,请进入赛事配置维护。`,-1)]]),default:m(()=>[r(v,{prop:`track_title`,label:`赛道`,"min-width":`150`,"show-overflow-tooltip":``}),r(v,{prop:`track_code`,label:`代码`,"min-width":`100`,"show-overflow-tooltip":``}),r(v,{label:`状态`,width:`90`},{default:m(({row:e})=>[r(c,{type:e.is_enabled?`success`:`info`,size:`small`,effect:`plain`},{default:m(()=>[t(d(e.is_enabled?`启用`:`停用`),1)]),_:2},1032,[`type`])]),_:1}),r(v,{prop:`applications_count`,label:`报名`,width:`90`}),r(v,{prop:`submitted_count`,label:`已提交`,width:`90`}),r(v,{prop:`reviewer_scope_count`,label:`评审范围`,width:`100`})]),_:1},8,[`data`])]),g(`div`,L,[s[23]||=g(`div`,{class:`panel-head`},[g(`h2`,null,`常用入口`),g(`span`,{class:`panel-subtitle`},`按当前赛事生成`)],-1),g(`div`,R,[r(f,{to:{name:`admin-competition-workspace`},class:`shortcut`},{default:m(()=>[...s[16]||=[g(`strong`,null,`报名列表与赛事配置`,-1),g(`span`,null,`查看报名详情、附件、分数和赛事设置`,-1)]]),_:1}),r(f,{to:{name:`admin-public-source-channels`},class:`shortcut`},{default:m(()=>[...s[17]||=[g(`strong`,null,`公开来源渠道`,-1),g(`span`,null,`生成首页入口链接和来源归因`,-1)]]),_:1}),g(`button`,{class:`shortcut shortcut-button`,type:`button`,onClick:s[0]||=e=>$(q.value)},[s[18]||=g(`strong`,null,`复制报名链接`,-1),g(`span`,null,d(q.value||`当前赛事暂无 slug`),1)]),g(`button`,{class:`shortcut shortcut-button`,type:`button`,onClick:s[1]||=e=>$(J.value)},[s[19]||=g(`strong`,null,`复制评审链接`,-1),g(`span`,null,d(J.value||`当前赛事暂无 slug`),1)]),Y.value?(p(),h(`a`,{key:0,class:`shortcut`,href:Y.value,target:`_blank`,rel:`noopener noreferrer`},[s[20]||=g(`strong`,null,`打开项目管理端`,-1),g(`span`,null,d(Y.value),1)],8,z)):(p(),h(`button`,de,[...s[21]||=[g(`strong`,null,`打开项目管理端`,-1),g(`span`,null,`当前赛事暂无 slug`,-1)]])),g(`button`,{class:`shortcut shortcut-button`,type:`button`,onClick:s[2]||=e=>$(Y.value)},[s[22]||=g(`strong`,null,`复制项目管理链接`,-1),g(`span`,null,d(Y.value||`当前赛事暂无 slug`),1)])])])]),g(`section`,B,[s[26]||=g(`div`,{class:`panel-head`},[g(`h2`,null,`最近报名`),g(`span`,{class:`panel-subtitle`},`最近更新或提交的 8 条记录`)],-1),r(y,{data:U.value.recent_applications,stripe:``,style:{width:`100%`}},{empty:m(()=>[...s[25]||=[g(`span`,{class:`muted`},`暂无报名记录。`,-1)]]),default:m(()=>[r(v,{prop:`project_name`,label:`项目`,"min-width":`180`,"show-overflow-tooltip":``}),r(v,{prop:`player_name`,label:`负责人`,"min-width":`100`,"show-overflow-tooltip":``}),r(v,{prop:`track_title`,label:`赛道`,"min-width":`130`,"show-overflow-tooltip":``}),r(v,{label:`状态`,width:`100`},{default:m(({row:e})=>[r(c,{type:Q(e.status),size:`small`,effect:`plain`},{default:m(()=>[t(d(_e(e.status)),1)]),_:2},1032,[`type`])]),_:1}),r(v,{prop:`submitted_review_count`,label:`评分数`,width:`90`}),r(v,{label:`提交时间`,"min-width":`170`},{default:m(({row:e})=>[t(d(Z(e.submitted_at)),1)]),_:1}),r(v,{label:`操作`,width:`120`,fixed:`right`},{default:m(()=>[r(f,{to:{name:`admin-competition-workspace`}},{default:m(()=>[r(l,{type:`danger`,link:``},{default:m(()=>[...s[24]||=[t(`进入列表`,-1)]]),_:1})]),_:1})]),_:1})]),_:1},8,[`data`])])],64)):H.value?e(``,!0):(p(),i(b,{key:1,description:`暂无可管理的赛事`},{default:m(()=>[r(f,{to:{name:`admin-competition-new`}},{default:m(()=>[r(l,{type:`danger`},{default:m(()=>[...s[27]||=[t(`新建赛事`,-1)]]),_:1})]),_:1})]),_:1}))])),[[x,H.value]])}}}),[[`__scopeId`,`data-v-f91ed0a8`]]);export{V as default}; \ No newline at end of file diff --git a/public/admin/assets/AdminLayout-BTI5o2eW.js b/public/admin/assets/AdminLayout-uoOYnl4f.js similarity index 95% rename from public/admin/assets/AdminLayout-BTI5o2eW.js rename to public/admin/assets/AdminLayout-uoOYnl4f.js index 103f242..8da78cb 100644 --- a/public/admin/assets/AdminLayout-BTI5o2eW.js +++ b/public/admin/assets/AdminLayout-uoOYnl4f.js @@ -1 +1 @@ -import{C as e,D as t,Et as n,O as r,S as i,W as a,Y as o,Z as s,_t as c,b as l,ct as u,f as d,g as f,ht as p,in as m,k as h,m as g,q as _,st as v,w as y,x as b}from"./vue.runtime.esm-bundler-OsdSFvn7.js";import{b as x,f as S,l as C,n as w,r as T,u as E}from"./index-DAT5gpOZ.js";import{t as D}from"./_plugin-vue_export-helper-CXTkFu_Z.js";import{n as O}from"./auth-CW8ToWeP.js";import{a as k}from"./competitions-BSJLYyM3.js";import{t as A}from"./adminCompetition-m6obxaBw.js";var j={key:0,class:`menu-section-label`},M=D(h({__name:`AdminMenuNest`,props:{nodes:{}},setup(n){return(a,c)=>{let l=s(`el-sub-menu`),u=s(`el-menu-item`);return _(!0),y(f,null,o(n.nodes,(n,a)=>(_(),y(f,{key:n.section||n.name||String(a)},[n.section&&!n.name?(_(),y(`div`,j,m(n.section),1)):n.children?.length&&n.name?(_(),i(l,{key:1,index:n.name},{title:v(()=>[b(`span`,null,m(n.title),1)]),default:v(()=>[r(M,{nodes:n.children},null,8,[`nodes`])]),_:2},1032,[`index`])):n.name?(_(),i(u,{key:2,index:n.name},{default:v(()=>[t(m(n.title),1)]),_:2},1032,[`index`])):e(``,!0)],64))),128)}}}),[[`__scopeId`,`data-v-346ecfd3`]]),N=D(h({__name:`AdminMenuTree`,props:{nodes:{}},setup(e){let t=C(),n=E(),a=l(()=>t.name==null?``:String(t.name));function o(e){if(!n.hasRoute(e)){S.warning(`该菜单对应的前端页面尚未发布,请刷新或重新部署前端资源`);return}n.push({name:e}).catch(()=>{})}return(t,n)=>{let c=s(`el-menu`);return _(),i(c,{"default-active":a.value,class:`admin-side-menu`,onSelect:o},{default:v(()=>[r(M,{nodes:e.nodes},null,8,[`nodes`])]),_:1},8,[`default-active`])}}}),[[`__scopeId`,`data-v-982feb37`]]),P={class:`header-inner`},F={key:0,class:`muted`},I={class:`switcher-item`},L={class:`truncate`},R={class:`slug truncate`},z={type:`button`,class:`admin-user-trigger`,"aria-label":`账号菜单`},ee={class:`admin-user-name`},B=D(h({__name:`AdminLayout`,setup(l){let h=E(),C=w(),D=T(),j=A(),{menus:M}=x(D),{competitions:B,selectedCompetitionId:V}=x(j),{displayName:H}=x(C),U=c(!1),W=c(!1),G=c(!1),K=c(),q=p({current_password:``,password:``,password_confirmation:``}),J={current_password:[{required:!0,message:`请输入当前密码`,trigger:`blur`}],password:[{required:!0,message:`请输入新密码`,trigger:`blur`},{min:6,max:255,message:`新密码长度为 6–255 个字符`,trigger:`blur`}],password_confirmation:[{required:!0,message:`请再次输入新密码`,trigger:`blur`},{validator:(e,t,n)=>{if(t!==q.password){n(Error(`两次输入的新密码不一致`));return}n()},trigger:`blur`}]};async function Y(){try{let e=await k({page:1,per_page:100});j.setCompetitionList(e.data)}catch(e){S.warning(e instanceof Error?e.message:`赛事列表加载失败,请检查网络与权限`)}}function X(){U.value=!U.value}function Z(e){j.selectCompetition(e)}function Q(){q.current_password=``,q.password=``,q.password_confirmation=``,K.value?.clearValidate()}function te(){Q(),W.value=!0}function ne(){C.logout(h),h.replace(`/admin/login`)}function re(e){if(e===`password`){te();return}e===`logout`&&ne()}async function $(){let e=K.value;if(e&&await e.validate().catch(()=>!1)){G.value=!0;try{await O({current_password:q.current_password,password:q.password,password_confirmation:q.password_confirmation}),W.value=!1,S.success(`密码已更新`)}catch(e){S.error(e instanceof Error?e.message:`修改密码失败`)}finally{G.value=!1}}}return a(()=>{Y()}),(a,c)=>{let l=s(`el-button`),p=s(`el-dropdown-item`),h=s(`el-dropdown-menu`),x=s(`el-dropdown`),S=s(`el-header`),C=s(`el-scrollbar`),w=s(`el-aside`),T=s(`router-view`),E=s(`el-main`),D=s(`el-container`),O=s(`el-input`),k=s(`el-form-item`),A=s(`el-form`),j=s(`el-dialog`);return _(),i(D,{class:`admin-shell`},{default:v(()=>[r(S,{class:`admin-header`,height:`56px`},{default:v(()=>[b(`div`,P,[r(l,{circle:``,plain:``,size:`small`,"aria-label":`收起或展开侧栏`,onClick:X},{default:v(()=>[t(m(U.value?`☰`:`⟨`),1)]),_:1}),c[10]||=b(`span`,{class:`admin-brand`},`管理后台`,-1),c[11]||=b(`div`,{class:`header-spacer`},null,-1),r(x,{trigger:`click`,placement:`bottom-end`},{dropdown:v(()=>[r(h,{style:{"min-width":`220px`}},{default:v(()=>[n(B).length?(_(!0),y(f,{key:1},o(n(B),e=>(_(),i(p,{key:e.id,onClick:t=>Z(e.id)},{default:v(()=>[b(`div`,I,[b(`span`,L,m(e.name),1),b(`span`,R,m(e.slug),1)])]),_:2},1032,[`onClick`]))),128)):(_(),i(p,{key:0,disabled:``},{default:v(()=>[...c[6]||=[t(`暂无赛事,请先在「赛事列表」创建`,-1)]]),_:1}))]),_:1})]),default:v(()=>[r(l,{type:`danger`,plain:``,size:`small`},{default:v(()=>[c[5]||=t(` 赛事切换 `,-1),n(V)?(_(),y(`span`,F,`(#`+m(n(V))+`)`,1)):e(``,!0)]),_:1})]),_:1}),r(x,{trigger:`click`,placement:`bottom-end`,onCommand:re},{dropdown:v(()=>[r(h,null,{default:v(()=>[r(p,{command:`password`},{default:v(()=>[...c[8]||=[t(`修改密码`,-1)]]),_:1}),r(p,{divided:``,command:`logout`},{default:v(()=>[...c[9]||=[t(`退出`,-1)]]),_:1})]),_:1})]),default:v(()=>[b(`button`,z,[b(`span`,ee,m(n(H)),1),c[7]||=b(`span`,{class:`admin-user-caret`,"aria-hidden":`true`},`▾`,-1)])]),_:1})])]),_:1}),r(D,{class:`admin-body`},{default:v(()=>[r(w,{class:`admin-aside`,width:U.value?`0px`:`230px`},{default:v(()=>[u(r(C,{class:`aside-scroll`},{default:v(()=>[c[12]||=b(`div`,{class:`aside-title`},`导航`,-1),r(N,{nodes:n(M)},null,8,[`nodes`])]),_:1},512),[[d,!U.value]])]),_:1},8,[`width`]),r(E,{class:`admin-main`},{default:v(()=>[r(T)]),_:1})]),_:1}),r(j,{modelValue:W.value,"onUpdate:modelValue":c[4]||=e=>W.value=e,title:`修改密码`,width:`min(420px, 92vw)`,"destroy-on-close":``,onClosed:Q},{footer:v(()=>[r(l,{onClick:c[3]||=e=>W.value=!1},{default:v(()=>[...c[13]||=[t(`取消`,-1)]]),_:1}),r(l,{type:`primary`,loading:G.value,onClick:$},{default:v(()=>[...c[14]||=[t(` 保存 `,-1)]]),_:1},8,[`loading`])]),default:v(()=>[r(A,{ref_key:`passwordFormRef`,ref:K,model:q,rules:J,"label-position":`top`,onSubmit:g($,[`prevent`])},{default:v(()=>[r(k,{label:`当前密码`,prop:`current_password`},{default:v(()=>[r(O,{modelValue:q.current_password,"onUpdate:modelValue":c[0]||=e=>q.current_password=e,type:`password`,"show-password":``,autocomplete:`current-password`},null,8,[`modelValue`])]),_:1}),r(k,{label:`新密码`,prop:`password`},{default:v(()=>[r(O,{modelValue:q.password,"onUpdate:modelValue":c[1]||=e=>q.password=e,type:`password`,"show-password":``,autocomplete:`new-password`},null,8,[`modelValue`])]),_:1}),r(k,{label:`确认新密码`,prop:`password_confirmation`},{default:v(()=>[r(O,{modelValue:q.password_confirmation,"onUpdate:modelValue":c[2]||=e=>q.password_confirmation=e,type:`password`,"show-password":``,autocomplete:`new-password`},null,8,[`modelValue`])]),_:1})]),_:1},8,[`model`])]),_:1},8,[`modelValue`])]),_:1})}}}),[[`__scopeId`,`data-v-9c4e0032`]]);export{B as default}; \ No newline at end of file +import{C as e,D as t,Et as n,O as r,S as i,W as a,Y as o,Z as s,_t as c,b as l,ct as u,f as d,g as f,ht as p,in as m,k as h,m as g,q as _,st as v,w as y,x as b}from"./vue.runtime.esm-bundler-OsdSFvn7.js";import{b as x,f as S,l as C,n as w,r as T,u as E}from"./index-t7bgup9e.js";import{t as D}from"./_plugin-vue_export-helper-CXTkFu_Z.js";import{n as O}from"./auth-Cjgu0CU4.js";import{a as k}from"./competitions-DP_OWCTo.js";import{t as A}from"./adminCompetition-DfRlbUCX.js";var j={key:0,class:`menu-section-label`},M=D(h({__name:`AdminMenuNest`,props:{nodes:{}},setup(n){return(a,c)=>{let l=s(`el-sub-menu`),u=s(`el-menu-item`);return _(!0),y(f,null,o(n.nodes,(n,a)=>(_(),y(f,{key:n.section||n.name||String(a)},[n.section&&!n.name?(_(),y(`div`,j,m(n.section),1)):n.children?.length&&n.name?(_(),i(l,{key:1,index:n.name},{title:v(()=>[b(`span`,null,m(n.title),1)]),default:v(()=>[r(M,{nodes:n.children},null,8,[`nodes`])]),_:2},1032,[`index`])):n.name?(_(),i(u,{key:2,index:n.name},{default:v(()=>[t(m(n.title),1)]),_:2},1032,[`index`])):e(``,!0)],64))),128)}}}),[[`__scopeId`,`data-v-346ecfd3`]]),N=D(h({__name:`AdminMenuTree`,props:{nodes:{}},setup(e){let t=C(),n=E(),a=l(()=>t.name==null?``:String(t.name));function o(e){if(!n.hasRoute(e)){S.warning(`该菜单对应的前端页面尚未发布,请刷新或重新部署前端资源`);return}n.push({name:e}).catch(()=>{})}return(t,n)=>{let c=s(`el-menu`);return _(),i(c,{"default-active":a.value,class:`admin-side-menu`,onSelect:o},{default:v(()=>[r(M,{nodes:e.nodes},null,8,[`nodes`])]),_:1},8,[`default-active`])}}}),[[`__scopeId`,`data-v-982feb37`]]),P={class:`header-inner`},F={key:0,class:`muted`},I={class:`switcher-item`},L={class:`truncate`},R={class:`slug truncate`},z={type:`button`,class:`admin-user-trigger`,"aria-label":`账号菜单`},ee={class:`admin-user-name`},B=D(h({__name:`AdminLayout`,setup(l){let h=E(),C=w(),D=T(),j=A(),{menus:M}=x(D),{competitions:B,selectedCompetitionId:V}=x(j),{displayName:H}=x(C),U=c(!1),W=c(!1),G=c(!1),K=c(),q=p({current_password:``,password:``,password_confirmation:``}),J={current_password:[{required:!0,message:`请输入当前密码`,trigger:`blur`}],password:[{required:!0,message:`请输入新密码`,trigger:`blur`},{min:6,max:255,message:`新密码长度为 6–255 个字符`,trigger:`blur`}],password_confirmation:[{required:!0,message:`请再次输入新密码`,trigger:`blur`},{validator:(e,t,n)=>{if(t!==q.password){n(Error(`两次输入的新密码不一致`));return}n()},trigger:`blur`}]};async function Y(){try{let e=await k({page:1,per_page:100});j.setCompetitionList(e.data)}catch(e){S.warning(e instanceof Error?e.message:`赛事列表加载失败,请检查网络与权限`)}}function X(){U.value=!U.value}function Z(e){j.selectCompetition(e)}function Q(){q.current_password=``,q.password=``,q.password_confirmation=``,K.value?.clearValidate()}function te(){Q(),W.value=!0}function ne(){C.logout(h),h.replace(`/admin/login`)}function re(e){if(e===`password`){te();return}e===`logout`&&ne()}async function $(){let e=K.value;if(e&&await e.validate().catch(()=>!1)){G.value=!0;try{await O({current_password:q.current_password,password:q.password,password_confirmation:q.password_confirmation}),W.value=!1,S.success(`密码已更新`)}catch(e){S.error(e instanceof Error?e.message:`修改密码失败`)}finally{G.value=!1}}}return a(()=>{Y()}),(a,c)=>{let l=s(`el-button`),p=s(`el-dropdown-item`),h=s(`el-dropdown-menu`),x=s(`el-dropdown`),S=s(`el-header`),C=s(`el-scrollbar`),w=s(`el-aside`),T=s(`router-view`),E=s(`el-main`),D=s(`el-container`),O=s(`el-input`),k=s(`el-form-item`),A=s(`el-form`),j=s(`el-dialog`);return _(),i(D,{class:`admin-shell`},{default:v(()=>[r(S,{class:`admin-header`,height:`56px`},{default:v(()=>[b(`div`,P,[r(l,{circle:``,plain:``,size:`small`,"aria-label":`收起或展开侧栏`,onClick:X},{default:v(()=>[t(m(U.value?`☰`:`⟨`),1)]),_:1}),c[10]||=b(`span`,{class:`admin-brand`},`管理后台`,-1),c[11]||=b(`div`,{class:`header-spacer`},null,-1),r(x,{trigger:`click`,placement:`bottom-end`},{dropdown:v(()=>[r(h,{style:{"min-width":`220px`}},{default:v(()=>[n(B).length?(_(!0),y(f,{key:1},o(n(B),e=>(_(),i(p,{key:e.id,onClick:t=>Z(e.id)},{default:v(()=>[b(`div`,I,[b(`span`,L,m(e.name),1),b(`span`,R,m(e.slug),1)])]),_:2},1032,[`onClick`]))),128)):(_(),i(p,{key:0,disabled:``},{default:v(()=>[...c[6]||=[t(`暂无赛事,请先在「赛事列表」创建`,-1)]]),_:1}))]),_:1})]),default:v(()=>[r(l,{type:`danger`,plain:``,size:`small`},{default:v(()=>[c[5]||=t(` 赛事切换 `,-1),n(V)?(_(),y(`span`,F,`(#`+m(n(V))+`)`,1)):e(``,!0)]),_:1})]),_:1}),r(x,{trigger:`click`,placement:`bottom-end`,onCommand:re},{dropdown:v(()=>[r(h,null,{default:v(()=>[r(p,{command:`password`},{default:v(()=>[...c[8]||=[t(`修改密码`,-1)]]),_:1}),r(p,{divided:``,command:`logout`},{default:v(()=>[...c[9]||=[t(`退出`,-1)]]),_:1})]),_:1})]),default:v(()=>[b(`button`,z,[b(`span`,ee,m(n(H)),1),c[7]||=b(`span`,{class:`admin-user-caret`,"aria-hidden":`true`},`▾`,-1)])]),_:1})])]),_:1}),r(D,{class:`admin-body`},{default:v(()=>[r(w,{class:`admin-aside`,width:U.value?`0px`:`230px`},{default:v(()=>[u(r(C,{class:`aside-scroll`},{default:v(()=>[c[12]||=b(`div`,{class:`aside-title`},`导航`,-1),r(N,{nodes:n(M)},null,8,[`nodes`])]),_:1},512),[[d,!U.value]])]),_:1},8,[`width`]),r(E,{class:`admin-main`},{default:v(()=>[r(T)]),_:1})]),_:1}),r(j,{modelValue:W.value,"onUpdate:modelValue":c[4]||=e=>W.value=e,title:`修改密码`,width:`min(420px, 92vw)`,"destroy-on-close":``,onClosed:Q},{footer:v(()=>[r(l,{onClick:c[3]||=e=>W.value=!1},{default:v(()=>[...c[13]||=[t(`取消`,-1)]]),_:1}),r(l,{type:`primary`,loading:G.value,onClick:$},{default:v(()=>[...c[14]||=[t(` 保存 `,-1)]]),_:1},8,[`loading`])]),default:v(()=>[r(A,{ref_key:`passwordFormRef`,ref:K,model:q,rules:J,"label-position":`top`,onSubmit:g($,[`prevent`])},{default:v(()=>[r(k,{label:`当前密码`,prop:`current_password`},{default:v(()=>[r(O,{modelValue:q.current_password,"onUpdate:modelValue":c[0]||=e=>q.current_password=e,type:`password`,"show-password":``,autocomplete:`current-password`},null,8,[`modelValue`])]),_:1}),r(k,{label:`新密码`,prop:`password`},{default:v(()=>[r(O,{modelValue:q.password,"onUpdate:modelValue":c[1]||=e=>q.password=e,type:`password`,"show-password":``,autocomplete:`new-password`},null,8,[`modelValue`])]),_:1}),r(k,{label:`确认新密码`,prop:`password_confirmation`},{default:v(()=>[r(O,{modelValue:q.password_confirmation,"onUpdate:modelValue":c[2]||=e=>q.password_confirmation=e,type:`password`,"show-password":``,autocomplete:`new-password`},null,8,[`modelValue`])]),_:1})]),_:1},8,[`model`])]),_:1},8,[`modelValue`])]),_:1})}}}),[[`__scopeId`,`data-v-9c4e0032`]]);export{B as default}; \ No newline at end of file diff --git a/public/admin/assets/AdminLoginView-CVL7subl.js b/public/admin/assets/AdminLoginView-BFANHawE.js similarity index 91% rename from public/admin/assets/AdminLoginView-CVL7subl.js rename to public/admin/assets/AdminLoginView-BFANHawE.js index f587a6b..fdc27a2 100644 --- a/public/admin/assets/AdminLoginView-CVL7subl.js +++ b/public/admin/assets/AdminLoginView-BFANHawE.js @@ -1 +1 @@ -import{D as e,O as t,Z as n,_t as r,in as i,k as a,m as o,q as s,st as c,w as l,x as u}from"./vue.runtime.esm-bundler-OsdSFvn7.js";import{g as d}from"./api-rQwE0AaH.js";import{f,l as p,n as m,u as h}from"./index-DAT5gpOZ.js";import{t as g}from"./_plugin-vue_export-helper-CXTkFu_Z.js";import{t as _}from"./auth-CW8ToWeP.js";var v={class:`login-wrap`},y=g(a({__name:`AdminLoginView`,setup(a){let g=p(),y=h(),b=m(),x=r(``),S=r(``),C=r(!1);function w(e){return e instanceof Error&&e.message.trim()?e.message:typeof e==`string`&&e.trim()?e:`登录失败`}function T(){let e=d(typeof g.query.redirect==`string`?g.query.redirect:``);return e&&e.startsWith(`/admin`)&&!e.includes(`/login`)?{path:e,replace:!0}:{name:`admin-dashboard`,replace:!0}}async function E(){if(!x.value.trim()||!S.value.trim()){f.warning(`请输入账号和密码`);return}C.value=!0;try{let e=await _({username:x.value.trim(),password:S.value.trim()}),t=e.user&&typeof e.user.id==`number`?{id:e.user.id,username:e.user.username,name:e.user.name}:null;b.setSession(e.token,t),await y.replace(T()),f.success(`登录成功`)}catch(e){f.error(w(e))}finally{C.value=!1}}return(r,a)=>{let d=n(`el-input`),f=n(`el-form-item`),p=n(`el-button`),m=n(`el-form`),h=n(`el-card`);return s(),l(`div`,v,[t(h,{class:`login-card`,shadow:`hover`},{header:c(()=>[...a[2]||=[u(`div`,{class:`card-title`},`管理员登录`,-1)]]),default:c(()=>[t(m,{"label-position":`top`,onSubmit:o(E,[`prevent`])},{default:c(()=>[t(f,{label:`账号`},{default:c(()=>[t(d,{modelValue:x.value,"onUpdate:modelValue":a[0]||=e=>x.value=e,modelModifiers:{trim:!0},autocomplete:`username`,clearable:``},null,8,[`modelValue`])]),_:1}),t(f,{label:`密码`},{default:c(()=>[t(d,{modelValue:S.value,"onUpdate:modelValue":a[1]||=e=>S.value=e,type:`password`,autocomplete:`current-password`,"show-password":``},null,8,[`modelValue`])]),_:1}),t(p,{type:`danger`,class:`w-100`,"native-type":`submit`,loading:C.value},{default:c(()=>[e(i(C.value?`登录中…`:`登录`),1)]),_:1},8,[`loading`])]),_:1})]),_:1})])}}}),[[`__scopeId`,`data-v-d5661a24`]]);export{y as default}; \ No newline at end of file +import{D as e,O as t,Z as n,_t as r,in as i,k as a,m as o,q as s,st as c,w as l,x as u}from"./vue.runtime.esm-bundler-OsdSFvn7.js";import{g as d}from"./api-rQwE0AaH.js";import{f,l as p,n as m,u as h}from"./index-t7bgup9e.js";import{t as g}from"./_plugin-vue_export-helper-CXTkFu_Z.js";import{t as _}from"./auth-Cjgu0CU4.js";var v={class:`login-wrap`},y=g(a({__name:`AdminLoginView`,setup(a){let g=p(),y=h(),b=m(),x=r(``),S=r(``),C=r(!1);function w(e){return e instanceof Error&&e.message.trim()?e.message:typeof e==`string`&&e.trim()?e:`登录失败`}function T(){let e=d(typeof g.query.redirect==`string`?g.query.redirect:``);return e&&e.startsWith(`/admin`)&&!e.includes(`/login`)?{path:e,replace:!0}:{name:`admin-dashboard`,replace:!0}}async function E(){if(!x.value.trim()||!S.value.trim()){f.warning(`请输入账号和密码`);return}C.value=!0;try{let e=await _({username:x.value.trim(),password:S.value.trim()}),t=e.user&&typeof e.user.id==`number`?{id:e.user.id,username:e.user.username,name:e.user.name}:null;b.setSession(e.token,t),await y.replace(T()),f.success(`登录成功`)}catch(e){f.error(w(e))}finally{C.value=!1}}return(r,a)=>{let d=n(`el-input`),f=n(`el-form-item`),p=n(`el-button`),m=n(`el-form`),h=n(`el-card`);return s(),l(`div`,v,[t(h,{class:`login-card`,shadow:`hover`},{header:c(()=>[...a[2]||=[u(`div`,{class:`card-title`},`管理员登录`,-1)]]),default:c(()=>[t(m,{"label-position":`top`,onSubmit:o(E,[`prevent`])},{default:c(()=>[t(f,{label:`账号`},{default:c(()=>[t(d,{modelValue:x.value,"onUpdate:modelValue":a[0]||=e=>x.value=e,modelModifiers:{trim:!0},autocomplete:`username`,clearable:``},null,8,[`modelValue`])]),_:1}),t(f,{label:`密码`},{default:c(()=>[t(d,{modelValue:S.value,"onUpdate:modelValue":a[1]||=e=>S.value=e,type:`password`,autocomplete:`current-password`,"show-password":``},null,8,[`modelValue`])]),_:1}),t(p,{type:`danger`,class:`w-100`,"native-type":`submit`,loading:C.value},{default:c(()=>[e(i(C.value?`登录中…`:`登录`),1)]),_:1},8,[`loading`])]),_:1})]),_:1})])}}}),[[`__scopeId`,`data-v-d5661a24`]]);export{y as default}; \ No newline at end of file diff --git a/public/admin/assets/AdminUserManageView-DOiTsZGK.js b/public/admin/assets/AdminUserManageView-CL5A4h3-.js similarity index 98% rename from public/admin/assets/AdminUserManageView-DOiTsZGK.js rename to public/admin/assets/AdminUserManageView-CL5A4h3-.js index 5ee93d6..014ef66 100644 --- a/public/admin/assets/AdminUserManageView-DOiTsZGK.js +++ b/public/admin/assets/AdminUserManageView-CL5A4h3-.js @@ -1 +1 @@ -import{D as e,O as t,Q as n,S as r,W as i,Z as a,_t as o,ct as s,ht as c,in as l,k as u,p as d,q as f,st as p,w as m,x as h}from"./vue.runtime.esm-bundler-OsdSFvn7.js";import{d as g,f as _,i as v}from"./index-DAT5gpOZ.js";import{t as y}from"./_plugin-vue_export-helper-CXTkFu_Z.js";function b(e){if(!e||typeof e!=`object`)throw Error(`列表响应格式无效`);let t=e;if(Array.isArray(t.data)&&typeof t.current_page==`number`)return{data:t.data,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:t.data.length||15,total:typeof t.total==`number`?t.total:t.data.length}};throw Error(`列表响应格式无效`)}async function x(e){let{data:t}=await v.get(`/admin-users`,{params:e});return b(t)}async function S(e){let{data:t}=await v.post(`/admin-users`,e);return t}async function C(e,t){let{data:n}=await v.patch(`/admin-users/${e}`,t);return n}async function w(e){await v.post(`/admin-users/${e}/delete`)}var T={class:`toolbar`},E={class:`table-pagination`},D=y(u({__name:`AdminUserManageView`,setup(u){let v=o(!1),y=o([]),b=c({page:1,perPage:15,total:0}),D=o(``),O=o(!1),k=o(`create`),A=o(!1),j=o(null),M=o(),N=c({username:``,name:``,mobile:``,password:``,status:`active`}),P={username:[{required:!0,message:`请填写账号`,trigger:`blur`}],name:[{required:!0,message:`请填写姓名`,trigger:`blur`}],password:[{validator:(e,t,n)=>{if(k.value===`create`&&!String(t||``).trim()){n(Error(`请填写密码`));return}n()},trigger:`blur`}]};async function F(e=b.page){v.value=!0,b.page=e;try{let e=await x({page:b.page,per_page:b.perPage,keyword:D.value.trim()||void 0});y.value=e.data,b.total=e.meta.total}finally{v.value=!1}}function I(){k.value=`create`,j.value=null,N.username=``,N.name=``,N.mobile=``,N.password=``,N.status=`active`,O.value=!0}function L(e){k.value=`edit`,j.value=e.id,N.username=e.username,N.name=e.name,N.mobile=e.mobile??``,N.password=``,N.status=e.status,O.value=!0}async function R(){if(await M.value?.validate().catch(()=>!1)){A.value=!0;try{let e={username:N.username.trim(),name:N.name.trim(),mobile:N.mobile?.trim()||null,status:N.status};N.password?.trim()&&(e.password=N.password.trim()),k.value===`create`?(await S({...e,password:(N.password??``).trim()}),_.success(`已创建`)):j.value&&(await C(j.value,e),_.success(`已保存`)),O.value=!1,await F(b.page)}catch(e){_.error(e instanceof Error?e.message:`保存失败`)}finally{A.value=!1}}}async function z(e){try{await g.confirm(`确定删除管理员「${e.name}」吗?`,`确认删除`,{type:`warning`}),await w(e.id),_.success(`已删除`),await F(b.page)}catch{}}return i(()=>void F(1)),(i,o)=>{let c=a(`el-input`),u=a(`el-button`),g=a(`el-table-column`),_=a(`el-tag`),x=a(`el-table`),S=a(`el-pagination`),C=a(`el-form-item`),w=a(`el-option`),j=a(`el-select`),B=a(`el-form`),V=a(`el-dialog`),H=n(`loading`);return f(),m(`div`,null,[o[18]||=h(`div`,{class:`page-head`},[h(`h2`,{class:`page-title`},`用户管理`),h(`p`,{class:`page-lead`},`维护可登录后台的管理员账号。`)],-1),h(`div`,T,[t(c,{modelValue:D.value,"onUpdate:modelValue":o[0]||=e=>D.value=e,placeholder:`搜索账号、姓名、手机号`,clearable:``,style:{"max-width":`280px`},onKeyup:o[1]||=d(e=>F(1),[`enter`])},null,8,[`modelValue`]),t(u,{type:`primary`,onClick:o[2]||=e=>F(1)},{default:p(()=>[...o[12]||=[e(`查询`,-1)]]),_:1}),t(u,{type:`primary`,onClick:I},{default:p(()=>[...o[13]||=[e(`新增管理员`,-1)]]),_:1})]),s((f(),r(x,{data:y.value,stripe:``,border:``,"empty-text":`暂无管理员`},{default:p(()=>[t(g,{prop:`username`,label:`账号`,"min-width":`140`}),t(g,{prop:`name`,label:`姓名`,width:`120`}),t(g,{prop:`mobile`,label:`手机号`,width:`140`},{default:p(({row:t})=>[e(l(t.mobile||`—`),1)]),_:1}),t(g,{label:`状态`,width:`100`},{default:p(({row:n})=>[t(_,{type:n.status===`active`?`success`:`info`,effect:`plain`},{default:p(()=>[e(l(n.status===`active`?`启用`:`停用`),1)]),_:2},1032,[`type`])]),_:1}),t(g,{prop:`last_login_at`,label:`最近登录`,"min-width":`170`},{default:p(({row:t})=>[e(l(t.last_login_at||`—`),1)]),_:1}),t(g,{label:`操作`,width:`160`,fixed:`right`,align:`right`},{default:p(({row:n})=>[t(u,{link:``,type:`primary`,size:`small`,onClick:e=>L(n)},{default:p(()=>[...o[14]||=[e(`编辑`,-1)]]),_:1},8,[`onClick`]),t(u,{link:``,type:`danger`,size:`small`,onClick:e=>z(n)},{default:p(()=>[...o[15]||=[e(`删除`,-1)]]),_:1},8,[`onClick`])]),_:1})]),_:1},8,[`data`])),[[H,v.value]]),h(`div`,E,[t(S,{"current-page":b.page,"onUpdate:currentPage":o[3]||=e=>b.page=e,"page-size":b.perPage,"onUpdate:pageSize":o[4]||=e=>b.perPage=e,background:``,layout:`total, prev, pager, next`,total:b.total,onCurrentChange:F},null,8,[`current-page`,`page-size`,`total`])]),t(V,{modelValue:O.value,"onUpdate:modelValue":o[11]||=e=>O.value=e,title:k.value===`create`?`新增管理员`:`编辑管理员`,width:`min(480px, 92vw)`,"destroy-on-close":``},{footer:p(()=>[t(u,{onClick:o[10]||=e=>O.value=!1},{default:p(()=>[...o[16]||=[e(`取消`,-1)]]),_:1}),t(u,{type:`primary`,loading:A.value,onClick:R},{default:p(()=>[...o[17]||=[e(`保存`,-1)]]),_:1},8,[`loading`])]),default:p(()=>[t(B,{ref_key:`formRef`,ref:M,model:N,rules:P,"label-position":`top`},{default:p(()=>[t(C,{label:`账号`,prop:`username`},{default:p(()=>[t(c,{modelValue:N.username,"onUpdate:modelValue":o[5]||=e=>N.username=e,modelModifiers:{trim:!0},autocomplete:`off`},null,8,[`modelValue`])]),_:1}),t(C,{label:`姓名`,prop:`name`},{default:p(()=>[t(c,{modelValue:N.name,"onUpdate:modelValue":o[6]||=e=>N.name=e,modelModifiers:{trim:!0}},null,8,[`modelValue`])]),_:1}),t(C,{label:`手机号`},{default:p(()=>[t(c,{modelValue:N.mobile,"onUpdate:modelValue":o[7]||=e=>N.mobile=e,modelModifiers:{trim:!0}},null,8,[`modelValue`])]),_:1}),t(C,{label:k.value===`create`?`密码`:`新密码(留空不改)`,prop:`password`},{default:p(()=>[t(c,{modelValue:N.password,"onUpdate:modelValue":o[8]||=e=>N.password=e,type:`password`,"show-password":``,autocomplete:`new-password`},null,8,[`modelValue`])]),_:1},8,[`label`]),t(C,{label:`状态`},{default:p(()=>[t(j,{modelValue:N.status,"onUpdate:modelValue":o[9]||=e=>N.status=e,style:{width:`100%`}},{default:p(()=>[t(w,{label:`启用`,value:`active`}),t(w,{label:`停用`,value:`disabled`})]),_:1},8,[`modelValue`])]),_:1})]),_:1},8,[`model`])]),_:1},8,[`modelValue`,`title`])])}}}),[[`__scopeId`,`data-v-61edf8d8`]]);export{D as default}; \ No newline at end of file +import{D as e,O as t,Q as n,S as r,W as i,Z as a,_t as o,ct as s,ht as c,in as l,k as u,p as d,q as f,st as p,w as m,x as h}from"./vue.runtime.esm-bundler-OsdSFvn7.js";import{d as g,f as _,i as v}from"./index-t7bgup9e.js";import{t as y}from"./_plugin-vue_export-helper-CXTkFu_Z.js";function b(e){if(!e||typeof e!=`object`)throw Error(`列表响应格式无效`);let t=e;if(Array.isArray(t.data)&&typeof t.current_page==`number`)return{data:t.data,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:t.data.length||15,total:typeof t.total==`number`?t.total:t.data.length}};throw Error(`列表响应格式无效`)}async function x(e){let{data:t}=await v.get(`/admin-users`,{params:e});return b(t)}async function S(e){let{data:t}=await v.post(`/admin-users`,e);return t}async function C(e,t){let{data:n}=await v.patch(`/admin-users/${e}`,t);return n}async function w(e){await v.post(`/admin-users/${e}/delete`)}var T={class:`toolbar`},E={class:`table-pagination`},D=y(u({__name:`AdminUserManageView`,setup(u){let v=o(!1),y=o([]),b=c({page:1,perPage:15,total:0}),D=o(``),O=o(!1),k=o(`create`),A=o(!1),j=o(null),M=o(),N=c({username:``,name:``,mobile:``,password:``,status:`active`}),P={username:[{required:!0,message:`请填写账号`,trigger:`blur`}],name:[{required:!0,message:`请填写姓名`,trigger:`blur`}],password:[{validator:(e,t,n)=>{if(k.value===`create`&&!String(t||``).trim()){n(Error(`请填写密码`));return}n()},trigger:`blur`}]};async function F(e=b.page){v.value=!0,b.page=e;try{let e=await x({page:b.page,per_page:b.perPage,keyword:D.value.trim()||void 0});y.value=e.data,b.total=e.meta.total}finally{v.value=!1}}function I(){k.value=`create`,j.value=null,N.username=``,N.name=``,N.mobile=``,N.password=``,N.status=`active`,O.value=!0}function L(e){k.value=`edit`,j.value=e.id,N.username=e.username,N.name=e.name,N.mobile=e.mobile??``,N.password=``,N.status=e.status,O.value=!0}async function R(){if(await M.value?.validate().catch(()=>!1)){A.value=!0;try{let e={username:N.username.trim(),name:N.name.trim(),mobile:N.mobile?.trim()||null,status:N.status};N.password?.trim()&&(e.password=N.password.trim()),k.value===`create`?(await S({...e,password:(N.password??``).trim()}),_.success(`已创建`)):j.value&&(await C(j.value,e),_.success(`已保存`)),O.value=!1,await F(b.page)}catch(e){_.error(e instanceof Error?e.message:`保存失败`)}finally{A.value=!1}}}async function z(e){try{await g.confirm(`确定删除管理员「${e.name}」吗?`,`确认删除`,{type:`warning`}),await w(e.id),_.success(`已删除`),await F(b.page)}catch{}}return i(()=>void F(1)),(i,o)=>{let c=a(`el-input`),u=a(`el-button`),g=a(`el-table-column`),_=a(`el-tag`),x=a(`el-table`),S=a(`el-pagination`),C=a(`el-form-item`),w=a(`el-option`),j=a(`el-select`),B=a(`el-form`),V=a(`el-dialog`),H=n(`loading`);return f(),m(`div`,null,[o[18]||=h(`div`,{class:`page-head`},[h(`h2`,{class:`page-title`},`用户管理`),h(`p`,{class:`page-lead`},`维护可登录后台的管理员账号。`)],-1),h(`div`,T,[t(c,{modelValue:D.value,"onUpdate:modelValue":o[0]||=e=>D.value=e,placeholder:`搜索账号、姓名、手机号`,clearable:``,style:{"max-width":`280px`},onKeyup:o[1]||=d(e=>F(1),[`enter`])},null,8,[`modelValue`]),t(u,{type:`primary`,onClick:o[2]||=e=>F(1)},{default:p(()=>[...o[12]||=[e(`查询`,-1)]]),_:1}),t(u,{type:`primary`,onClick:I},{default:p(()=>[...o[13]||=[e(`新增管理员`,-1)]]),_:1})]),s((f(),r(x,{data:y.value,stripe:``,border:``,"empty-text":`暂无管理员`},{default:p(()=>[t(g,{prop:`username`,label:`账号`,"min-width":`140`}),t(g,{prop:`name`,label:`姓名`,width:`120`}),t(g,{prop:`mobile`,label:`手机号`,width:`140`},{default:p(({row:t})=>[e(l(t.mobile||`—`),1)]),_:1}),t(g,{label:`状态`,width:`100`},{default:p(({row:n})=>[t(_,{type:n.status===`active`?`success`:`info`,effect:`plain`},{default:p(()=>[e(l(n.status===`active`?`启用`:`停用`),1)]),_:2},1032,[`type`])]),_:1}),t(g,{prop:`last_login_at`,label:`最近登录`,"min-width":`170`},{default:p(({row:t})=>[e(l(t.last_login_at||`—`),1)]),_:1}),t(g,{label:`操作`,width:`160`,fixed:`right`,align:`right`},{default:p(({row:n})=>[t(u,{link:``,type:`primary`,size:`small`,onClick:e=>L(n)},{default:p(()=>[...o[14]||=[e(`编辑`,-1)]]),_:1},8,[`onClick`]),t(u,{link:``,type:`danger`,size:`small`,onClick:e=>z(n)},{default:p(()=>[...o[15]||=[e(`删除`,-1)]]),_:1},8,[`onClick`])]),_:1})]),_:1},8,[`data`])),[[H,v.value]]),h(`div`,E,[t(S,{"current-page":b.page,"onUpdate:currentPage":o[3]||=e=>b.page=e,"page-size":b.perPage,"onUpdate:pageSize":o[4]||=e=>b.perPage=e,background:``,layout:`total, prev, pager, next`,total:b.total,onCurrentChange:F},null,8,[`current-page`,`page-size`,`total`])]),t(V,{modelValue:O.value,"onUpdate:modelValue":o[11]||=e=>O.value=e,title:k.value===`create`?`新增管理员`:`编辑管理员`,width:`min(480px, 92vw)`,"destroy-on-close":``},{footer:p(()=>[t(u,{onClick:o[10]||=e=>O.value=!1},{default:p(()=>[...o[16]||=[e(`取消`,-1)]]),_:1}),t(u,{type:`primary`,loading:A.value,onClick:R},{default:p(()=>[...o[17]||=[e(`保存`,-1)]]),_:1},8,[`loading`])]),default:p(()=>[t(B,{ref_key:`formRef`,ref:M,model:N,rules:P,"label-position":`top`},{default:p(()=>[t(C,{label:`账号`,prop:`username`},{default:p(()=>[t(c,{modelValue:N.username,"onUpdate:modelValue":o[5]||=e=>N.username=e,modelModifiers:{trim:!0},autocomplete:`off`},null,8,[`modelValue`])]),_:1}),t(C,{label:`姓名`,prop:`name`},{default:p(()=>[t(c,{modelValue:N.name,"onUpdate:modelValue":o[6]||=e=>N.name=e,modelModifiers:{trim:!0}},null,8,[`modelValue`])]),_:1}),t(C,{label:`手机号`},{default:p(()=>[t(c,{modelValue:N.mobile,"onUpdate:modelValue":o[7]||=e=>N.mobile=e,modelModifiers:{trim:!0}},null,8,[`modelValue`])]),_:1}),t(C,{label:k.value===`create`?`密码`:`新密码(留空不改)`,prop:`password`},{default:p(()=>[t(c,{modelValue:N.password,"onUpdate:modelValue":o[8]||=e=>N.password=e,type:`password`,"show-password":``,autocomplete:`new-password`},null,8,[`modelValue`])]),_:1},8,[`label`]),t(C,{label:`状态`},{default:p(()=>[t(j,{modelValue:N.status,"onUpdate:modelValue":o[9]||=e=>N.status=e,style:{width:`100%`}},{default:p(()=>[t(w,{label:`启用`,value:`active`}),t(w,{label:`停用`,value:`disabled`})]),_:1},8,[`modelValue`])]),_:1})]),_:1},8,[`model`])]),_:1},8,[`modelValue`,`title`])])}}}),[[`__scopeId`,`data-v-61edf8d8`]]);export{D as default}; \ No newline at end of file diff --git a/public/admin/assets/ApplyView-C88S5zde.js b/public/admin/assets/ApplyView-C6M85uKr.js similarity index 99% rename from public/admin/assets/ApplyView-C88S5zde.js rename to public/admin/assets/ApplyView-C6M85uKr.js index dceb378..f3d211d 100644 --- a/public/admin/assets/ApplyView-C88S5zde.js +++ b/public/admin/assets/ApplyView-C6M85uKr.js @@ -1 +1 @@ -import{$t as e,C as t,D as n,Et as r,R as i,S as a,V as o,W as s,Y as c,_t as l,at as u,b as d,c as ee,ct as f,d as te,g as p,ht as m,in as h,k as g,m as ne,q as _,s as re,u as ie,w as v,x as y}from"./vue.runtime.esm-bundler-OsdSFvn7.js";import{_ as ae,d as oe,m as se}from"./api-rQwE0AaH.js";import{S as ce,l as le,u as ue,x as de}from"./index-DAT5gpOZ.js";import{t as fe}from"./_plugin-vue_export-helper-CXTkFu_Z.js";import{a as pe,i as me,r as he,t as ge}from"./competitionBranding-DKFkcrfF.js";import{n as _e,t as ve}from"./participantContact-DSzdsPPk.js";import{t as ye}from"./downloadFeedback-aIJlOgpJ.js";var be={北京市:[`北京市`],天津市:[`天津市`],上海市:[`上海市`],重庆市:[`重庆市`],河北省:[`石家庄市`,`唐山市`,`秦皇岛市`,`邯郸市`,`邢台市`,`保定市`,`张家口市`,`承德市`,`沧州市`,`廊坊市`,`衡水市`],山西省:[`太原市`,`大同市`,`阳泉市`,`长治市`,`晋城市`,`朔州市`,`晋中市`,`运城市`,`忻州市`,`临汾市`,`吕梁市`],内蒙古自治区:[`呼和浩特市`,`包头市`,`乌海市`,`赤峰市`,`通辽市`,`鄂尔多斯市`,`呼伦贝尔市`,`巴彦淖尔市`,`乌兰察布市`,`兴安盟`,`锡林郭勒盟`,`阿拉善盟`],辽宁省:[`沈阳市`,`大连市`,`鞍山市`,`抚顺市`,`本溪市`,`丹东市`,`锦州市`,`营口市`,`阜新市`,`辽阳市`,`盘锦市`,`铁岭市`,`朝阳市`,`葫芦岛市`],吉林省:[`长春市`,`吉林市`,`四平市`,`辽源市`,`通化市`,`白山市`,`松原市`,`白城市`,`延边朝鲜族自治州`],黑龙江省:[`哈尔滨市`,`齐齐哈尔市`,`鸡西市`,`鹤岗市`,`双鸭山市`,`大庆市`,`伊春市`,`佳木斯市`,`七台河市`,`牡丹江市`,`黑河市`,`绥化市`,`大兴安岭地区`],江苏省:[`南京市`,`无锡市`,`徐州市`,`常州市`,`苏州市`,`南通市`,`连云港市`,`淮安市`,`盐城市`,`扬州市`,`镇江市`,`泰州市`,`宿迁市`],浙江省:[`杭州市`,`宁波市`,`温州市`,`嘉兴市`,`湖州市`,`绍兴市`,`金华市`,`衢州市`,`舟山市`,`台州市`,`丽水市`],安徽省:[`合肥市`,`芜湖市`,`蚌埠市`,`淮南市`,`马鞍山市`,`淮北市`,`铜陵市`,`安庆市`,`黄山市`,`滁州市`,`阜阳市`,`宿州市`,`六安市`,`亳州市`,`池州市`,`宣城市`],福建省:[`福州市`,`厦门市`,`莆田市`,`三明市`,`泉州市`,`漳州市`,`南平市`,`龙岩市`,`宁德市`],江西省:[`南昌市`,`景德镇市`,`萍乡市`,`九江市`,`新余市`,`鹰潭市`,`赣州市`,`吉安市`,`宜春市`,`抚州市`,`上饶市`],山东省:[`济南市`,`青岛市`,`淄博市`,`枣庄市`,`东营市`,`烟台市`,`潍坊市`,`济宁市`,`泰安市`,`威海市`,`日照市`,`临沂市`,`德州市`,`聊城市`,`滨州市`,`菏泽市`],河南省:[`郑州市`,`开封市`,`洛阳市`,`平顶山市`,`安阳市`,`鹤壁市`,`新乡市`,`焦作市`,`濮阳市`,`许昌市`,`漯河市`,`三门峡市`,`南阳市`,`商丘市`,`信阳市`,`周口市`,`驻马店市`,`济源市`],湖北省:[`武汉市`,`黄石市`,`十堰市`,`宜昌市`,`襄阳市`,`鄂州市`,`荆门市`,`孝感市`,`荆州市`,`黄冈市`,`咸宁市`,`随州市`,`恩施土家族苗族自治州`,`仙桃市`,`潜江市`,`天门市`,`神农架林区`],湖南省:[`长沙市`,`株洲市`,`湘潭市`,`衡阳市`,`邵阳市`,`岳阳市`,`常德市`,`张家界市`,`益阳市`,`郴州市`,`永州市`,`怀化市`,`娄底市`,`湘西土家族苗族自治州`],广东省:[`广州市`,`韶关市`,`深圳市`,`珠海市`,`汕头市`,`佛山市`,`江门市`,`湛江市`,`茂名市`,`肇庆市`,`惠州市`,`梅州市`,`汕尾市`,`河源市`,`阳江市`,`清远市`,`东莞市`,`中山市`,`潮州市`,`揭阳市`,`云浮市`],广西壮族自治区:[`南宁市`,`柳州市`,`桂林市`,`梧州市`,`北海市`,`防城港市`,`钦州市`,`贵港市`,`玉林市`,`百色市`,`贺州市`,`河池市`,`来宾市`,`崇左市`],海南省:[`海口市`,`三亚市`,`三沙市`,`儋州市`,`五指山市`,`琼海市`,`文昌市`,`万宁市`,`东方市`,`定安县`,`屯昌县`,`澄迈县`,`临高县`,`白沙黎族自治县`,`昌江黎族自治县`,`乐东黎族自治县`,`陵水黎族自治县`,`保亭黎族苗族自治县`,`琼中黎族苗族自治县`],四川省:[`成都市`,`自贡市`,`攀枝花市`,`泸州市`,`德阳市`,`绵阳市`,`广元市`,`遂宁市`,`内江市`,`乐山市`,`南充市`,`眉山市`,`宜宾市`,`广安市`,`达州市`,`雅安市`,`巴中市`,`资阳市`,`阿坝藏族羌族自治州`,`甘孜藏族自治州`,`凉山彝族自治州`],贵州省:[`贵阳市`,`六盘水市`,`遵义市`,`安顺市`,`毕节市`,`铜仁市`,`黔西南布依族苗族自治州`,`黔东南苗族侗族自治州`,`黔南布依族苗族自治州`],云南省:[`昆明市`,`曲靖市`,`玉溪市`,`保山市`,`昭通市`,`丽江市`,`普洱市`,`临沧市`,`楚雄彝族自治州`,`红河哈尼族彝族自治州`,`文山壮族苗族自治州`,`西双版纳傣族自治州`,`大理白族自治州`,`德宏傣族景颇族自治州`,`怒江傈僳族自治州`,`迪庆藏族自治州`],西藏自治区:[`拉萨市`,`日喀则市`,`昌都市`,`林芝市`,`山南市`,`那曲市`,`阿里地区`],陕西省:[`西安市`,`铜川市`,`宝鸡市`,`咸阳市`,`渭南市`,`延安市`,`汉中市`,`榆林市`,`安康市`,`商洛市`],甘肃省:[`兰州市`,`嘉峪关市`,`金昌市`,`白银市`,`天水市`,`武威市`,`张掖市`,`平凉市`,`酒泉市`,`庆阳市`,`定西市`,`陇南市`,`临夏回族自治州`,`甘南藏族自治州`],青海省:[`西宁市`,`海东市`,`海北藏族自治州`,`黄南藏族自治州`,`海南藏族自治州`,`果洛藏族自治州`,`玉树藏族自治州`,`海西蒙古族藏族自治州`],宁夏回族自治区:[`银川市`,`石嘴山市`,`吴忠市`,`固原市`,`中卫市`],新疆维吾尔自治区:[`乌鲁木齐市`,`克拉玛依市`,`吐鲁番市`,`哈密市`,`昌吉回族自治州`,`博尔塔拉蒙古自治州`,`巴音郭楞蒙古自治州`,`阿克苏地区`,`克孜勒苏柯尔克孜自治州`,`喀什地区`,`和田地区`,`伊犁哈萨克自治州`,`塔城地区`,`阿勒泰地区`,`石河子市`,`阿拉尔市`,`图木舒克市`,`五家渠市`,`北屯市`,`铁门关市`,`双河市`,`可克达拉市`,`昆玉市`,`胡杨河市`,`新星市`],香港特别行政区:[`香港`],澳门特别行政区:[`澳门`],台湾省:[`台北市`,`新北市`,`桃园市`,`台中市`,`台南市`,`高雄市`,`新竹市`,`嘉义市`]},xe=`北京市.天津市.上海市.重庆市.河北省.山西省.内蒙古自治区.辽宁省.吉林省.黑龙江省.江苏省.浙江省.安徽省.福建省.江西省.山东省.河南省.湖北省.湖南省.广东省.广西壮族自治区.海南省.四川省.贵州省.云南省.西藏自治区.陕西省.甘肃省.青海省.宁夏回族自治区.新疆维吾尔自治区.香港特别行政区.澳门特别行政区.台湾省`.split(`.`),Se=[`pdf`,`ppt`,`pptx`,`doc`,`docx`,`wps`,`rar`,`zip`],b=[{key:`player_name`,type:`text`,label:`参赛人姓名`,required:!0,help:``},{key:`school`,type:`text`,label:`毕业院校`,required:!0},{key:`degree`,type:`select`,label:`最高学历`,required:!0,options:[`大专`,`本科`,`硕士`,`博士`,`其他`].map(e=>({label:e,value:e}))},{key:`contact_email`,type:`email`,label:`注册邮箱`,required:!0},{key:`contact_mobile`,type:`tel`,label:`联系电话`,required:!0,placeholder:`11 位中国大陆手机号`},{key:`entry_group`,type:`select`,label:`参赛组别`,required:!0,options:[{label:`创新组`,value:`创新组`},{label:`创业组`,value:`创业组`}],help:`仅限创业组填报企业名称(创新组不展示该字段)`},{key:`company_name`,type:`text`,label:`企业名称`,required:!1,required_when:{field:`entry_group`,values:[`创业组`]},placeholder:`请填写工商注册全称`,prefill_from:`user.company`},{key:`project_name`,type:`text`,label:`项目名称`,required:!0},{key:`track`,type:`select`,label:`主题赛道`,required:!0,help:`请从本场赛事公布的赛道中选择`,options:[]},{key:`location_country`,type:`select`,label:`项目所在地`,required:!0,options:[{label:`中国`,value:`中国`},{label:`海外`,value:`海外`}]},{key:`location_province`,type:`select`,label:`省份`,required:!1,options:[]},{key:`location_city`,type:`text`,label:`城市`,required:!1},{key:`oversea_country`,type:`text`,label:`所在国(海外)`,required:!1,placeholder:`如:新加坡、日本、美国`},{key:`intro`,type:`textarea`,label:`项目简介`,required:!1,placeholder:`约200字左右`},{key:`recommend`,type:`text`,label:`推荐方`,required:!1,placeholder:`如有推荐单位或推荐人可填写`},{key:`commitment_accepted`,type:`checkbox`,label:`本人已阅读并同意《参赛承诺书》的全部内容`,required:!0,help:`提交报名即表示承诺所填信息真实有效,并遵守赛事规则。`},{key:`plan`,type:`file`,label:`上传商业计划书`,required:!0,help:`可上传多个文件,单文件 20M 以内`},{key:`supporting`,type:`file`,label:`其他佐证材料`,required:!1,help:`可选;格式同计划书`}];function x(e){return Array.isArray(e)?e.map(e=>typeof e==`object`&&e&&`label`in e&&`value`in e?{label:String(e.label),value:String(e.value)}:typeof e==`string`?{label:e,value:e}:null).filter(e=>e!=null&&String(e.label).trim()!==``&&String(e.value).trim()!==``):[]}function S(e){if(e!=null){if(Array.isArray(e)){let t=e.map(e=>String(e).trim().toLowerCase().replace(/^\./,``)).filter(e=>e!==``);return t.length?[...new Set(t)]:void 0}if(typeof e==`string`){let t=e.split(/[,;\s|]+/).map(e=>e.trim().toLowerCase().replace(/^\./,``)).filter(e=>e!==``);return t.length?[...new Set(t)]:void 0}}}function C(e){if(e==null||e===``)return;let t=typeof e==`number`?e:parseInt(String(e),10);if(!Number.isFinite(t))return;let n=Math.floor(t);return n>=1?n:void 0}function Ce(e){if(!Array.isArray(e)||e.length===0)return b.map(e=>({...e,options:e.options?[...e.options]:void 0}));let t=[];for(let n of e){if(typeof n!=`object`||!n)continue;let e=n,r=String(e.key??``).trim();if(!r)continue;let i=String(e.type??`text`),a=String(e.label??r),o=!!e.required,s=e.placeholder,c=s!=null&&String(s).trim()!==``?String(s).trim():void 0,l=e.help,u=l!=null&&String(l).trim()!==``?String(l).trim():void 0,d=e.prefill_from,ee=d!=null&&String(d).trim()!==``?String(d).trim():void 0,f=e.title_supplement,te=f!=null&&String(f).trim()!==``?String(f).trim():void 0,p,m=e.required_when;if(typeof m==`object`&&m&&!Array.isArray(m)){let e=m,t=String(e.field??``).trim(),n=e.values,r=Array.isArray(n)?n.map(e=>String(e).trim()).filter(e=>e!==``):[];t&&r.length&&(p={field:t,values:r})}let h;if(i===`select`&&Array.isArray(e.options)&&(h=x(e.options)),r===`track`&&(h=[]),i===`select`&&r!==`track`&&(!h||h.length===0))if(r===`location_province`)h=xe.map(e=>({label:e,value:e}));else{let e=b.find(e=>e.key===r);e?.options?.length&&(h=e.options.map(e=>({...e})))}let g,ne;i===`file`&&(g=S(e.file_extensions),ne=C(e.file_max_count)),t.push({key:r,type:i,label:a,title_supplement:te,required:o,placeholder:c,help:u,prefill_from:ee,options:h,required_when:p,file_extensions:g,file_max_count:ne})}return t.length?t:b.map(e=>({...e}))}var we={class:`apply-form-page`},Te={class:`form-page-header flex-shrink-0 mb-3`},Ee={class:`mb-0 form-page-title`},De={key:0,class:`text-secondary prototype-subtitle mb-0 mt-2`},Oe={key:1,class:`text-danger small mb-0 mt-2`},ke={key:2,class:`text-warning small mb-0 mt-2`},Ae={key:0,class:`apply-form-scroll`},je={class:`card mb-0`},Me={class:`card-body`},Ne={class:`application-status-mark`,"aria-hidden":`true`},Pe={key:0,viewBox:`0 0 24 24`,width:`22`,height:`22`,fill:`none`},Fe={key:1,viewBox:`0 0 24 24`,width:`22`,height:`22`,fill:`none`},Ie={class:`application-status-copy`},Le={class:`apply-contact-panel`,"aria-label":`咨询电话`},Re=[`href`],ze=[`href`],Be={key:0,class:`col-md-4`},Ve={class:`form-label`,id:`trackFieldLabel`},He={key:0,class:`text-danger`},Ue={key:1,class:`signup-field-title-supplement ms-1 fw-normal text-secondary`},We={class:`track-custom-select w-100`},Ge=[`required`,`disabled`],Ke=[`value`],qe={class:`dropdown w-100`},Je=[`disabled`],Ye={class:`track-toggle-label text-truncate`},Xe={key:0,class:`track-selected-note`},Ze={class:`dropdown-menu w-100 border shadow-sm rounded-2 py-0 my-1 track-custom-menu`},Qe=[`onClick`],$e={class:`track-pick-inline`},et={class:`text-body`},tt={key:0,class:`track-custom-note`},nt={key:0,class:`text-secondary prototype-subtitle d-block`},rt={key:1,class:`col-12`},it={class:`form-label`},at={key:0,class:`text-danger`},ot={key:1,class:`signup-field-title-supplement ms-1 fw-normal text-secondary`},st=[`accept`,`disabled`],ct={key:0,class:`text-secondary prototype-subtitle d-block mt-1`},lt={key:1,class:`supporting-file-list mt-2`,"aria-live":`polite`},ut={class:`supporting-file-meta`},dt=[`title`],ft={class:`supporting-file-size`},pt={class:`supporting-file-actions`},mt=[`onClick`],ht=[`disabled`,`onClick`],gt={class:`text-secondary prototype-subtitle d-block`},_t={key:2,class:`invalid-feedback d-block`},vt={key:2,class:`col-12`},yt={class:`form-label`},bt={key:0,class:`text-danger`},xt={key:1,class:`signup-field-title-supplement ms-1 fw-normal text-secondary`},St=[`accept`,`disabled`],Ct={key:0,class:`text-secondary prototype-subtitle d-block mt-1`},wt={key:1,class:`supporting-file-list mt-2`,"aria-live":`polite`},Tt={class:`supporting-file-meta`},Et=[`title`],Dt={class:`supporting-file-size`},Ot={class:`supporting-file-actions`},kt=[`onClick`],At=[`disabled`,`onClick`],jt={class:`text-secondary prototype-subtitle d-block`},Mt={key:2,class:`invalid-feedback d-block`},Nt={class:`form-label`},Pt={key:0,class:`text-danger`},Ft={key:1,class:`signup-field-title-supplement ms-1 fw-normal text-secondary`},It=[`onUpdate:modelValue`,`required`,`disabled`],Lt={value:``,disabled:``},Rt=[`value`],zt={class:`invalid-feedback`},Bt={key:0,class:`text-secondary prototype-subtitle d-block`},Vt={class:`form-label`},Ht={key:0,class:`text-danger`},Ut={key:1,class:`signup-field-title-supplement ms-1 fw-normal text-secondary`},Wt=[`required`,`disabled`],Gt={value:``,disabled:``},Kt=[`value`],qt={class:`invalid-feedback`},Jt={key:0,class:`text-secondary prototype-subtitle d-block`},Yt={class:`form-label`},Xt={key:0,class:`text-danger`},Zt={key:1,class:`signup-field-title-supplement ms-1 fw-normal text-secondary`},Qt={class:`d-flex flex-wrap align-items-center gap-2 mb-1`},$t=[`disabled`],en={key:0,class:`badge rounded-pill px-3 py-2 promise-signed-badge`},tn={key:0,class:`text-secondary prototype-subtitle d-block mt-1`},nn={class:`form-check`},rn=[`id`,`onUpdate:modelValue`,`required`,`disabled`],an=[`for`],on={key:0,class:`text-danger ms-1`},sn={key:1,class:`signup-field-title-supplement ms-1 fw-normal text-secondary`},cn={key:0,class:`text-secondary prototype-subtitle d-block mt-1`},ln={class:`form-label`},un={key:0,class:`text-danger`},dn={key:1,class:`signup-field-title-supplement ms-1 fw-normal text-secondary`},fn=[`onUpdate:modelValue`,`required`,`disabled`],pn={key:0,class:`d-flex flex-wrap align-items-baseline gap-2 mt-1 w-100`},mn={key:0,class:`apply-textarea-placeholder-hint mb-0`},hn={key:1,class:`text-secondary prototype-subtitle intro-char-count mb-0 ms-auto`},gn={class:`form-label`},_n={key:0,class:`text-danger`},vn={key:1,class:`signup-field-title-supplement ms-1 fw-normal text-secondary`},yn=[`onUpdate:modelValue`,`type`,`required`,`disabled`,`placeholder`,`pattern`,`autocomplete`],bn={class:`invalid-feedback`},xn={key:0,class:`text-secondary prototype-subtitle d-block`},Sn={class:`col-12 apply-form-actions mt-3 pt-3 border-top d-flex gap-2 flex-wrap`},Cn=[`disabled`],wn=[`disabled`],Tn={class:`modal-dialog modal-dialog-centered promise-sign-modal`},En={class:`modal-content promise-sign-sheet`},Dn={class:`modal-body pt-2`},On={class:`promise-doc-paper`},kn={class:`promise-doc-heading text-center`},An={class:`promise-doc-scroll`},jn=[`innerHTML`],Mn={class:`promise-doc-signblock`},Nn={class:`promise-doc-signrow`},Pn={class:`promise-sig-wrap`},Fn={class:`promise-sig-box`},In={class:`promise-doc-daterow`},Ln={class:`promise-doc-dateline`},Rn={class:`modal-dialog modal-dialog-centered notice-modal-dialog`},zn={class:`modal-body notice-modal-body`},Bn={class:`notice-icon`,"aria-hidden":`true`},Vn={key:0,viewBox:`0 0 24 24`,width:`36`,height:`36`,fill:`none`,"aria-hidden":`true`},Hn={key:1,viewBox:`0 0 24 24`,width:`36`,height:`36`,fill:`none`,"aria-hidden":`true`},Un={class:`notice-title`},Wn={key:0,class:`notice-text text-break`,style:{"white-space":`pre-wrap`}},Gn=20*1024*1024,Kn=`^1[3-9]\\d{9}$`,qn=`

本项目申报信息中所填写的各栏目内容真实、准确。本项目负责人(团队)对申报材料的真实性负完全责任。

若申报信息中存在虚假、伪造等不实情况,本项目负责人(团队)将积极配合调查,并按照有关规定接受处理。

`,Jn=2097152,w=fe(g({__name:`ApplyFormView`,setup(a){let g=de,fe=ue(),b=le(),x=d(()=>String(b.params.slug??``).trim());function S(e){let t=e.value;return t==null?null:Array.isArray(t)?t[0]??null:t}function C(e){let t=(e??``).trim();return!t||/applications\.|config\/contest|与提交校验|\^1\[3-9\]|kind=\s*plan|kind=\s*supporting|\\d\{9\}/i.test(t)?``:t}function w(e){return String(e.title_supplement??``).trim()}function T(){return se()}function E(){let e=x.value;return e?`?competition_slug=${encodeURIComponent(e)}`:``}function Yn(e){let t={Authorization:`Bearer ${localStorage.getItem(`cxxfds_token`)||``}`,Accept:`application/json`};e&&(t[`Content-Type`]=`application/json`);let n=x.value;return n&&(t[`X-Competition-Slug`]=n),t}let Xn=Promise.resolve();async function D(e,t){let n=()=>fetch(e,t),r=Xn.then(n,n);return Xn=r.then(()=>void 0,()=>void 0),r}function O(){localStorage.removeItem(oe);let e=x.value;e?fe.push({name:`participant-login`,params:{slug:e},query:{redirect:b.fullPath}}):fe.push(`/c`)}let k=l(Ce([]));function Zn(e){let t=Se.map(e=>e.toLowerCase()),n=new Set(t),r=e?.file_extensions;if(!Array.isArray(r)||r.length===0)return[...t];let i=[...new Set(r.map(e=>String(e).trim().toLowerCase().replace(/^\./,``)).filter(Boolean).filter(e=>n.has(e)))];return i.length>0?i:[...t]}function Qn(e){let t=e?.file_max_count;if(typeof t!=`number`||!Number.isFinite(t))return null;let n=Math.floor(t);return n>=1?n:null}function $n(e){return k.value.find(t=>t.type===`file`&&t.key===e)}function er(e){return Zn(e).map(e=>`.`+e).join(`,`)}let A=l([]),tr=l(!1),nr=l(``),rr=l(``),ir=d(()=>rr.value.trim()||qn),ar=l(he()),j=l(``),M=m({});function or(e){for(let t of e)t.type!==`file`&&(t.key in M||(M[t.key]=``));e.some(e=>e.key===`commitment_accepted`)&&!(`promise_signature`in M)&&(M.promise_signature=``)}let sr=d(()=>`jscc_signup_form_draft_v2_${x.value||`x`}`),cr=l(`draft`),lr=l(``),N=l(!0),ur=l(!0),P=d(()=>cr.value===`submitted`),F=d(()=>Br(lr.value)),dr=d(()=>P.value&&N.value?`报名已提交,可继续修改`:P.value&&ur.value&&!N.value?`报名已提交,仅可补传附件`:P.value?`报名已提交,已锁定`:!N.value&&ur.value?`报名未提交,仅可补传附件`:N.value?`报名信息未提交`:`报名未提交,当前不可编辑`),fr=d(()=>P.value&&N.value?`${F.value?`上次提交时间:${F.value}。`:``}在报名截止且没有任一评委提交评分前,你仍可修改资料、增删附件,并点击“更新报名”覆盖提交。评审开始后报名会自动锁定,请保持联系方式畅通。`:ur.value&&!N.value?`${F.value?`提交时间:${F.value}。`:``}报名已截止,组委会已开放你补传附件:可上传或删除附件,上传成功即生效,无需再次提交。其他报名信息不可修改;若已有评委评审则仍会锁定。`:P.value?`${F.value?`提交时间:${F.value}。`:``}报名已因截止或评审记录产生而锁定,不能再修改资料、增删附件或重复提交。后续请等待赛事组委会通知;如需更正请联系组委会。`:N.value?`请完整填写报名信息、上传商业计划书并签署承诺书;点击“保存”只暂存草稿,点击“提交报名”后才进入已提交状态。`:`当前报名窗口已关闭或报名已被锁定,无法新建、保存或提交报名。如认为状态异常,请联系赛事组委会。`),pr=l(!1),mr=l(null),hr=l(null),gr=d(()=>{let e=M.track,t=A.value.find(t=>t.track_code===e);return t?t.title:e||`请选择主题赛道`}),_r=d(()=>M.track?`text-body`:`text-secondary`),vr=d(()=>{let e=M.track;return(A.value.find(t=>t.track_code===e)?.description??``).trim()});function yr(e){return(e??``).trim()}function br(e){M.track=e,pr.value=!1;let t=S(hr);t&&g.getInstance(t)?.hide()}let I=d(()=>M.location_country===`中国`),xr=d(()=>M.location_country===`海外`),Sr=d(()=>xe.map(e=>({label:e,value:e}))),Cr=d(()=>{let e=M.location_province;return e?(be[e]||[]).map(e=>({label:e,value:e})):[]});function wr(){xr.value?(M.location_province=``,M.location_city=``):I.value||(M.location_province=``,M.location_city=``,M.oversea_country=``)}u(()=>M.location_country,()=>{wr()}),u(()=>M.location_province,(e,t)=>{I.value&&e!==t&&(t==null||String(t).trim()===``||(M.location_city=``))}),u(()=>M.entry_group,e=>{e===`创新组`&&(M.company_name=``)});let L=l([]),R=l([]),z=l([]),B=l(!1),V=l(``),H=l(``),Tr=l(``),Er=l(``),U=l(!1),W=d(()=>!N.value),G=d(()=>!ur.value),Dr=l(null),Or=l(null),kr=l(null),Ar=d(()=>(M.intro||``).length),jr=d(()=>pe(ar.value,nr.value)),Mr=d(()=>{let e=ar.value.apply?.headerSubtitle;return me(e)?String(e).trim():``});function Nr(e){let t=String(M[e.key]??``).trim();return e.type===`email`||e.key===`contact_email`?t?`请输入正确的邮箱格式`:`请填写${e.label}`:(e.type===`tel`||e.key===`contact_mobile`)&&t?`请输入正确的11位中国大陆手机号`:`请填写${e.label}`}function K(e){return e.type===`textarea`||e.type===`file`||e.type===`checkbox`?`col-12`:`col-md-4`}function Pr(e){return e.type===`textarea`?String(e.placeholder??``).trim():``}function Fr(e){return e.type===`file`?!0:e.key===`company_name`?M.entry_group!==`创新组`:e.key===`location_province`||e.key===`location_city`?I.value:e.key===`oversea_country`?xr.value:!0}function q(e){if(e.key===`location_province`||e.key===`location_city`)return I.value;if(e.key===`oversea_country`)return xr.value;let t=e.required_when;if(t?.field&&t.values?.length){let e=String(M[t.field]??``).trim();if(t.values.includes(e))return!0}return e.required}let Ir=d(()=>k.value.filter(e=>Fr(e)));function Lr(e){return e.key===`track`?A.value.map(e=>({label:e.title,value:e.track_code})):e.key===`location_province`?Sr.value:e.key===`location_city`&&I.value?Cr.value:e.options??[]}function Rr(e){return e.key===`location_city`&&I.value}function zr(e){return e>=1024*1024?`${(e/1024/1024).toFixed(1).replace(/\.0$/,``)}M`:e>=1024?`${Math.ceil(e/1024)}K`:`${e}B`}function J(e){return e.file?e.file.name:e.original_name||``}function Br(e){if(!e)return``;let t=new Date(e);if(Number.isNaN(t.getTime()))return``;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 Vr(e){if(e.length===0)return`尚未选择文件`;let t=e.filter(e=>e.fromServer).length;return t===e.length?`已上传 ${e.length} 个文件`:`已选择 ${e.length} 个文件,正在上传 ${e.length-t} 个`}function Hr(e){return`请选择${e.label}`}function Ur(e){let t=e.message||``,n=e.errors;return n&&Object.keys(n).length?`${t}\n${JSON.stringify(n)}`:t||`操作失败`}let Wr=l(null),Gr=l(`提示`),Kr=l(``),qr=l(!1);function Y(e,t=`提示`,n=`warning`){return Gr.value=t,Kr.value=e,qr.value=n===`success`,new Promise(e=>{i(()=>{let t=Wr.value;if(!t){e();return}t.addEventListener(`hidden.bs.modal`,()=>e(),{once:!0}),ce.getOrCreateInstance(t).show()})})}function Jr(e){return e===`navigateTo`||e===`reLaunch`||e===`switchTab`?e:`redirectTo`}function Yr(e){if(!e)return null;if(e.type===`mini_program`){let t=typeof e.path==`string`?e.path.trim():``;return t?{type:`mini_program`,path:t,method:Jr(e.method)}:null}let t=typeof e.redirect_url==`string`?e.redirect_url.trim():``;return t?{type:`web`,redirectUrl:t}:null}let Xr=null;function Zr(){if(window.wx?.miniProgram)return Promise.resolve(window.wx);if(Xr)return Xr;let e=new Promise((e,t)=>{let n=document.querySelector(`script[data-cxcyds-wx-jssdk="true"]`);if(n){n.addEventListener(`load`,()=>window.wx?e(window.wx):t(Error(`wx missing`)),{once:!0}),n.addEventListener(`error`,()=>t(Error(`wx jssdk load failed`)),{once:!0});return}let r=document.createElement(`script`);r.src=`https://res.wx.qq.com/open/js/jweixin-1.6.0.js`,r.async=!0,r.dataset.cxcydsWxJssdk=`true`,r.onload=()=>{window.wx?.miniProgram?e(window.wx):t(Error(`wx miniProgram bridge missing`))},r.onerror=()=>t(Error(`wx jssdk load failed`)),document.head.appendChild(r)}).finally(()=>{Xr=null});return Xr=e,e}async function Qr(e,t){try{let n=(await Zr()).miniProgram?.[t];return typeof n==`function`?(n({url:e}),!0):!1}catch{return!1}}let $r=l(null),X=l(null),ei=l(``),ti=l(!0),Z=null,ni=520,ri=140,ii=!1,ai=!1,oi=null,si=null;function ci(){oi?.abort(),oi=null}let li=d(()=>M.commitment_accepted===`1`&&String(M.promise_signature??``).trim()!==``),ui=d(()=>{let e=nr.value.trim();return e?`${e} 赛事承诺书`:`赛事承诺书`});function di(e){return`${e.getFullYear()}年${e.getMonth()+1}月${e.getDate()}日`}function fi(e,t){let n=t.getBoundingClientRect();if(`touches`in e&&e.touches[0]){let t=e.touches[0];return{x:t.clientX-n.left,y:t.clientY-n.top}}let r=e;return{x:r.clientX-n.left,y:r.clientY-n.top}}function pi(){let e=X.value;if(!e)return;let t=e.closest(`.promise-sig-wrap`),n=window.devicePixelRatio||1,r=window.getComputedStyle(e);ni=Math.max(280,Math.floor(t?.clientWidth||520)),ri=Math.max(76,Math.floor(parseFloat(r.height)||110)),e.style.width=`${ni}px`,e.style.height=`${ri}px`,e.width=Math.floor(ni*n),e.height=Math.floor(ri*n),Z=e.getContext(`2d`),Z&&(Z.setTransform(1,0,0,1,0,0),Z.scale(n,n),Z.fillStyle=`#ffffff`,Z.fillRect(0,0,ni,ri),Z.strokeStyle=`#111111`,Z.lineWidth=2,Z.lineCap=`round`,Z.lineJoin=`round`,ai=!1,ti.value=!0)}function mi(){let e=String(M.promise_signature??``).trim();if(!e||!Z)return;let t=new Image;t.onload=()=>{Z&&(Z.drawImage(t,0,0,ni,ri),ai=!0,ti.value=!1)},t.src=e}function hi(){let e=X.value;if(!e||!Z)return;ci(),oi=new AbortController;let{signal:t}=oi,n=t=>{if(`touches`in t&&t.preventDefault(),!Z)return;ii=!0;let n=fi(t,e);Z.beginPath(),Z.moveTo(n.x,n.y)},r=t=>{if(!ii||!Z)return;`touches`in t&&t.preventDefault();let n=fi(t,e);Z.lineTo(n.x,n.y),Z.stroke(),ai=!0,ti.value=!1},i=()=>{ii=!1};e.addEventListener(`mousedown`,n,{signal:t}),e.addEventListener(`mousemove`,r,{signal:t}),window.addEventListener(`mouseup`,i,{signal:t}),e.addEventListener(`touchstart`,n,{passive:!1,signal:t}),e.addEventListener(`touchmove`,r,{passive:!1,signal:t}),e.addEventListener(`touchend`,i,{signal:t}),e.addEventListener(`touchcancel`,i,{signal:t})}function gi(){ei.value=di(new Date);let e=t=>{if(!X.value){t<40&&requestAnimationFrame(()=>e(t+1));return}pi(),hi(),String(M.promise_signature??``).trim()&&M.commitment_accepted===`1`&&mi()};i(()=>{requestAnimationFrame(()=>e(0))})}function _i(e){si?.();let t=()=>{gi()},n=()=>{ci()};e.addEventListener(`shown.bs.modal`,t),e.addEventListener(`hidden.bs.modal`,n),si=()=>{e.removeEventListener(`shown.bs.modal`,t),e.removeEventListener(`hidden.bs.modal`,n),si=null}}u($r,e=>{si?.(),e&&_i(e)},{flush:`post`});function vi(){if(W.value)return;let e=$r.value;e&&ce.getOrCreateInstance(e).show()}function yi(){pi(),hi()}function bi(){let e=X.value;if(!ai||!e){Y(`请先在签名区域内手写签名后再确认。`,`请确认`,`warning`);return}let t=e.toDataURL(`image/png`);if(t.length>Jn){Y(`签名数据过大,请清除后重新签名或联系管理员。`,`提示`,`warning`);return}M.promise_signature=t,M.commitment_accepted=`1`;let n=$r.value;n&&ce.getInstance(n)?.hide()}function xi(){let e={};for(let t of k.value)if(t.type!==`file`){if(t.type===`checkbox`){e[t.key]=M[t.key]===`1`;continue}e[t.key]=M[t.key]??``}return k.value.some(e=>e.key===`commitment_accepted`)&&M.commitment_accepted===`1`&&(e.promise_signature=M.promise_signature??``),e}function Si(e,t,n,r){let i=Zn(r),a=Qn(r),o=e.filter(e=>e.file),s=e.filter(e=>e.fromServer&&!e.file);if(!o.length&&!s.length)return{ok:n,feedback:n?``:t};if(a!==null&&e.length>a)return{ok:!1,feedback:`最多可上传 ${a} 个文件,请删除多余文件后重试`};let c=o.map(e=>e.file).find(e=>{let t=(e.name.split(`.`).pop()||``).toLowerCase();return!i.includes(t)});if(c)return{ok:!1,feedback:`“${c.name}”格式不支持,请上传 ${i.join(`、`)} 格式的文件`};let l=o.map(e=>e.file).find(e=>e.size>Gn);return l?{ok:!1,feedback:`“${l.name}”大小不能超过20M`}:{ok:!0,feedback:``}}function Ci(){return k.value.some(e=>e.key===`plan`&&e.type===`file`)}function wi(){return k.value.some(e=>e.key===`supporting`&&e.type===`file`)}function Q(){if(!Ci())return S(Or)?.setCustomValidity(``),!0;let e=$n(`plan`),t=Si(L.value,`请上传商业计划书`,!1,e);return Tr.value=t.feedback,S(Or)?.setCustomValidity(t.ok?``:`missing`),t.ok}function $(){if(!wi())return S(kr)?.setCustomValidity(``),!0;let e=$n(`supporting`),t=Si(R.value,`文件格式或大小不符合要求`,!0,e);return Er.value=t.feedback,S(kr)?.setCustomValidity(t.ok?``:`bad`),t.ok}function Ti(){U.value=!0,Q(),$();let e=k.value.find(e=>e.key===`track`);if(e&&Fr(e)){pr.value=!M.track;let e=S(mr);e&&e.setCustomValidity(M.track?``:`请选择主题赛道`)}else pr.value=!1,S(mr)?.setCustomValidity(``);return!(Dr.value?.checkValidity()??!1)||e&&q(e)&&!M.track||!Q()||!$()?!1:k.value.find(e=>e.key===`commitment_accepted`)&&(M.commitment_accepted!==`1`||!String(M.promise_signature??``).trim())?(Y(`请先阅读并完成参赛承诺书的手写签署。`,`提示`,`warning`),!1):!0}async function Ei(e){let t=localStorage.getItem(oe);if(!t)return;let n=(e===`plan`?L.value:R.value).filter(e=>e.file&&!e.fromServer);if(n.length!==0){for(let r of n){if(!r.file)continue;let n=new FormData;n.append(`kind`,e===`plan`?`plan`:`supporting`),n.append(`file`,r.file);let i=await D(`${T()}/api/applications/current/files${E()}`,{method:`POST`,headers:{Authorization:`Bearer ${t}`,Accept:`application/json`},body:n}),a=await i.json().catch(()=>({}));if(i.status===401){O();return}if(!i.ok){Y(Ur(a),`提示`,`warning`);return}let o=r.previewUrl;r.id=a.id,r.fromServer=!0,r.original_name=a.original_name,r.size=a.size;let s=ae(String(a.url??``));r.url=s,r.previewUrl=s,o&&String(o).startsWith(`blob:`)&&URL.revokeObjectURL(o),delete r.file}Y(`文件已上传。`,`上传成功`,`success`),e===`plan`?Q():$()}}function Di(e){e.localBlobUrl&&e.localBlobUrl.startsWith(`blob:`)&&(URL.revokeObjectURL(e.localBlobUrl),delete e.localBlobUrl),e.previewUrl&&String(e.previewUrl).startsWith(`blob:`)&&URL.revokeObjectURL(e.previewUrl)}async function Oi(e){if(e.localBlobUrl){window.open(e.localBlobUrl,`_blank`,`noopener,noreferrer`);return}if(e.file&&e.previewUrl?.startsWith(`blob:`)){window.open(e.previewUrl,`_blank`,`noopener,noreferrer`);return}let t=ae(e.previewUrl||e.url);if(!t)return;if(!e.fromServer){window.open(t,`_blank`,`noopener,noreferrer`);return}let n=e.original_name?.trim()||`附件`,r=ye(n,e.size,`打开`);if(r)try{let i=await fetch(t,{credentials:`omit`,headers:{Accept:`application/json,*/*`}});if(!i.ok){let e=`附件文件不存在或已丢失`;try{let t=await i.json();typeof t.message==`string`&&t.message.trim()&&(e=t.message.trim())}catch{}await Y(e,`提示`,`warning`);return}r.setText(`正在打开「${n}」…`);let a=await i.blob(),o=URL.createObjectURL(a);e.localBlobUrl=o,window.open(o,`_blank`,`noopener,noreferrer`)}catch{await Y(`网络错误,无法打开附件`,`提示`,`warning`)}finally{r.close()}}async function ki(e,t){let n=String(e);if(G.value||z.value.includes(n))return;let r=t===`plan`?[...L.value]:[...R.value],i=r.find(e=>String(e.id)===n);if(!i)return;let a=i.fromServer?Number(i.id):NaN;if(i.fromServer&&Number.isFinite(a)&&a>0){if(!localStorage.getItem(`cxxfds_token`)){O();return}z.value=[...z.value,n];try{let e=new AbortController,t=window.setTimeout(()=>e.abort(),15e3),n=await D(`${T()}/api/applications/current/files/${a}/delete${E()}`,{method:`POST`,headers:Yn(!1),signal:e.signal});if(window.clearTimeout(t),n.status===401){O();return}if(n.status!==404&&!n.ok){Y(`删除失败`,`提示`,`warning`);return}}catch(e){Y(e instanceof DOMException&&e.name===`AbortError`?`删除超时,请关闭已打开的预览窗口后重试`:`删除失败`,`提示`,`warning`);return}finally{z.value=z.value.filter(e=>e!==n)}}Di(i),r=r.filter(t=>String(t.id)!==String(e)),t===`plan`?L.value=r:R.value=r,U.value=!0,t===`plan`?Q():$()}function Ai(e,t){if(!e?.length||G.value)return;let n=Qn($n(t)),r=t===`plan`?[...L.value]:[...R.value],i=Array.from(e),a=n===null?i.length:Math.max(0,n-r.length);if(i.length>a&&n!==null&&Y(`该栏最多上传 ${n} 个文件,已忽略多余 ${i.length-a} 个选择。`,`提示`,`warning`),i=i.slice(0,a),i.forEach(e=>{r.push({id:`tmp-${Date.now()}-${Math.random().toString(16).slice(2)}`,file:e,previewUrl:URL.createObjectURL(e),fromServer:!1})}),t===`plan`){L.value=[...r],V.value=``;let e=S(Or);e&&(e.value=``),U.value=!0,Q()}else{R.value=[...r],H.value=``;let e=S(kr);e&&(e.value=``),U.value=!0,$()}Ei(t)}function ji(){return{formModel:{...M},planFileNames:L.value.map(J).filter(Boolean),supportingFileNames:R.value.map(J).filter(Boolean)}}function Mi(){let e=ji();localStorage.setItem(sr.value,JSON.stringify(e)),e.planFileNames.length?V.value=`已保存商业计划书名称:${e.planFileNames.join(`、`)}`:V.value=``,e.supportingFileNames.length?H.value=`已保存其他佐证材料名称:${e.supportingFileNames.join(`、`)}`:H.value=``}function Ni(){let e=localStorage.getItem(sr.value);if(e)try{let t=JSON.parse(e);if(t.formModel&&typeof t.formModel==`object`)for(let e of Object.keys(t.formModel))M[e]=t.formModel[e]??``;let n=t.planFileNames||[];n.length&&(V.value=`上次保存商业计划书名称:${n.join(`、`)}(浏览器限制,需重新选择后预览或删除)`);let r=t.supportingFileNames;r?.length&&(H.value=`上次保存其他佐证材料名称:${r.join(`、`)}(浏览器限制,需重新选择后预览或删除)`),wr()}catch{localStorage.removeItem(sr.value)}}async function Pi(){tr.value=!1;let e=x.value;if(!e){j.value=`缺少赛事地址`;return}j.value=``;try{let t=await fetch(`${T()}/api/v1/public/competitions/by-slug/${encodeURIComponent(e)}`,{headers:{Accept:`application/json`}});if(!t.ok){j.value=t.status===404?`赛事不存在或未发布`:`无法加载赛事配置`;return}let n=await t.json(),r=n.data!=null&&typeof n.data==`object`&&!Array.isArray(n.data)?n.data:n;nr.value=String(r.name??``),rr.value=typeof r.pledge_content_html==`string`?r.pledge_content_html:``;let i=r.tracks;A.value=Array.isArray(i)?i:[];let a=r.signup_form_schema;if(typeof a==`string`)try{a=JSON.parse(a)}catch{a=[]}k.value=Ce(a),or(k.value),ar.value=ge(r.branding_json??null);let o=ar.value.documentTitle;me(o)&&typeof document<`u`&&(document.title=o.trim()),tr.value=!0}catch{j.value=`网络错误,无法加载赛事`}}function Fi(e){cr.value=e.status||`draft`,lr.value=typeof e.submitted_at==`string`?e.submitted_at:``,N.value=e.participant_may_edit!==!1,ur.value=typeof e.participant_may_edit_files==`boolean`?e.participant_may_edit_files:e.participant_may_edit!==!1;for(let t of k.value){if(t.type===`file`||t.key===`commitment_accepted`||t.key===`promise_signature`)continue;let n=Object.prototype.hasOwnProperty.call(e,t.key)?e[t.key]:void 0;t.type===`checkbox`?M[t.key]=n?`1`:``:M[t.key]=n==null?``:String(n)}let t=Object.prototype.hasOwnProperty.call(e,`promise_signature`),n=t?typeof e.promise_signature==`string`?e.promise_signature:``:String(M.promise_signature??``);(t||!e.promise_signed_at)&&(M.promise_signature=n),M.commitment_accepted=n.trim()&&e.promise_signed_at?`1`:``,wr(),L.value=(e.files||[]).filter(e=>e.kind===`plan`).map(e=>{let t=ae(e.url);return{id:e.id,fromServer:!0,original_name:e.original_name,size:e.size,url:t,previewUrl:t}}),R.value=(e.files||[]).filter(e=>e.kind===`supporting`).map(e=>{let t=ae(e.url);return{id:e.id,fromServer:!0,original_name:e.original_name,size:e.size,url:t,previewUrl:t}}),Q(),$()}async function Ii(){if(!localStorage.getItem(`cxxfds_token`))return!1;let e=new AbortController,t=window.setTimeout(()=>e.abort(),2e4);try{let t=await D(`${T()}/api/applications/current${E()}`,{headers:Yn(!1),signal:e.signal});return t.status===401?(localStorage.removeItem(oe),O(),!1):t.ok?(Fi(await t.json()),!0):!1}catch{return!1}finally{window.clearTimeout(t)}}async function Li(){if(B.value)return!1;B.value=!0;let e=new AbortController,t=window.setTimeout(()=>e.abort(),2e4);try{let t=await D(`${T()}/api/applications/current/save${E()}`,{method:`POST`,headers:Yn(!0),body:JSON.stringify(xi()),signal:e.signal});if(t.status===401)return O(),!1;if(!t.ok)return t.json().catch(()=>({})),Y(`草稿未能保存,请检查网络或稍后重试。`,`保存失败`,`warning`),!1;try{Fi(await t.json())}catch{}return!0}catch(e){return Y(e instanceof DOMException&&e.name===`AbortError`?`保存超时,请稍后重试`:`草稿未能保存,请检查网络或稍后重试。`,`保存失败`,`warning`),!1}finally{window.clearTimeout(t),B.value=!1}}function Ri(e){if(typeof e!=`object`||!e||Array.isArray(e))return[];let t=[];for(let n of Object.values(e))if(Array.isArray(n))for(let e of n)typeof e==`string`&&e.trim()&&t.push(e.trim());else typeof n==`string`&&n.trim()&&t.push(n.trim());return t}function zi(e){let t=e.trim();return t===`The given data was invalid.`||t===`The given data was invalid`||t===`给定的数据无效。`||t===`给定的数据无效`}function Bi(e,t){let n=Ri(t.errors);if(n.length>0)return n[0];let r=t.message;if(typeof r==`string`&&r.trim()){let e=r.trim();if(!zi(e))return e}return e===404?`赛事不存在或未发布,请返回重新进入报名页。`:e===403?`当前账号无权限提交,请确认登录状态或联系管理员。`:e===409?`报名状态已变更或发生冲突,请刷新页面后重试。`:e===429?`请求过于频繁,请稍后再试。`:e>=500?`服务暂时不可用,请稍后重试。`:e===422?`提交失败,请填写完整信息。`:`报名未能提交,请检查网络或稍后重试。`}async function Vi(){let e=new AbortController,t=window.setTimeout(()=>e.abort(),3e4);try{let t=await D(`${T()}/api/applications/current/submit${E()}`,{method:`POST`,headers:Yn(!0),body:JSON.stringify(xi()),signal:e.signal});if(t.status===401)return O(),!1;if(!t.ok){let e={};try{e=await t.json()}catch{}return Y(Bi(t.status,e),`提交失败`,`warning`),!1}let n=await t.json();Fi(n);let r=n.success_notice,i=r?.enabled===!0&&typeof r.message==`string`?r.message.trim():``;return{channelCallback:Yr(n.channel_callback),successNoticeMessage:i}}catch(e){return Y(e instanceof DOMException&&e.name===`AbortError`?`提交超时,请稍后重试`:`报名未能提交,请检查网络或稍后重试。`,`提交失败`,`warning`),!1}finally{window.clearTimeout(t)}}async function Hi(){if(!localStorage.getItem(`cxxfds_token`)){O();return}await Li()&&(Mi(),Y(`已保存草稿(按当前已填写信息暂存)。`,`保存成功`,`success`))}async function Ui(){if(!localStorage.getItem(`cxxfds_token`)){O();return}if(!Ti())return;let e=await Vi();if(!e)return;let t=e.successNoticeMessage||`已提交报名`;if(e.channelCallback){if(await Y(t,`提交成功`,`success`),e.channelCallback.type===`mini_program`){await Qr(e.channelCallback.path,e.channelCallback.method)||Y(`未检测到微信小程序回跳能力,请从小程序内重新进入或联系管理员。`,`回跳失败`,`warning`);return}window.location.href=e.channelCallback.redirectUrl;return}Y(t,`提交成功`,`success`)}return o(()=>{si?.(),ci()}),s(()=>{(async()=>{await Pi(),!j.value&&(await Ii()||Ni(),wr())})()}),(i,a)=>(_(),v(`div`,we,[y(`div`,Te,[y(`h5`,Ee,h(jr.value),1),!j.value&&Mr.value?(_(),v(`p`,De,h(Mr.value),1)):t(``,!0),j.value?(_(),v(`p`,Oe,h(j.value),1)):tr.value&&A.value.length===0&&k.value.some(e=>e.key===`track`)?(_(),v(`p`,ke,` 本场赛事尚未在「赛道管理」中配置可用赛道,提交时可能会失败,请联系管理员。 `)):t(``,!0)]),j.value?t(``,!0):(_(),v(`div`,Ae,[y(`div`,je,[y(`div`,Me,[y(`div`,{class:e([`application-status-panel`,P.value?`application-status-panel--submitted`:`application-status-panel--draft`]),role:`status`,"aria-live":`polite`},[y(`div`,Ne,[P.value?(_(),v(`svg`,Pe,[...a[5]||=[y(`circle`,{cx:`12`,cy:`12`,r:`9.5`,stroke:`currentColor`,"stroke-width":`1.8`},null,-1),y(`path`,{d:`M7.6 12.2l2.8 2.8 6-6.2`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`},null,-1)]])):(_(),v(`svg`,Fe,[...a[6]||=[y(`circle`,{cx:`12`,cy:`12`,r:`9.5`,stroke:`currentColor`,"stroke-width":`1.8`},null,-1),y(`path`,{d:`M12 7.5v5.2`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`},null,-1),y(`circle`,{cx:`12`,cy:`16.5`,r:`1`,fill:`currentColor`},null,-1)]]))]),y(`div`,Ie,[y(`strong`,null,h(dr.value),1),y(`span`,null,h(fr.value),1)])],2),y(`div`,Le,[a[7]||=y(`span`,{class:`apply-contact-label`},`参赛咨询:`,-1),(_(!0),v(p,null,c(r(ve),e=>(_(),v(`a`,{key:e.tel,href:`tel:${e.tel}`},h(e.display),9,Re))),128)),y(`a`,{href:`tel:${r(_e).tel}`},`技术咨询:`+h(r(_e).display),9,ze)]),y(`form`,{id:`applyForm`,ref_key:`applyFormEl`,ref:Dr,class:e([`row g-3`,{"was-validated":U.value}]),onSubmit:a[4]||=ne(()=>{},[`prevent`])},[(_(!0),v(p,null,c(Ir.value,r=>(_(),v(p,{key:r.type===`file`?`f-`+r.key:r.key},[r.key===`track`?(_(),v(`div`,Be,[y(`label`,Ve,[n(h(r.label)+` `,1),q(r)?(_(),v(`span`,He,`*`)):t(``,!0),w(r)?(_(),v(`span`,Ue,h(w(r)),1)):t(``,!0)]),y(`div`,We,[f(y(`select`,{id:`track`,ref_for:!0,ref_key:`trackHiddenSelect`,ref:mr,"onUpdate:modelValue":a[0]||=e=>M.track=e,class:`visually-hidden`,required:q(r),tabindex:`-1`,"aria-hidden":`true`,disabled:W.value},[(_(!0),v(p,null,c(A.value,e=>(_(),v(`option`,{key:e.track_code,value:e.track_code},h(e.title),9,Ke))),128))],8,Ge),[[ie,M.track]]),y(`div`,qe,[y(`button`,{ref_for:!0,ref_key:`trackDropdownBtn`,ref:hr,type:`button`,class:e([`dropdown-toggle form-select track-custom-toggle editable w-100 text-start`,{"is-invalid":pr.value&&U.value}]),"aria-labelledby":`trackFieldLabel`,"aria-expanded":`false`,"data-bs-toggle":`dropdown`,"data-bs-display":`static`,"data-bs-auto-close":`true`,disabled:W.value},[y(`span`,Ye,[y(`span`,{class:e(_r.value)},h(gr.value),3)])],10,Je),vr.value?(_(),v(`small`,Xe,h(vr.value),1)):t(``,!0),y(`ul`,Ze,[(_(!0),v(p,null,c(A.value,e=>(_(),v(`li`,{key:e.track_code},[y(`button`,{type:`button`,class:`dropdown-item track-pick border-0 w-100 text-start rounded-0`,onClick:t=>br(e.track_code)},[y(`span`,$e,[y(`span`,et,h(e.title),1),yr(e.description)?(_(),v(`span`,tt,h(yr(e.description)),1)):t(``,!0)])],8,Qe)]))),128))]),a[8]||=y(`div`,{class:`invalid-feedback`},`请选择主题赛道`,-1)])]),C(r.help)?(_(),v(`small`,nt,h(C(r.help)),1)):t(``,!0)])):r.type===`file`&&r.key===`plan`?(_(),v(`div`,rt,[y(`label`,it,[n(h(r.label)+` `,1),q(r)?(_(),v(`span`,at,`*`)):t(``,!0),w(r)?(_(),v(`span`,ot,h(w(r)),1)):t(``,!0)]),y(`input`,{ref_for:!0,ref_key:`planFileInput`,ref:Or,type:`file`,class:e([`form-control editable`,{"is-invalid":U.value&&!!Tr.value}]),accept:er(r),multiple:``,disabled:G.value,onChange:a[1]||=e=>Ai(e.target.files,`plan`)},null,42,st),y(`div`,{class:e([`apply-file-status`,{"apply-file-status--filled":L.value.length>0}])},h(Vr(L.value)),3),C(r.help)?(_(),v(`small`,ct,h(C(r.help)),1)):t(``,!0),L.value.length?(_(),v(`div`,lt,[(_(!0),v(p,null,c(L.value,e=>(_(),v(`div`,{key:String(e.id),class:`supporting-file-item`},[y(`div`,ut,[y(`span`,{class:`supporting-file-name`,title:J(e)},h(J(e)),9,dt),y(`span`,ft,h(zr(e.file?e.file.size:e.size||0)),1)]),y(`div`,pt,[y(`button`,{type:`button`,class:`btn btn-sm btn-outline-primary`,onClick:t=>Oi(e)},` 查看/下载 `,8,mt),y(`button`,{type:`button`,class:`btn btn-sm btn-outline-danger`,disabled:G.value||z.value.includes(String(e.id)),onClick:t=>ki(e.id,`plan`)},h(z.value.includes(String(e.id))?`删除中…`:`删除`),9,ht)])]))),128))])):t(``,!0),y(`small`,gt,h(V.value),1),U.value&&Tr.value?(_(),v(`div`,_t,h(Tr.value),1)):t(``,!0)])):r.type===`file`&&r.key===`supporting`?(_(),v(`div`,vt,[y(`label`,yt,[n(h(r.label)+` `,1),q(r)?(_(),v(`span`,bt,`*`)):t(``,!0),w(r)?(_(),v(`span`,xt,h(w(r)),1)):t(``,!0)]),y(`input`,{ref_for:!0,ref_key:`supportingFileInput`,ref:kr,type:`file`,class:e([`form-control editable`,{"is-invalid":U.value&&!!Er.value}]),accept:er(r),multiple:``,disabled:G.value,onChange:a[2]||=e=>Ai(e.target.files,`supporting`)},null,42,St),y(`div`,{class:e([`apply-file-status`,{"apply-file-status--filled":R.value.length>0}])},h(Vr(R.value)),3),C(r.help)?(_(),v(`small`,Ct,h(C(r.help)),1)):t(``,!0),R.value.length?(_(),v(`div`,wt,[(_(!0),v(p,null,c(R.value,e=>(_(),v(`div`,{key:String(e.id),class:`supporting-file-item`},[y(`div`,Tt,[y(`span`,{class:`supporting-file-name`,title:J(e)},h(J(e)),9,Et),y(`span`,Dt,h(zr(e.file?e.file.size:e.size||0)),1)]),y(`div`,Ot,[y(`button`,{type:`button`,class:`btn btn-sm btn-outline-primary`,onClick:t=>Oi(e)},` 查看/下载 `,8,kt),y(`button`,{type:`button`,class:`btn btn-sm btn-outline-danger`,disabled:G.value||z.value.includes(String(e.id)),onClick:t=>ki(e.id,`supporting`)},h(z.value.includes(String(e.id))?`删除中…`:`删除`),9,At)])]))),128))])):t(``,!0),y(`small`,jt,h(H.value),1),U.value&&Er.value?(_(),v(`div`,Mt,h(Er.value),1)):t(``,!0)])):r.type===`select`&&!Rr(r)?(_(),v(`div`,{key:3,class:e(K(r))},[y(`label`,Nt,[n(h(r.label)+` `,1),q(r)?(_(),v(`span`,Pt,`*`)):t(``,!0),w(r)?(_(),v(`span`,Ft,h(w(r)),1)):t(``,!0)]),f(y(`select`,{"onUpdate:modelValue":e=>M[r.key]=e,class:`form-select editable`,required:q(r),disabled:W.value},[y(`option`,Lt,h(Hr(r)),1),(_(!0),v(p,null,c(Lr(r),e=>(_(),v(`option`,{key:`${r.key}-${e.value}`,value:e.value},h(e.label),9,Rt))),128))],8,It),[[ie,M[r.key]]]),y(`div`,zt,`请选择`+h(r.label),1),C(r.help)?(_(),v(`small`,Bt,h(C(r.help)),1)):t(``,!0)],2)):Rr(r)?(_(),v(`div`,{key:4,class:e(K(r))},[y(`label`,Vt,[n(h(r.label)+` `,1),q(r)?(_(),v(`span`,Ht,`*`)):t(``,!0),w(r)?(_(),v(`span`,Ut,h(w(r)),1)):t(``,!0)]),f(y(`select`,{"onUpdate:modelValue":a[3]||=e=>M.location_city=e,class:`form-select editable`,required:q(r),disabled:W.value||!I.value||!String(M.location_province??``).trim()},[y(`option`,Gt,h(String(M.location_province??``).trim()?Hr(r):`请先选择省份`),1),(_(!0),v(p,null,c(Lr(r),e=>(_(),v(`option`,{key:e.value,value:e.value},h(e.label),9,Kt))),128))],8,Wt),[[ie,M.location_city]]),y(`div`,qt,`请选择`+h(r.label),1),C(r.help)?(_(),v(`small`,Jt,h(C(r.help)),1)):t(``,!0)],2)):r.type===`checkbox`&&r.key===`commitment_accepted`?(_(),v(`div`,{key:5,class:e(K(r))},[y(`label`,Yt,[n(h(r.label)+` `,1),q(r)?(_(),v(`span`,Xt,`*`)):t(``,!0),w(r)?(_(),v(`span`,Zt,h(w(r)),1)):t(``,!0)]),a[9]||=y(`p`,{class:`small text-secondary mb-2`},` 请点击按钮打开承诺书全文,阅读后在文末手写签名并点击「确认签署」。 `,-1),y(`div`,Qt,[y(`button`,{type:`button`,class:`btn btn-outline-primary btn-sm editable`,disabled:W.value,onClick:vi},h(li.value?`重新查看承诺书`:`查看并签署参赛承诺书`),9,$t),li.value?(_(),v(`span`,en,`已完成签署`)):t(``,!0)]),C(r.help)?(_(),v(`small`,tn,h(C(r.help)),1)):t(``,!0)],2)):r.type===`checkbox`?(_(),v(`div`,{key:6,class:e(K(r))},[y(`div`,nn,[f(y(`input`,{id:`signup-field-`+r.key,"onUpdate:modelValue":e=>M[r.key]=e,type:`checkbox`,class:`form-check-input editable`,"true-value":`1`,"false-value":``,required:q(r),disabled:W.value},null,8,rn),[[re,M[r.key]]]),y(`label`,{class:`form-check-label`,for:`signup-field-`+r.key},[n(h(r.label)+` `,1),q(r)?(_(),v(`span`,on,`*`)):t(``,!0),w(r)?(_(),v(`span`,sn,h(w(r)),1)):t(``,!0)],8,an),a[10]||=y(`div`,{class:`invalid-feedback`},`请勾选此项以继续`,-1)]),C(r.help)?(_(),v(`small`,cn,h(C(r.help)),1)):t(``,!0)],2)):r.type===`textarea`?(_(),v(`div`,{key:7,class:e(K(r))},[y(`label`,ln,[n(h(r.label)+` `,1),q(r)?(_(),v(`span`,un,`*`)):t(``,!0),w(r)?(_(),v(`span`,dn,h(w(r)),1)):t(``,!0)]),f(y(`textarea`,{"onUpdate:modelValue":e=>M[r.key]=e,class:`form-control editable`,rows:`4`,placeholder:``,required:q(r),disabled:W.value},null,8,fn),[[te,M[r.key]]]),Pr(r)||r.key===`intro`?(_(),v(`div`,pn,[Pr(r)?(_(),v(`small`,mn,h(Pr(r)),1)):t(``,!0),r.key===`intro`?(_(),v(`small`,hn,h(Ar.value)+` 字`,1)):t(``,!0)])):t(``,!0),C(r.help)?(_(),v(`small`,{key:1,class:e([`text-secondary prototype-subtitle d-block`,{"mt-1":r.key===`intro`||Pr(r)}])},h(C(r.help)),3)):t(``,!0)],2)):(_(),v(`div`,{key:8,class:e(K(r))},[y(`label`,gn,[n(h(r.label)+` `,1),q(r)?(_(),v(`span`,_n,`*`)):t(``,!0),w(r)?(_(),v(`span`,vn,h(w(r)),1)):t(``,!0)]),f(y(`input`,{"onUpdate:modelValue":e=>M[r.key]=e,type:r.type===`email`?`email`:r.key===`contact_mobile`?`tel`:`text`,class:e([`form-control editable`,{"company-name-input":r.key===`company_name`}]),required:q(r),disabled:W.value,placeholder:(r.placeholder??``).trim(),pattern:r.key===`contact_mobile`?Kn:void 0,autocomplete:r.key===`company_name`?`organization`:void 0},null,10,yn),[[ee,M[r.key]]]),y(`div`,bn,h(Nr(r)),1),C(r.help)?(_(),v(`small`,xn,h(C(r.help)),1)):t(``,!0)],2))],64))),128)),y(`div`,Sn,[y(`button`,{type:`button`,class:`btn btn-outline-primary`,disabled:W.value||B.value,onClick:Hi},h(B.value?`保存中…`:P.value?`保存修改`:`保存`),9,Cn),y(`button`,{type:`button`,class:`btn btn-success`,disabled:W.value,onClick:Ui},h(P.value?`更新报名`:`提交报名`),9,wn)])],34)])])])),!j.value&&k.value.some(e=>e.key===`commitment_accepted`)?(_(),v(`div`,{key:1,id:`promiseSignModal`,ref_key:`promiseSignModalRef`,ref:$r,class:`modal fade`,tabindex:`-1`,"aria-hidden":`true`,"data-bs-backdrop":`static`},[y(`div`,Tn,[y(`div`,En,[y(`div`,Dn,[y(`div`,On,[y(`h1`,kn,h(ui.value),1),y(`div`,An,[y(`div`,{class:`promise-doc-body promise-doc-body--rich`,innerHTML:ir.value},null,8,jn)]),y(`div`,Mn,[y(`div`,Nn,[a[11]||=y(`span`,{class:`promise-doc-signlabel`},`参赛人签名:`,-1),y(`div`,Pn,[y(`div`,Fn,[y(`canvas`,{ref_key:`promiseCanvasRef`,ref:X,class:`promise-sig-canvas`,width:`520`,height:`140`,"aria-label":`手写签名区域`},null,512),y(`span`,{class:e([`promise-sig-hint`,{"d-none":!ti.value}])},`请在框内手写签名`,2)]),y(`div`,{class:`promise-sig-tools`},[y(`button`,{type:`button`,class:`btn btn-sm btn-outline-secondary`,onClick:yi},` 清除签名 `)])])]),y(`div`,In,[y(`span`,Ln,[a[12]||=n(`日期:`,-1),y(`strong`,null,h(ei.value),1)])])]),y(`div`,{class:`promise-sign-actions`},[a[13]||=y(`button`,{type:`button`,class:`btn btn-light notice-cancel-btn`,"data-bs-dismiss":`modal`},`关闭`,-1),y(`button`,{type:`button`,class:`btn btn-primary`,onClick:bi},`确认签署`)])])])])])],512)):t(``,!0),y(`div`,{ref_key:`noticeModalEl`,ref:Wr,id:`applyNoticeModal`,class:`modal fade`,tabindex:`-1`,"aria-hidden":`true`},[y(`div`,Rn,[y(`div`,{class:e([`modal-content notice-modal-content`,qr.value?`notice-success`:`notice-warning`])},[a[16]||=y(`div`,{class:`modal-header border-0 pb-0`},[y(`button`,{type:`button`,class:`btn-close ms-auto`,"data-bs-dismiss":`modal`,"aria-label":`关闭`})],-1),y(`div`,zn,[y(`div`,Bn,[qr.value?(_(),v(`svg`,Vn,[...a[14]||=[y(`circle`,{cx:`12`,cy:`12`,r:`10`,stroke:`currentColor`,"stroke-width":`1.8`},null,-1),y(`path`,{d:`M7 12.2l3.1 3.1L17.2 8.8`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`},null,-1)]])):(_(),v(`svg`,Hn,[...a[15]||=[y(`path`,{d:`M12 3.6L2.9 19.2a1 1 0 0 0 .86 1.5h16.48a1 1 0 0 0 .86-1.5L12 3.6z`,stroke:`currentColor`,"stroke-width":`1.8`},null,-1),y(`path`,{d:`M12 9v5`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`},null,-1),y(`circle`,{cx:`12`,cy:`16.8`,r:`1.1`,fill:`currentColor`},null,-1)]]))]),y(`h5`,Un,h(Gr.value),1),Kr.value.trim()?(_(),v(`p`,Wn,h(Kr.value),1)):t(``,!0)]),a[17]||=y(`div`,{class:`modal-footer notice-modal-footer border-0`},[y(`button`,{type:`button`,class:`btn btn-light notice-cancel-btn`,"data-bs-dismiss":`modal`},`取消`),y(`button`,{type:`button`,class:`btn btn-primary notice-ok-btn`,"data-bs-dismiss":`modal`},`确定`)],-1)],2)])],512)]))}}),[[`__scopeId`,`data-v-3879c265`]]),T=g({__name:`ApplyView`,setup(e){return(e,t)=>(_(),a(w))}});export{T as default}; \ No newline at end of file +import{$t as e,C as t,D as n,Et as r,R as i,S as a,V as o,W as s,Y as c,_t as l,at as u,b as d,c as ee,ct as f,d as te,g as p,ht as m,in as h,k as g,m as ne,q as _,s as re,u as ie,w as v,x as y}from"./vue.runtime.esm-bundler-OsdSFvn7.js";import{_ as ae,d as oe,m as se}from"./api-rQwE0AaH.js";import{S as ce,l as le,u as ue,x as de}from"./index-t7bgup9e.js";import{t as fe}from"./_plugin-vue_export-helper-CXTkFu_Z.js";import{a as pe,i as me,r as he,t as ge}from"./competitionBranding-DKFkcrfF.js";import{n as _e,t as ve}from"./participantContact-DSzdsPPk.js";import{t as ye}from"./downloadFeedback-CVNWp7w4.js";var be={北京市:[`北京市`],天津市:[`天津市`],上海市:[`上海市`],重庆市:[`重庆市`],河北省:[`石家庄市`,`唐山市`,`秦皇岛市`,`邯郸市`,`邢台市`,`保定市`,`张家口市`,`承德市`,`沧州市`,`廊坊市`,`衡水市`],山西省:[`太原市`,`大同市`,`阳泉市`,`长治市`,`晋城市`,`朔州市`,`晋中市`,`运城市`,`忻州市`,`临汾市`,`吕梁市`],内蒙古自治区:[`呼和浩特市`,`包头市`,`乌海市`,`赤峰市`,`通辽市`,`鄂尔多斯市`,`呼伦贝尔市`,`巴彦淖尔市`,`乌兰察布市`,`兴安盟`,`锡林郭勒盟`,`阿拉善盟`],辽宁省:[`沈阳市`,`大连市`,`鞍山市`,`抚顺市`,`本溪市`,`丹东市`,`锦州市`,`营口市`,`阜新市`,`辽阳市`,`盘锦市`,`铁岭市`,`朝阳市`,`葫芦岛市`],吉林省:[`长春市`,`吉林市`,`四平市`,`辽源市`,`通化市`,`白山市`,`松原市`,`白城市`,`延边朝鲜族自治州`],黑龙江省:[`哈尔滨市`,`齐齐哈尔市`,`鸡西市`,`鹤岗市`,`双鸭山市`,`大庆市`,`伊春市`,`佳木斯市`,`七台河市`,`牡丹江市`,`黑河市`,`绥化市`,`大兴安岭地区`],江苏省:[`南京市`,`无锡市`,`徐州市`,`常州市`,`苏州市`,`南通市`,`连云港市`,`淮安市`,`盐城市`,`扬州市`,`镇江市`,`泰州市`,`宿迁市`],浙江省:[`杭州市`,`宁波市`,`温州市`,`嘉兴市`,`湖州市`,`绍兴市`,`金华市`,`衢州市`,`舟山市`,`台州市`,`丽水市`],安徽省:[`合肥市`,`芜湖市`,`蚌埠市`,`淮南市`,`马鞍山市`,`淮北市`,`铜陵市`,`安庆市`,`黄山市`,`滁州市`,`阜阳市`,`宿州市`,`六安市`,`亳州市`,`池州市`,`宣城市`],福建省:[`福州市`,`厦门市`,`莆田市`,`三明市`,`泉州市`,`漳州市`,`南平市`,`龙岩市`,`宁德市`],江西省:[`南昌市`,`景德镇市`,`萍乡市`,`九江市`,`新余市`,`鹰潭市`,`赣州市`,`吉安市`,`宜春市`,`抚州市`,`上饶市`],山东省:[`济南市`,`青岛市`,`淄博市`,`枣庄市`,`东营市`,`烟台市`,`潍坊市`,`济宁市`,`泰安市`,`威海市`,`日照市`,`临沂市`,`德州市`,`聊城市`,`滨州市`,`菏泽市`],河南省:[`郑州市`,`开封市`,`洛阳市`,`平顶山市`,`安阳市`,`鹤壁市`,`新乡市`,`焦作市`,`濮阳市`,`许昌市`,`漯河市`,`三门峡市`,`南阳市`,`商丘市`,`信阳市`,`周口市`,`驻马店市`,`济源市`],湖北省:[`武汉市`,`黄石市`,`十堰市`,`宜昌市`,`襄阳市`,`鄂州市`,`荆门市`,`孝感市`,`荆州市`,`黄冈市`,`咸宁市`,`随州市`,`恩施土家族苗族自治州`,`仙桃市`,`潜江市`,`天门市`,`神农架林区`],湖南省:[`长沙市`,`株洲市`,`湘潭市`,`衡阳市`,`邵阳市`,`岳阳市`,`常德市`,`张家界市`,`益阳市`,`郴州市`,`永州市`,`怀化市`,`娄底市`,`湘西土家族苗族自治州`],广东省:[`广州市`,`韶关市`,`深圳市`,`珠海市`,`汕头市`,`佛山市`,`江门市`,`湛江市`,`茂名市`,`肇庆市`,`惠州市`,`梅州市`,`汕尾市`,`河源市`,`阳江市`,`清远市`,`东莞市`,`中山市`,`潮州市`,`揭阳市`,`云浮市`],广西壮族自治区:[`南宁市`,`柳州市`,`桂林市`,`梧州市`,`北海市`,`防城港市`,`钦州市`,`贵港市`,`玉林市`,`百色市`,`贺州市`,`河池市`,`来宾市`,`崇左市`],海南省:[`海口市`,`三亚市`,`三沙市`,`儋州市`,`五指山市`,`琼海市`,`文昌市`,`万宁市`,`东方市`,`定安县`,`屯昌县`,`澄迈县`,`临高县`,`白沙黎族自治县`,`昌江黎族自治县`,`乐东黎族自治县`,`陵水黎族自治县`,`保亭黎族苗族自治县`,`琼中黎族苗族自治县`],四川省:[`成都市`,`自贡市`,`攀枝花市`,`泸州市`,`德阳市`,`绵阳市`,`广元市`,`遂宁市`,`内江市`,`乐山市`,`南充市`,`眉山市`,`宜宾市`,`广安市`,`达州市`,`雅安市`,`巴中市`,`资阳市`,`阿坝藏族羌族自治州`,`甘孜藏族自治州`,`凉山彝族自治州`],贵州省:[`贵阳市`,`六盘水市`,`遵义市`,`安顺市`,`毕节市`,`铜仁市`,`黔西南布依族苗族自治州`,`黔东南苗族侗族自治州`,`黔南布依族苗族自治州`],云南省:[`昆明市`,`曲靖市`,`玉溪市`,`保山市`,`昭通市`,`丽江市`,`普洱市`,`临沧市`,`楚雄彝族自治州`,`红河哈尼族彝族自治州`,`文山壮族苗族自治州`,`西双版纳傣族自治州`,`大理白族自治州`,`德宏傣族景颇族自治州`,`怒江傈僳族自治州`,`迪庆藏族自治州`],西藏自治区:[`拉萨市`,`日喀则市`,`昌都市`,`林芝市`,`山南市`,`那曲市`,`阿里地区`],陕西省:[`西安市`,`铜川市`,`宝鸡市`,`咸阳市`,`渭南市`,`延安市`,`汉中市`,`榆林市`,`安康市`,`商洛市`],甘肃省:[`兰州市`,`嘉峪关市`,`金昌市`,`白银市`,`天水市`,`武威市`,`张掖市`,`平凉市`,`酒泉市`,`庆阳市`,`定西市`,`陇南市`,`临夏回族自治州`,`甘南藏族自治州`],青海省:[`西宁市`,`海东市`,`海北藏族自治州`,`黄南藏族自治州`,`海南藏族自治州`,`果洛藏族自治州`,`玉树藏族自治州`,`海西蒙古族藏族自治州`],宁夏回族自治区:[`银川市`,`石嘴山市`,`吴忠市`,`固原市`,`中卫市`],新疆维吾尔自治区:[`乌鲁木齐市`,`克拉玛依市`,`吐鲁番市`,`哈密市`,`昌吉回族自治州`,`博尔塔拉蒙古自治州`,`巴音郭楞蒙古自治州`,`阿克苏地区`,`克孜勒苏柯尔克孜自治州`,`喀什地区`,`和田地区`,`伊犁哈萨克自治州`,`塔城地区`,`阿勒泰地区`,`石河子市`,`阿拉尔市`,`图木舒克市`,`五家渠市`,`北屯市`,`铁门关市`,`双河市`,`可克达拉市`,`昆玉市`,`胡杨河市`,`新星市`],香港特别行政区:[`香港`],澳门特别行政区:[`澳门`],台湾省:[`台北市`,`新北市`,`桃园市`,`台中市`,`台南市`,`高雄市`,`新竹市`,`嘉义市`]},xe=`北京市.天津市.上海市.重庆市.河北省.山西省.内蒙古自治区.辽宁省.吉林省.黑龙江省.江苏省.浙江省.安徽省.福建省.江西省.山东省.河南省.湖北省.湖南省.广东省.广西壮族自治区.海南省.四川省.贵州省.云南省.西藏自治区.陕西省.甘肃省.青海省.宁夏回族自治区.新疆维吾尔自治区.香港特别行政区.澳门特别行政区.台湾省`.split(`.`),Se=[`pdf`,`ppt`,`pptx`,`doc`,`docx`,`wps`,`rar`,`zip`],b=[{key:`player_name`,type:`text`,label:`参赛人姓名`,required:!0,help:``},{key:`school`,type:`text`,label:`毕业院校`,required:!0},{key:`degree`,type:`select`,label:`最高学历`,required:!0,options:[`大专`,`本科`,`硕士`,`博士`,`其他`].map(e=>({label:e,value:e}))},{key:`contact_email`,type:`email`,label:`注册邮箱`,required:!0},{key:`contact_mobile`,type:`tel`,label:`联系电话`,required:!0,placeholder:`11 位中国大陆手机号`},{key:`entry_group`,type:`select`,label:`参赛组别`,required:!0,options:[{label:`创新组`,value:`创新组`},{label:`创业组`,value:`创业组`}],help:`仅限创业组填报企业名称(创新组不展示该字段)`},{key:`company_name`,type:`text`,label:`企业名称`,required:!1,required_when:{field:`entry_group`,values:[`创业组`]},placeholder:`请填写工商注册全称`,prefill_from:`user.company`},{key:`project_name`,type:`text`,label:`项目名称`,required:!0},{key:`track`,type:`select`,label:`主题赛道`,required:!0,help:`请从本场赛事公布的赛道中选择`,options:[]},{key:`location_country`,type:`select`,label:`项目所在地`,required:!0,options:[{label:`中国`,value:`中国`},{label:`海外`,value:`海外`}]},{key:`location_province`,type:`select`,label:`省份`,required:!1,options:[]},{key:`location_city`,type:`text`,label:`城市`,required:!1},{key:`oversea_country`,type:`text`,label:`所在国(海外)`,required:!1,placeholder:`如:新加坡、日本、美国`},{key:`intro`,type:`textarea`,label:`项目简介`,required:!1,placeholder:`约200字左右`},{key:`recommend`,type:`text`,label:`推荐方`,required:!1,placeholder:`如有推荐单位或推荐人可填写`},{key:`commitment_accepted`,type:`checkbox`,label:`本人已阅读并同意《参赛承诺书》的全部内容`,required:!0,help:`提交报名即表示承诺所填信息真实有效,并遵守赛事规则。`},{key:`plan`,type:`file`,label:`上传商业计划书`,required:!0,help:`可上传多个文件,单文件 20M 以内`},{key:`supporting`,type:`file`,label:`其他佐证材料`,required:!1,help:`可选;格式同计划书`}];function x(e){return Array.isArray(e)?e.map(e=>typeof e==`object`&&e&&`label`in e&&`value`in e?{label:String(e.label),value:String(e.value)}:typeof e==`string`?{label:e,value:e}:null).filter(e=>e!=null&&String(e.label).trim()!==``&&String(e.value).trim()!==``):[]}function S(e){if(e!=null){if(Array.isArray(e)){let t=e.map(e=>String(e).trim().toLowerCase().replace(/^\./,``)).filter(e=>e!==``);return t.length?[...new Set(t)]:void 0}if(typeof e==`string`){let t=e.split(/[,;\s|]+/).map(e=>e.trim().toLowerCase().replace(/^\./,``)).filter(e=>e!==``);return t.length?[...new Set(t)]:void 0}}}function C(e){if(e==null||e===``)return;let t=typeof e==`number`?e:parseInt(String(e),10);if(!Number.isFinite(t))return;let n=Math.floor(t);return n>=1?n:void 0}function Ce(e){if(!Array.isArray(e)||e.length===0)return b.map(e=>({...e,options:e.options?[...e.options]:void 0}));let t=[];for(let n of e){if(typeof n!=`object`||!n)continue;let e=n,r=String(e.key??``).trim();if(!r)continue;let i=String(e.type??`text`),a=String(e.label??r),o=!!e.required,s=e.placeholder,c=s!=null&&String(s).trim()!==``?String(s).trim():void 0,l=e.help,u=l!=null&&String(l).trim()!==``?String(l).trim():void 0,d=e.prefill_from,ee=d!=null&&String(d).trim()!==``?String(d).trim():void 0,f=e.title_supplement,te=f!=null&&String(f).trim()!==``?String(f).trim():void 0,p,m=e.required_when;if(typeof m==`object`&&m&&!Array.isArray(m)){let e=m,t=String(e.field??``).trim(),n=e.values,r=Array.isArray(n)?n.map(e=>String(e).trim()).filter(e=>e!==``):[];t&&r.length&&(p={field:t,values:r})}let h;if(i===`select`&&Array.isArray(e.options)&&(h=x(e.options)),r===`track`&&(h=[]),i===`select`&&r!==`track`&&(!h||h.length===0))if(r===`location_province`)h=xe.map(e=>({label:e,value:e}));else{let e=b.find(e=>e.key===r);e?.options?.length&&(h=e.options.map(e=>({...e})))}let g,ne;i===`file`&&(g=S(e.file_extensions),ne=C(e.file_max_count)),t.push({key:r,type:i,label:a,title_supplement:te,required:o,placeholder:c,help:u,prefill_from:ee,options:h,required_when:p,file_extensions:g,file_max_count:ne})}return t.length?t:b.map(e=>({...e}))}var we={class:`apply-form-page`},Te={class:`form-page-header flex-shrink-0 mb-3`},Ee={class:`mb-0 form-page-title`},De={key:0,class:`text-secondary prototype-subtitle mb-0 mt-2`},Oe={key:1,class:`text-danger small mb-0 mt-2`},ke={key:2,class:`text-warning small mb-0 mt-2`},Ae={key:0,class:`apply-form-scroll`},je={class:`card mb-0`},Me={class:`card-body`},Ne={class:`application-status-mark`,"aria-hidden":`true`},Pe={key:0,viewBox:`0 0 24 24`,width:`22`,height:`22`,fill:`none`},Fe={key:1,viewBox:`0 0 24 24`,width:`22`,height:`22`,fill:`none`},Ie={class:`application-status-copy`},Le={class:`apply-contact-panel`,"aria-label":`咨询电话`},Re=[`href`],ze=[`href`],Be={key:0,class:`col-md-4`},Ve={class:`form-label`,id:`trackFieldLabel`},He={key:0,class:`text-danger`},Ue={key:1,class:`signup-field-title-supplement ms-1 fw-normal text-secondary`},We={class:`track-custom-select w-100`},Ge=[`required`,`disabled`],Ke=[`value`],qe={class:`dropdown w-100`},Je=[`disabled`],Ye={class:`track-toggle-label text-truncate`},Xe={key:0,class:`track-selected-note`},Ze={class:`dropdown-menu w-100 border shadow-sm rounded-2 py-0 my-1 track-custom-menu`},Qe=[`onClick`],$e={class:`track-pick-inline`},et={class:`text-body`},tt={key:0,class:`track-custom-note`},nt={key:0,class:`text-secondary prototype-subtitle d-block`},rt={key:1,class:`col-12`},it={class:`form-label`},at={key:0,class:`text-danger`},ot={key:1,class:`signup-field-title-supplement ms-1 fw-normal text-secondary`},st=[`accept`,`disabled`],ct={key:0,class:`text-secondary prototype-subtitle d-block mt-1`},lt={key:1,class:`supporting-file-list mt-2`,"aria-live":`polite`},ut={class:`supporting-file-meta`},dt=[`title`],ft={class:`supporting-file-size`},pt={class:`supporting-file-actions`},mt=[`onClick`],ht=[`disabled`,`onClick`],gt={class:`text-secondary prototype-subtitle d-block`},_t={key:2,class:`invalid-feedback d-block`},vt={key:2,class:`col-12`},yt={class:`form-label`},bt={key:0,class:`text-danger`},xt={key:1,class:`signup-field-title-supplement ms-1 fw-normal text-secondary`},St=[`accept`,`disabled`],Ct={key:0,class:`text-secondary prototype-subtitle d-block mt-1`},wt={key:1,class:`supporting-file-list mt-2`,"aria-live":`polite`},Tt={class:`supporting-file-meta`},Et=[`title`],Dt={class:`supporting-file-size`},Ot={class:`supporting-file-actions`},kt=[`onClick`],At=[`disabled`,`onClick`],jt={class:`text-secondary prototype-subtitle d-block`},Mt={key:2,class:`invalid-feedback d-block`},Nt={class:`form-label`},Pt={key:0,class:`text-danger`},Ft={key:1,class:`signup-field-title-supplement ms-1 fw-normal text-secondary`},It=[`onUpdate:modelValue`,`required`,`disabled`],Lt={value:``,disabled:``},Rt=[`value`],zt={class:`invalid-feedback`},Bt={key:0,class:`text-secondary prototype-subtitle d-block`},Vt={class:`form-label`},Ht={key:0,class:`text-danger`},Ut={key:1,class:`signup-field-title-supplement ms-1 fw-normal text-secondary`},Wt=[`required`,`disabled`],Gt={value:``,disabled:``},Kt=[`value`],qt={class:`invalid-feedback`},Jt={key:0,class:`text-secondary prototype-subtitle d-block`},Yt={class:`form-label`},Xt={key:0,class:`text-danger`},Zt={key:1,class:`signup-field-title-supplement ms-1 fw-normal text-secondary`},Qt={class:`d-flex flex-wrap align-items-center gap-2 mb-1`},$t=[`disabled`],en={key:0,class:`badge rounded-pill px-3 py-2 promise-signed-badge`},tn={key:0,class:`text-secondary prototype-subtitle d-block mt-1`},nn={class:`form-check`},rn=[`id`,`onUpdate:modelValue`,`required`,`disabled`],an=[`for`],on={key:0,class:`text-danger ms-1`},sn={key:1,class:`signup-field-title-supplement ms-1 fw-normal text-secondary`},cn={key:0,class:`text-secondary prototype-subtitle d-block mt-1`},ln={class:`form-label`},un={key:0,class:`text-danger`},dn={key:1,class:`signup-field-title-supplement ms-1 fw-normal text-secondary`},fn=[`onUpdate:modelValue`,`required`,`disabled`],pn={key:0,class:`d-flex flex-wrap align-items-baseline gap-2 mt-1 w-100`},mn={key:0,class:`apply-textarea-placeholder-hint mb-0`},hn={key:1,class:`text-secondary prototype-subtitle intro-char-count mb-0 ms-auto`},gn={class:`form-label`},_n={key:0,class:`text-danger`},vn={key:1,class:`signup-field-title-supplement ms-1 fw-normal text-secondary`},yn=[`onUpdate:modelValue`,`type`,`required`,`disabled`,`placeholder`,`pattern`,`autocomplete`],bn={class:`invalid-feedback`},xn={key:0,class:`text-secondary prototype-subtitle d-block`},Sn={class:`col-12 apply-form-actions mt-3 pt-3 border-top d-flex gap-2 flex-wrap`},Cn=[`disabled`],wn=[`disabled`],Tn={class:`modal-dialog modal-dialog-centered promise-sign-modal`},En={class:`modal-content promise-sign-sheet`},Dn={class:`modal-body pt-2`},On={class:`promise-doc-paper`},kn={class:`promise-doc-heading text-center`},An={class:`promise-doc-scroll`},jn=[`innerHTML`],Mn={class:`promise-doc-signblock`},Nn={class:`promise-doc-signrow`},Pn={class:`promise-sig-wrap`},Fn={class:`promise-sig-box`},In={class:`promise-doc-daterow`},Ln={class:`promise-doc-dateline`},Rn={class:`modal-dialog modal-dialog-centered notice-modal-dialog`},zn={class:`modal-body notice-modal-body`},Bn={class:`notice-icon`,"aria-hidden":`true`},Vn={key:0,viewBox:`0 0 24 24`,width:`36`,height:`36`,fill:`none`,"aria-hidden":`true`},Hn={key:1,viewBox:`0 0 24 24`,width:`36`,height:`36`,fill:`none`,"aria-hidden":`true`},Un={class:`notice-title`},Wn={key:0,class:`notice-text text-break`,style:{"white-space":`pre-wrap`}},Gn=20*1024*1024,Kn=`^1[3-9]\\d{9}$`,qn=`

本项目申报信息中所填写的各栏目内容真实、准确。本项目负责人(团队)对申报材料的真实性负完全责任。

若申报信息中存在虚假、伪造等不实情况,本项目负责人(团队)将积极配合调查,并按照有关规定接受处理。

`,Jn=2097152,w=fe(g({__name:`ApplyFormView`,setup(a){let g=de,fe=ue(),b=le(),x=d(()=>String(b.params.slug??``).trim());function S(e){let t=e.value;return t==null?null:Array.isArray(t)?t[0]??null:t}function C(e){let t=(e??``).trim();return!t||/applications\.|config\/contest|与提交校验|\^1\[3-9\]|kind=\s*plan|kind=\s*supporting|\\d\{9\}/i.test(t)?``:t}function w(e){return String(e.title_supplement??``).trim()}function T(){return se()}function E(){let e=x.value;return e?`?competition_slug=${encodeURIComponent(e)}`:``}function Yn(e){let t={Authorization:`Bearer ${localStorage.getItem(`cxxfds_token`)||``}`,Accept:`application/json`};e&&(t[`Content-Type`]=`application/json`);let n=x.value;return n&&(t[`X-Competition-Slug`]=n),t}let Xn=Promise.resolve();async function D(e,t){let n=()=>fetch(e,t),r=Xn.then(n,n);return Xn=r.then(()=>void 0,()=>void 0),r}function O(){localStorage.removeItem(oe);let e=x.value;e?fe.push({name:`participant-login`,params:{slug:e},query:{redirect:b.fullPath}}):fe.push(`/c`)}let k=l(Ce([]));function Zn(e){let t=Se.map(e=>e.toLowerCase()),n=new Set(t),r=e?.file_extensions;if(!Array.isArray(r)||r.length===0)return[...t];let i=[...new Set(r.map(e=>String(e).trim().toLowerCase().replace(/^\./,``)).filter(Boolean).filter(e=>n.has(e)))];return i.length>0?i:[...t]}function Qn(e){let t=e?.file_max_count;if(typeof t!=`number`||!Number.isFinite(t))return null;let n=Math.floor(t);return n>=1?n:null}function $n(e){return k.value.find(t=>t.type===`file`&&t.key===e)}function er(e){return Zn(e).map(e=>`.`+e).join(`,`)}let A=l([]),tr=l(!1),nr=l(``),rr=l(``),ir=d(()=>rr.value.trim()||qn),ar=l(he()),j=l(``),M=m({});function or(e){for(let t of e)t.type!==`file`&&(t.key in M||(M[t.key]=``));e.some(e=>e.key===`commitment_accepted`)&&!(`promise_signature`in M)&&(M.promise_signature=``)}let sr=d(()=>`jscc_signup_form_draft_v2_${x.value||`x`}`),cr=l(`draft`),lr=l(``),N=l(!0),ur=l(!0),P=d(()=>cr.value===`submitted`),F=d(()=>Br(lr.value)),dr=d(()=>P.value&&N.value?`报名已提交,可继续修改`:P.value&&ur.value&&!N.value?`报名已提交,仅可补传附件`:P.value?`报名已提交,已锁定`:!N.value&&ur.value?`报名未提交,仅可补传附件`:N.value?`报名信息未提交`:`报名未提交,当前不可编辑`),fr=d(()=>P.value&&N.value?`${F.value?`上次提交时间:${F.value}。`:``}在报名截止且没有任一评委提交评分前,你仍可修改资料、增删附件,并点击“更新报名”覆盖提交。评审开始后报名会自动锁定,请保持联系方式畅通。`:ur.value&&!N.value?`${F.value?`提交时间:${F.value}。`:``}报名已截止,组委会已开放你补传附件:可上传或删除附件,上传成功即生效,无需再次提交。其他报名信息不可修改;若已有评委评审则仍会锁定。`:P.value?`${F.value?`提交时间:${F.value}。`:``}报名已因截止或评审记录产生而锁定,不能再修改资料、增删附件或重复提交。后续请等待赛事组委会通知;如需更正请联系组委会。`:N.value?`请完整填写报名信息、上传商业计划书并签署承诺书;点击“保存”只暂存草稿,点击“提交报名”后才进入已提交状态。`:`当前报名窗口已关闭或报名已被锁定,无法新建、保存或提交报名。如认为状态异常,请联系赛事组委会。`),pr=l(!1),mr=l(null),hr=l(null),gr=d(()=>{let e=M.track,t=A.value.find(t=>t.track_code===e);return t?t.title:e||`请选择主题赛道`}),_r=d(()=>M.track?`text-body`:`text-secondary`),vr=d(()=>{let e=M.track;return(A.value.find(t=>t.track_code===e)?.description??``).trim()});function yr(e){return(e??``).trim()}function br(e){M.track=e,pr.value=!1;let t=S(hr);t&&g.getInstance(t)?.hide()}let I=d(()=>M.location_country===`中国`),xr=d(()=>M.location_country===`海外`),Sr=d(()=>xe.map(e=>({label:e,value:e}))),Cr=d(()=>{let e=M.location_province;return e?(be[e]||[]).map(e=>({label:e,value:e})):[]});function wr(){xr.value?(M.location_province=``,M.location_city=``):I.value||(M.location_province=``,M.location_city=``,M.oversea_country=``)}u(()=>M.location_country,()=>{wr()}),u(()=>M.location_province,(e,t)=>{I.value&&e!==t&&(t==null||String(t).trim()===``||(M.location_city=``))}),u(()=>M.entry_group,e=>{e===`创新组`&&(M.company_name=``)});let L=l([]),R=l([]),z=l([]),B=l(!1),V=l(``),H=l(``),Tr=l(``),Er=l(``),U=l(!1),W=d(()=>!N.value),G=d(()=>!ur.value),Dr=l(null),Or=l(null),kr=l(null),Ar=d(()=>(M.intro||``).length),jr=d(()=>pe(ar.value,nr.value)),Mr=d(()=>{let e=ar.value.apply?.headerSubtitle;return me(e)?String(e).trim():``});function Nr(e){let t=String(M[e.key]??``).trim();return e.type===`email`||e.key===`contact_email`?t?`请输入正确的邮箱格式`:`请填写${e.label}`:(e.type===`tel`||e.key===`contact_mobile`)&&t?`请输入正确的11位中国大陆手机号`:`请填写${e.label}`}function K(e){return e.type===`textarea`||e.type===`file`||e.type===`checkbox`?`col-12`:`col-md-4`}function Pr(e){return e.type===`textarea`?String(e.placeholder??``).trim():``}function Fr(e){return e.type===`file`?!0:e.key===`company_name`?M.entry_group!==`创新组`:e.key===`location_province`||e.key===`location_city`?I.value:e.key===`oversea_country`?xr.value:!0}function q(e){if(e.key===`location_province`||e.key===`location_city`)return I.value;if(e.key===`oversea_country`)return xr.value;let t=e.required_when;if(t?.field&&t.values?.length){let e=String(M[t.field]??``).trim();if(t.values.includes(e))return!0}return e.required}let Ir=d(()=>k.value.filter(e=>Fr(e)));function Lr(e){return e.key===`track`?A.value.map(e=>({label:e.title,value:e.track_code})):e.key===`location_province`?Sr.value:e.key===`location_city`&&I.value?Cr.value:e.options??[]}function Rr(e){return e.key===`location_city`&&I.value}function zr(e){return e>=1024*1024?`${(e/1024/1024).toFixed(1).replace(/\.0$/,``)}M`:e>=1024?`${Math.ceil(e/1024)}K`:`${e}B`}function J(e){return e.file?e.file.name:e.original_name||``}function Br(e){if(!e)return``;let t=new Date(e);if(Number.isNaN(t.getTime()))return``;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 Vr(e){if(e.length===0)return`尚未选择文件`;let t=e.filter(e=>e.fromServer).length;return t===e.length?`已上传 ${e.length} 个文件`:`已选择 ${e.length} 个文件,正在上传 ${e.length-t} 个`}function Hr(e){return`请选择${e.label}`}function Ur(e){let t=e.message||``,n=e.errors;return n&&Object.keys(n).length?`${t}\n${JSON.stringify(n)}`:t||`操作失败`}let Wr=l(null),Gr=l(`提示`),Kr=l(``),qr=l(!1);function Y(e,t=`提示`,n=`warning`){return Gr.value=t,Kr.value=e,qr.value=n===`success`,new Promise(e=>{i(()=>{let t=Wr.value;if(!t){e();return}t.addEventListener(`hidden.bs.modal`,()=>e(),{once:!0}),ce.getOrCreateInstance(t).show()})})}function Jr(e){return e===`navigateTo`||e===`reLaunch`||e===`switchTab`?e:`redirectTo`}function Yr(e){if(!e)return null;if(e.type===`mini_program`){let t=typeof e.path==`string`?e.path.trim():``;return t?{type:`mini_program`,path:t,method:Jr(e.method)}:null}let t=typeof e.redirect_url==`string`?e.redirect_url.trim():``;return t?{type:`web`,redirectUrl:t}:null}let Xr=null;function Zr(){if(window.wx?.miniProgram)return Promise.resolve(window.wx);if(Xr)return Xr;let e=new Promise((e,t)=>{let n=document.querySelector(`script[data-cxcyds-wx-jssdk="true"]`);if(n){n.addEventListener(`load`,()=>window.wx?e(window.wx):t(Error(`wx missing`)),{once:!0}),n.addEventListener(`error`,()=>t(Error(`wx jssdk load failed`)),{once:!0});return}let r=document.createElement(`script`);r.src=`https://res.wx.qq.com/open/js/jweixin-1.6.0.js`,r.async=!0,r.dataset.cxcydsWxJssdk=`true`,r.onload=()=>{window.wx?.miniProgram?e(window.wx):t(Error(`wx miniProgram bridge missing`))},r.onerror=()=>t(Error(`wx jssdk load failed`)),document.head.appendChild(r)}).finally(()=>{Xr=null});return Xr=e,e}async function Qr(e,t){try{let n=(await Zr()).miniProgram?.[t];return typeof n==`function`?(n({url:e}),!0):!1}catch{return!1}}let $r=l(null),X=l(null),ei=l(``),ti=l(!0),Z=null,ni=520,ri=140,ii=!1,ai=!1,oi=null,si=null;function ci(){oi?.abort(),oi=null}let li=d(()=>M.commitment_accepted===`1`&&String(M.promise_signature??``).trim()!==``),ui=d(()=>{let e=nr.value.trim();return e?`${e} 赛事承诺书`:`赛事承诺书`});function di(e){return`${e.getFullYear()}年${e.getMonth()+1}月${e.getDate()}日`}function fi(e,t){let n=t.getBoundingClientRect();if(`touches`in e&&e.touches[0]){let t=e.touches[0];return{x:t.clientX-n.left,y:t.clientY-n.top}}let r=e;return{x:r.clientX-n.left,y:r.clientY-n.top}}function pi(){let e=X.value;if(!e)return;let t=e.closest(`.promise-sig-wrap`),n=window.devicePixelRatio||1,r=window.getComputedStyle(e);ni=Math.max(280,Math.floor(t?.clientWidth||520)),ri=Math.max(76,Math.floor(parseFloat(r.height)||110)),e.style.width=`${ni}px`,e.style.height=`${ri}px`,e.width=Math.floor(ni*n),e.height=Math.floor(ri*n),Z=e.getContext(`2d`),Z&&(Z.setTransform(1,0,0,1,0,0),Z.scale(n,n),Z.fillStyle=`#ffffff`,Z.fillRect(0,0,ni,ri),Z.strokeStyle=`#111111`,Z.lineWidth=2,Z.lineCap=`round`,Z.lineJoin=`round`,ai=!1,ti.value=!0)}function mi(){let e=String(M.promise_signature??``).trim();if(!e||!Z)return;let t=new Image;t.onload=()=>{Z&&(Z.drawImage(t,0,0,ni,ri),ai=!0,ti.value=!1)},t.src=e}function hi(){let e=X.value;if(!e||!Z)return;ci(),oi=new AbortController;let{signal:t}=oi,n=t=>{if(`touches`in t&&t.preventDefault(),!Z)return;ii=!0;let n=fi(t,e);Z.beginPath(),Z.moveTo(n.x,n.y)},r=t=>{if(!ii||!Z)return;`touches`in t&&t.preventDefault();let n=fi(t,e);Z.lineTo(n.x,n.y),Z.stroke(),ai=!0,ti.value=!1},i=()=>{ii=!1};e.addEventListener(`mousedown`,n,{signal:t}),e.addEventListener(`mousemove`,r,{signal:t}),window.addEventListener(`mouseup`,i,{signal:t}),e.addEventListener(`touchstart`,n,{passive:!1,signal:t}),e.addEventListener(`touchmove`,r,{passive:!1,signal:t}),e.addEventListener(`touchend`,i,{signal:t}),e.addEventListener(`touchcancel`,i,{signal:t})}function gi(){ei.value=di(new Date);let e=t=>{if(!X.value){t<40&&requestAnimationFrame(()=>e(t+1));return}pi(),hi(),String(M.promise_signature??``).trim()&&M.commitment_accepted===`1`&&mi()};i(()=>{requestAnimationFrame(()=>e(0))})}function _i(e){si?.();let t=()=>{gi()},n=()=>{ci()};e.addEventListener(`shown.bs.modal`,t),e.addEventListener(`hidden.bs.modal`,n),si=()=>{e.removeEventListener(`shown.bs.modal`,t),e.removeEventListener(`hidden.bs.modal`,n),si=null}}u($r,e=>{si?.(),e&&_i(e)},{flush:`post`});function vi(){if(W.value)return;let e=$r.value;e&&ce.getOrCreateInstance(e).show()}function yi(){pi(),hi()}function bi(){let e=X.value;if(!ai||!e){Y(`请先在签名区域内手写签名后再确认。`,`请确认`,`warning`);return}let t=e.toDataURL(`image/png`);if(t.length>Jn){Y(`签名数据过大,请清除后重新签名或联系管理员。`,`提示`,`warning`);return}M.promise_signature=t,M.commitment_accepted=`1`;let n=$r.value;n&&ce.getInstance(n)?.hide()}function xi(){let e={};for(let t of k.value)if(t.type!==`file`){if(t.type===`checkbox`){e[t.key]=M[t.key]===`1`;continue}e[t.key]=M[t.key]??``}return k.value.some(e=>e.key===`commitment_accepted`)&&M.commitment_accepted===`1`&&(e.promise_signature=M.promise_signature??``),e}function Si(e,t,n,r){let i=Zn(r),a=Qn(r),o=e.filter(e=>e.file),s=e.filter(e=>e.fromServer&&!e.file);if(!o.length&&!s.length)return{ok:n,feedback:n?``:t};if(a!==null&&e.length>a)return{ok:!1,feedback:`最多可上传 ${a} 个文件,请删除多余文件后重试`};let c=o.map(e=>e.file).find(e=>{let t=(e.name.split(`.`).pop()||``).toLowerCase();return!i.includes(t)});if(c)return{ok:!1,feedback:`“${c.name}”格式不支持,请上传 ${i.join(`、`)} 格式的文件`};let l=o.map(e=>e.file).find(e=>e.size>Gn);return l?{ok:!1,feedback:`“${l.name}”大小不能超过20M`}:{ok:!0,feedback:``}}function Ci(){return k.value.some(e=>e.key===`plan`&&e.type===`file`)}function wi(){return k.value.some(e=>e.key===`supporting`&&e.type===`file`)}function Q(){if(!Ci())return S(Or)?.setCustomValidity(``),!0;let e=$n(`plan`),t=Si(L.value,`请上传商业计划书`,!1,e);return Tr.value=t.feedback,S(Or)?.setCustomValidity(t.ok?``:`missing`),t.ok}function $(){if(!wi())return S(kr)?.setCustomValidity(``),!0;let e=$n(`supporting`),t=Si(R.value,`文件格式或大小不符合要求`,!0,e);return Er.value=t.feedback,S(kr)?.setCustomValidity(t.ok?``:`bad`),t.ok}function Ti(){U.value=!0,Q(),$();let e=k.value.find(e=>e.key===`track`);if(e&&Fr(e)){pr.value=!M.track;let e=S(mr);e&&e.setCustomValidity(M.track?``:`请选择主题赛道`)}else pr.value=!1,S(mr)?.setCustomValidity(``);return!(Dr.value?.checkValidity()??!1)||e&&q(e)&&!M.track||!Q()||!$()?!1:k.value.find(e=>e.key===`commitment_accepted`)&&(M.commitment_accepted!==`1`||!String(M.promise_signature??``).trim())?(Y(`请先阅读并完成参赛承诺书的手写签署。`,`提示`,`warning`),!1):!0}async function Ei(e){let t=localStorage.getItem(oe);if(!t)return;let n=(e===`plan`?L.value:R.value).filter(e=>e.file&&!e.fromServer);if(n.length!==0){for(let r of n){if(!r.file)continue;let n=new FormData;n.append(`kind`,e===`plan`?`plan`:`supporting`),n.append(`file`,r.file);let i=await D(`${T()}/api/applications/current/files${E()}`,{method:`POST`,headers:{Authorization:`Bearer ${t}`,Accept:`application/json`},body:n}),a=await i.json().catch(()=>({}));if(i.status===401){O();return}if(!i.ok){Y(Ur(a),`提示`,`warning`);return}let o=r.previewUrl;r.id=a.id,r.fromServer=!0,r.original_name=a.original_name,r.size=a.size;let s=ae(String(a.url??``));r.url=s,r.previewUrl=s,o&&String(o).startsWith(`blob:`)&&URL.revokeObjectURL(o),delete r.file}Y(`文件已上传。`,`上传成功`,`success`),e===`plan`?Q():$()}}function Di(e){e.localBlobUrl&&e.localBlobUrl.startsWith(`blob:`)&&(URL.revokeObjectURL(e.localBlobUrl),delete e.localBlobUrl),e.previewUrl&&String(e.previewUrl).startsWith(`blob:`)&&URL.revokeObjectURL(e.previewUrl)}async function Oi(e){if(e.localBlobUrl){window.open(e.localBlobUrl,`_blank`,`noopener,noreferrer`);return}if(e.file&&e.previewUrl?.startsWith(`blob:`)){window.open(e.previewUrl,`_blank`,`noopener,noreferrer`);return}let t=ae(e.previewUrl||e.url);if(!t)return;if(!e.fromServer){window.open(t,`_blank`,`noopener,noreferrer`);return}let n=e.original_name?.trim()||`附件`,r=ye(n,e.size,`打开`);if(r)try{let i=await fetch(t,{credentials:`omit`,headers:{Accept:`application/json,*/*`}});if(!i.ok){let e=`附件文件不存在或已丢失`;try{let t=await i.json();typeof t.message==`string`&&t.message.trim()&&(e=t.message.trim())}catch{}await Y(e,`提示`,`warning`);return}r.setText(`正在打开「${n}」…`);let a=await i.blob(),o=URL.createObjectURL(a);e.localBlobUrl=o,window.open(o,`_blank`,`noopener,noreferrer`)}catch{await Y(`网络错误,无法打开附件`,`提示`,`warning`)}finally{r.close()}}async function ki(e,t){let n=String(e);if(G.value||z.value.includes(n))return;let r=t===`plan`?[...L.value]:[...R.value],i=r.find(e=>String(e.id)===n);if(!i)return;let a=i.fromServer?Number(i.id):NaN;if(i.fromServer&&Number.isFinite(a)&&a>0){if(!localStorage.getItem(`cxxfds_token`)){O();return}z.value=[...z.value,n];try{let e=new AbortController,t=window.setTimeout(()=>e.abort(),15e3),n=await D(`${T()}/api/applications/current/files/${a}/delete${E()}`,{method:`POST`,headers:Yn(!1),signal:e.signal});if(window.clearTimeout(t),n.status===401){O();return}if(n.status!==404&&!n.ok){Y(`删除失败`,`提示`,`warning`);return}}catch(e){Y(e instanceof DOMException&&e.name===`AbortError`?`删除超时,请关闭已打开的预览窗口后重试`:`删除失败`,`提示`,`warning`);return}finally{z.value=z.value.filter(e=>e!==n)}}Di(i),r=r.filter(t=>String(t.id)!==String(e)),t===`plan`?L.value=r:R.value=r,U.value=!0,t===`plan`?Q():$()}function Ai(e,t){if(!e?.length||G.value)return;let n=Qn($n(t)),r=t===`plan`?[...L.value]:[...R.value],i=Array.from(e),a=n===null?i.length:Math.max(0,n-r.length);if(i.length>a&&n!==null&&Y(`该栏最多上传 ${n} 个文件,已忽略多余 ${i.length-a} 个选择。`,`提示`,`warning`),i=i.slice(0,a),i.forEach(e=>{r.push({id:`tmp-${Date.now()}-${Math.random().toString(16).slice(2)}`,file:e,previewUrl:URL.createObjectURL(e),fromServer:!1})}),t===`plan`){L.value=[...r],V.value=``;let e=S(Or);e&&(e.value=``),U.value=!0,Q()}else{R.value=[...r],H.value=``;let e=S(kr);e&&(e.value=``),U.value=!0,$()}Ei(t)}function ji(){return{formModel:{...M},planFileNames:L.value.map(J).filter(Boolean),supportingFileNames:R.value.map(J).filter(Boolean)}}function Mi(){let e=ji();localStorage.setItem(sr.value,JSON.stringify(e)),e.planFileNames.length?V.value=`已保存商业计划书名称:${e.planFileNames.join(`、`)}`:V.value=``,e.supportingFileNames.length?H.value=`已保存其他佐证材料名称:${e.supportingFileNames.join(`、`)}`:H.value=``}function Ni(){let e=localStorage.getItem(sr.value);if(e)try{let t=JSON.parse(e);if(t.formModel&&typeof t.formModel==`object`)for(let e of Object.keys(t.formModel))M[e]=t.formModel[e]??``;let n=t.planFileNames||[];n.length&&(V.value=`上次保存商业计划书名称:${n.join(`、`)}(浏览器限制,需重新选择后预览或删除)`);let r=t.supportingFileNames;r?.length&&(H.value=`上次保存其他佐证材料名称:${r.join(`、`)}(浏览器限制,需重新选择后预览或删除)`),wr()}catch{localStorage.removeItem(sr.value)}}async function Pi(){tr.value=!1;let e=x.value;if(!e){j.value=`缺少赛事地址`;return}j.value=``;try{let t=await fetch(`${T()}/api/v1/public/competitions/by-slug/${encodeURIComponent(e)}`,{headers:{Accept:`application/json`}});if(!t.ok){j.value=t.status===404?`赛事不存在或未发布`:`无法加载赛事配置`;return}let n=await t.json(),r=n.data!=null&&typeof n.data==`object`&&!Array.isArray(n.data)?n.data:n;nr.value=String(r.name??``),rr.value=typeof r.pledge_content_html==`string`?r.pledge_content_html:``;let i=r.tracks;A.value=Array.isArray(i)?i:[];let a=r.signup_form_schema;if(typeof a==`string`)try{a=JSON.parse(a)}catch{a=[]}k.value=Ce(a),or(k.value),ar.value=ge(r.branding_json??null);let o=ar.value.documentTitle;me(o)&&typeof document<`u`&&(document.title=o.trim()),tr.value=!0}catch{j.value=`网络错误,无法加载赛事`}}function Fi(e){cr.value=e.status||`draft`,lr.value=typeof e.submitted_at==`string`?e.submitted_at:``,N.value=e.participant_may_edit!==!1,ur.value=typeof e.participant_may_edit_files==`boolean`?e.participant_may_edit_files:e.participant_may_edit!==!1;for(let t of k.value){if(t.type===`file`||t.key===`commitment_accepted`||t.key===`promise_signature`)continue;let n=Object.prototype.hasOwnProperty.call(e,t.key)?e[t.key]:void 0;t.type===`checkbox`?M[t.key]=n?`1`:``:M[t.key]=n==null?``:String(n)}let t=Object.prototype.hasOwnProperty.call(e,`promise_signature`),n=t?typeof e.promise_signature==`string`?e.promise_signature:``:String(M.promise_signature??``);(t||!e.promise_signed_at)&&(M.promise_signature=n),M.commitment_accepted=n.trim()&&e.promise_signed_at?`1`:``,wr(),L.value=(e.files||[]).filter(e=>e.kind===`plan`).map(e=>{let t=ae(e.url);return{id:e.id,fromServer:!0,original_name:e.original_name,size:e.size,url:t,previewUrl:t}}),R.value=(e.files||[]).filter(e=>e.kind===`supporting`).map(e=>{let t=ae(e.url);return{id:e.id,fromServer:!0,original_name:e.original_name,size:e.size,url:t,previewUrl:t}}),Q(),$()}async function Ii(){if(!localStorage.getItem(`cxxfds_token`))return!1;let e=new AbortController,t=window.setTimeout(()=>e.abort(),2e4);try{let t=await D(`${T()}/api/applications/current${E()}`,{headers:Yn(!1),signal:e.signal});return t.status===401?(localStorage.removeItem(oe),O(),!1):t.ok?(Fi(await t.json()),!0):!1}catch{return!1}finally{window.clearTimeout(t)}}async function Li(){if(B.value)return!1;B.value=!0;let e=new AbortController,t=window.setTimeout(()=>e.abort(),2e4);try{let t=await D(`${T()}/api/applications/current/save${E()}`,{method:`POST`,headers:Yn(!0),body:JSON.stringify(xi()),signal:e.signal});if(t.status===401)return O(),!1;if(!t.ok)return t.json().catch(()=>({})),Y(`草稿未能保存,请检查网络或稍后重试。`,`保存失败`,`warning`),!1;try{Fi(await t.json())}catch{}return!0}catch(e){return Y(e instanceof DOMException&&e.name===`AbortError`?`保存超时,请稍后重试`:`草稿未能保存,请检查网络或稍后重试。`,`保存失败`,`warning`),!1}finally{window.clearTimeout(t),B.value=!1}}function Ri(e){if(typeof e!=`object`||!e||Array.isArray(e))return[];let t=[];for(let n of Object.values(e))if(Array.isArray(n))for(let e of n)typeof e==`string`&&e.trim()&&t.push(e.trim());else typeof n==`string`&&n.trim()&&t.push(n.trim());return t}function zi(e){let t=e.trim();return t===`The given data was invalid.`||t===`The given data was invalid`||t===`给定的数据无效。`||t===`给定的数据无效`}function Bi(e,t){let n=Ri(t.errors);if(n.length>0)return n[0];let r=t.message;if(typeof r==`string`&&r.trim()){let e=r.trim();if(!zi(e))return e}return e===404?`赛事不存在或未发布,请返回重新进入报名页。`:e===403?`当前账号无权限提交,请确认登录状态或联系管理员。`:e===409?`报名状态已变更或发生冲突,请刷新页面后重试。`:e===429?`请求过于频繁,请稍后再试。`:e>=500?`服务暂时不可用,请稍后重试。`:e===422?`提交失败,请填写完整信息。`:`报名未能提交,请检查网络或稍后重试。`}async function Vi(){let e=new AbortController,t=window.setTimeout(()=>e.abort(),3e4);try{let t=await D(`${T()}/api/applications/current/submit${E()}`,{method:`POST`,headers:Yn(!0),body:JSON.stringify(xi()),signal:e.signal});if(t.status===401)return O(),!1;if(!t.ok){let e={};try{e=await t.json()}catch{}return Y(Bi(t.status,e),`提交失败`,`warning`),!1}let n=await t.json();Fi(n);let r=n.success_notice,i=r?.enabled===!0&&typeof r.message==`string`?r.message.trim():``;return{channelCallback:Yr(n.channel_callback),successNoticeMessage:i}}catch(e){return Y(e instanceof DOMException&&e.name===`AbortError`?`提交超时,请稍后重试`:`报名未能提交,请检查网络或稍后重试。`,`提交失败`,`warning`),!1}finally{window.clearTimeout(t)}}async function Hi(){if(!localStorage.getItem(`cxxfds_token`)){O();return}await Li()&&(Mi(),Y(`已保存草稿(按当前已填写信息暂存)。`,`保存成功`,`success`))}async function Ui(){if(!localStorage.getItem(`cxxfds_token`)){O();return}if(!Ti())return;let e=await Vi();if(!e)return;let t=e.successNoticeMessage||`已提交报名`;if(e.channelCallback){if(await Y(t,`提交成功`,`success`),e.channelCallback.type===`mini_program`){await Qr(e.channelCallback.path,e.channelCallback.method)||Y(`未检测到微信小程序回跳能力,请从小程序内重新进入或联系管理员。`,`回跳失败`,`warning`);return}window.location.href=e.channelCallback.redirectUrl;return}Y(t,`提交成功`,`success`)}return o(()=>{si?.(),ci()}),s(()=>{(async()=>{await Pi(),!j.value&&(await Ii()||Ni(),wr())})()}),(i,a)=>(_(),v(`div`,we,[y(`div`,Te,[y(`h5`,Ee,h(jr.value),1),!j.value&&Mr.value?(_(),v(`p`,De,h(Mr.value),1)):t(``,!0),j.value?(_(),v(`p`,Oe,h(j.value),1)):tr.value&&A.value.length===0&&k.value.some(e=>e.key===`track`)?(_(),v(`p`,ke,` 本场赛事尚未在「赛道管理」中配置可用赛道,提交时可能会失败,请联系管理员。 `)):t(``,!0)]),j.value?t(``,!0):(_(),v(`div`,Ae,[y(`div`,je,[y(`div`,Me,[y(`div`,{class:e([`application-status-panel`,P.value?`application-status-panel--submitted`:`application-status-panel--draft`]),role:`status`,"aria-live":`polite`},[y(`div`,Ne,[P.value?(_(),v(`svg`,Pe,[...a[5]||=[y(`circle`,{cx:`12`,cy:`12`,r:`9.5`,stroke:`currentColor`,"stroke-width":`1.8`},null,-1),y(`path`,{d:`M7.6 12.2l2.8 2.8 6-6.2`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`},null,-1)]])):(_(),v(`svg`,Fe,[...a[6]||=[y(`circle`,{cx:`12`,cy:`12`,r:`9.5`,stroke:`currentColor`,"stroke-width":`1.8`},null,-1),y(`path`,{d:`M12 7.5v5.2`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`},null,-1),y(`circle`,{cx:`12`,cy:`16.5`,r:`1`,fill:`currentColor`},null,-1)]]))]),y(`div`,Ie,[y(`strong`,null,h(dr.value),1),y(`span`,null,h(fr.value),1)])],2),y(`div`,Le,[a[7]||=y(`span`,{class:`apply-contact-label`},`参赛咨询:`,-1),(_(!0),v(p,null,c(r(ve),e=>(_(),v(`a`,{key:e.tel,href:`tel:${e.tel}`},h(e.display),9,Re))),128)),y(`a`,{href:`tel:${r(_e).tel}`},`技术咨询:`+h(r(_e).display),9,ze)]),y(`form`,{id:`applyForm`,ref_key:`applyFormEl`,ref:Dr,class:e([`row g-3`,{"was-validated":U.value}]),onSubmit:a[4]||=ne(()=>{},[`prevent`])},[(_(!0),v(p,null,c(Ir.value,r=>(_(),v(p,{key:r.type===`file`?`f-`+r.key:r.key},[r.key===`track`?(_(),v(`div`,Be,[y(`label`,Ve,[n(h(r.label)+` `,1),q(r)?(_(),v(`span`,He,`*`)):t(``,!0),w(r)?(_(),v(`span`,Ue,h(w(r)),1)):t(``,!0)]),y(`div`,We,[f(y(`select`,{id:`track`,ref_for:!0,ref_key:`trackHiddenSelect`,ref:mr,"onUpdate:modelValue":a[0]||=e=>M.track=e,class:`visually-hidden`,required:q(r),tabindex:`-1`,"aria-hidden":`true`,disabled:W.value},[(_(!0),v(p,null,c(A.value,e=>(_(),v(`option`,{key:e.track_code,value:e.track_code},h(e.title),9,Ke))),128))],8,Ge),[[ie,M.track]]),y(`div`,qe,[y(`button`,{ref_for:!0,ref_key:`trackDropdownBtn`,ref:hr,type:`button`,class:e([`dropdown-toggle form-select track-custom-toggle editable w-100 text-start`,{"is-invalid":pr.value&&U.value}]),"aria-labelledby":`trackFieldLabel`,"aria-expanded":`false`,"data-bs-toggle":`dropdown`,"data-bs-display":`static`,"data-bs-auto-close":`true`,disabled:W.value},[y(`span`,Ye,[y(`span`,{class:e(_r.value)},h(gr.value),3)])],10,Je),vr.value?(_(),v(`small`,Xe,h(vr.value),1)):t(``,!0),y(`ul`,Ze,[(_(!0),v(p,null,c(A.value,e=>(_(),v(`li`,{key:e.track_code},[y(`button`,{type:`button`,class:`dropdown-item track-pick border-0 w-100 text-start rounded-0`,onClick:t=>br(e.track_code)},[y(`span`,$e,[y(`span`,et,h(e.title),1),yr(e.description)?(_(),v(`span`,tt,h(yr(e.description)),1)):t(``,!0)])],8,Qe)]))),128))]),a[8]||=y(`div`,{class:`invalid-feedback`},`请选择主题赛道`,-1)])]),C(r.help)?(_(),v(`small`,nt,h(C(r.help)),1)):t(``,!0)])):r.type===`file`&&r.key===`plan`?(_(),v(`div`,rt,[y(`label`,it,[n(h(r.label)+` `,1),q(r)?(_(),v(`span`,at,`*`)):t(``,!0),w(r)?(_(),v(`span`,ot,h(w(r)),1)):t(``,!0)]),y(`input`,{ref_for:!0,ref_key:`planFileInput`,ref:Or,type:`file`,class:e([`form-control editable`,{"is-invalid":U.value&&!!Tr.value}]),accept:er(r),multiple:``,disabled:G.value,onChange:a[1]||=e=>Ai(e.target.files,`plan`)},null,42,st),y(`div`,{class:e([`apply-file-status`,{"apply-file-status--filled":L.value.length>0}])},h(Vr(L.value)),3),C(r.help)?(_(),v(`small`,ct,h(C(r.help)),1)):t(``,!0),L.value.length?(_(),v(`div`,lt,[(_(!0),v(p,null,c(L.value,e=>(_(),v(`div`,{key:String(e.id),class:`supporting-file-item`},[y(`div`,ut,[y(`span`,{class:`supporting-file-name`,title:J(e)},h(J(e)),9,dt),y(`span`,ft,h(zr(e.file?e.file.size:e.size||0)),1)]),y(`div`,pt,[y(`button`,{type:`button`,class:`btn btn-sm btn-outline-primary`,onClick:t=>Oi(e)},` 查看/下载 `,8,mt),y(`button`,{type:`button`,class:`btn btn-sm btn-outline-danger`,disabled:G.value||z.value.includes(String(e.id)),onClick:t=>ki(e.id,`plan`)},h(z.value.includes(String(e.id))?`删除中…`:`删除`),9,ht)])]))),128))])):t(``,!0),y(`small`,gt,h(V.value),1),U.value&&Tr.value?(_(),v(`div`,_t,h(Tr.value),1)):t(``,!0)])):r.type===`file`&&r.key===`supporting`?(_(),v(`div`,vt,[y(`label`,yt,[n(h(r.label)+` `,1),q(r)?(_(),v(`span`,bt,`*`)):t(``,!0),w(r)?(_(),v(`span`,xt,h(w(r)),1)):t(``,!0)]),y(`input`,{ref_for:!0,ref_key:`supportingFileInput`,ref:kr,type:`file`,class:e([`form-control editable`,{"is-invalid":U.value&&!!Er.value}]),accept:er(r),multiple:``,disabled:G.value,onChange:a[2]||=e=>Ai(e.target.files,`supporting`)},null,42,St),y(`div`,{class:e([`apply-file-status`,{"apply-file-status--filled":R.value.length>0}])},h(Vr(R.value)),3),C(r.help)?(_(),v(`small`,Ct,h(C(r.help)),1)):t(``,!0),R.value.length?(_(),v(`div`,wt,[(_(!0),v(p,null,c(R.value,e=>(_(),v(`div`,{key:String(e.id),class:`supporting-file-item`},[y(`div`,Tt,[y(`span`,{class:`supporting-file-name`,title:J(e)},h(J(e)),9,Et),y(`span`,Dt,h(zr(e.file?e.file.size:e.size||0)),1)]),y(`div`,Ot,[y(`button`,{type:`button`,class:`btn btn-sm btn-outline-primary`,onClick:t=>Oi(e)},` 查看/下载 `,8,kt),y(`button`,{type:`button`,class:`btn btn-sm btn-outline-danger`,disabled:G.value||z.value.includes(String(e.id)),onClick:t=>ki(e.id,`supporting`)},h(z.value.includes(String(e.id))?`删除中…`:`删除`),9,At)])]))),128))])):t(``,!0),y(`small`,jt,h(H.value),1),U.value&&Er.value?(_(),v(`div`,Mt,h(Er.value),1)):t(``,!0)])):r.type===`select`&&!Rr(r)?(_(),v(`div`,{key:3,class:e(K(r))},[y(`label`,Nt,[n(h(r.label)+` `,1),q(r)?(_(),v(`span`,Pt,`*`)):t(``,!0),w(r)?(_(),v(`span`,Ft,h(w(r)),1)):t(``,!0)]),f(y(`select`,{"onUpdate:modelValue":e=>M[r.key]=e,class:`form-select editable`,required:q(r),disabled:W.value},[y(`option`,Lt,h(Hr(r)),1),(_(!0),v(p,null,c(Lr(r),e=>(_(),v(`option`,{key:`${r.key}-${e.value}`,value:e.value},h(e.label),9,Rt))),128))],8,It),[[ie,M[r.key]]]),y(`div`,zt,`请选择`+h(r.label),1),C(r.help)?(_(),v(`small`,Bt,h(C(r.help)),1)):t(``,!0)],2)):Rr(r)?(_(),v(`div`,{key:4,class:e(K(r))},[y(`label`,Vt,[n(h(r.label)+` `,1),q(r)?(_(),v(`span`,Ht,`*`)):t(``,!0),w(r)?(_(),v(`span`,Ut,h(w(r)),1)):t(``,!0)]),f(y(`select`,{"onUpdate:modelValue":a[3]||=e=>M.location_city=e,class:`form-select editable`,required:q(r),disabled:W.value||!I.value||!String(M.location_province??``).trim()},[y(`option`,Gt,h(String(M.location_province??``).trim()?Hr(r):`请先选择省份`),1),(_(!0),v(p,null,c(Lr(r),e=>(_(),v(`option`,{key:e.value,value:e.value},h(e.label),9,Kt))),128))],8,Wt),[[ie,M.location_city]]),y(`div`,qt,`请选择`+h(r.label),1),C(r.help)?(_(),v(`small`,Jt,h(C(r.help)),1)):t(``,!0)],2)):r.type===`checkbox`&&r.key===`commitment_accepted`?(_(),v(`div`,{key:5,class:e(K(r))},[y(`label`,Yt,[n(h(r.label)+` `,1),q(r)?(_(),v(`span`,Xt,`*`)):t(``,!0),w(r)?(_(),v(`span`,Zt,h(w(r)),1)):t(``,!0)]),a[9]||=y(`p`,{class:`small text-secondary mb-2`},` 请点击按钮打开承诺书全文,阅读后在文末手写签名并点击「确认签署」。 `,-1),y(`div`,Qt,[y(`button`,{type:`button`,class:`btn btn-outline-primary btn-sm editable`,disabled:W.value,onClick:vi},h(li.value?`重新查看承诺书`:`查看并签署参赛承诺书`),9,$t),li.value?(_(),v(`span`,en,`已完成签署`)):t(``,!0)]),C(r.help)?(_(),v(`small`,tn,h(C(r.help)),1)):t(``,!0)],2)):r.type===`checkbox`?(_(),v(`div`,{key:6,class:e(K(r))},[y(`div`,nn,[f(y(`input`,{id:`signup-field-`+r.key,"onUpdate:modelValue":e=>M[r.key]=e,type:`checkbox`,class:`form-check-input editable`,"true-value":`1`,"false-value":``,required:q(r),disabled:W.value},null,8,rn),[[re,M[r.key]]]),y(`label`,{class:`form-check-label`,for:`signup-field-`+r.key},[n(h(r.label)+` `,1),q(r)?(_(),v(`span`,on,`*`)):t(``,!0),w(r)?(_(),v(`span`,sn,h(w(r)),1)):t(``,!0)],8,an),a[10]||=y(`div`,{class:`invalid-feedback`},`请勾选此项以继续`,-1)]),C(r.help)?(_(),v(`small`,cn,h(C(r.help)),1)):t(``,!0)],2)):r.type===`textarea`?(_(),v(`div`,{key:7,class:e(K(r))},[y(`label`,ln,[n(h(r.label)+` `,1),q(r)?(_(),v(`span`,un,`*`)):t(``,!0),w(r)?(_(),v(`span`,dn,h(w(r)),1)):t(``,!0)]),f(y(`textarea`,{"onUpdate:modelValue":e=>M[r.key]=e,class:`form-control editable`,rows:`4`,placeholder:``,required:q(r),disabled:W.value},null,8,fn),[[te,M[r.key]]]),Pr(r)||r.key===`intro`?(_(),v(`div`,pn,[Pr(r)?(_(),v(`small`,mn,h(Pr(r)),1)):t(``,!0),r.key===`intro`?(_(),v(`small`,hn,h(Ar.value)+` 字`,1)):t(``,!0)])):t(``,!0),C(r.help)?(_(),v(`small`,{key:1,class:e([`text-secondary prototype-subtitle d-block`,{"mt-1":r.key===`intro`||Pr(r)}])},h(C(r.help)),3)):t(``,!0)],2)):(_(),v(`div`,{key:8,class:e(K(r))},[y(`label`,gn,[n(h(r.label)+` `,1),q(r)?(_(),v(`span`,_n,`*`)):t(``,!0),w(r)?(_(),v(`span`,vn,h(w(r)),1)):t(``,!0)]),f(y(`input`,{"onUpdate:modelValue":e=>M[r.key]=e,type:r.type===`email`?`email`:r.key===`contact_mobile`?`tel`:`text`,class:e([`form-control editable`,{"company-name-input":r.key===`company_name`}]),required:q(r),disabled:W.value,placeholder:(r.placeholder??``).trim(),pattern:r.key===`contact_mobile`?Kn:void 0,autocomplete:r.key===`company_name`?`organization`:void 0},null,10,yn),[[ee,M[r.key]]]),y(`div`,bn,h(Nr(r)),1),C(r.help)?(_(),v(`small`,xn,h(C(r.help)),1)):t(``,!0)],2))],64))),128)),y(`div`,Sn,[y(`button`,{type:`button`,class:`btn btn-outline-primary`,disabled:W.value||B.value,onClick:Hi},h(B.value?`保存中…`:P.value?`保存修改`:`保存`),9,Cn),y(`button`,{type:`button`,class:`btn btn-success`,disabled:W.value,onClick:Ui},h(P.value?`更新报名`:`提交报名`),9,wn)])],34)])])])),!j.value&&k.value.some(e=>e.key===`commitment_accepted`)?(_(),v(`div`,{key:1,id:`promiseSignModal`,ref_key:`promiseSignModalRef`,ref:$r,class:`modal fade`,tabindex:`-1`,"aria-hidden":`true`,"data-bs-backdrop":`static`},[y(`div`,Tn,[y(`div`,En,[y(`div`,Dn,[y(`div`,On,[y(`h1`,kn,h(ui.value),1),y(`div`,An,[y(`div`,{class:`promise-doc-body promise-doc-body--rich`,innerHTML:ir.value},null,8,jn)]),y(`div`,Mn,[y(`div`,Nn,[a[11]||=y(`span`,{class:`promise-doc-signlabel`},`参赛人签名:`,-1),y(`div`,Pn,[y(`div`,Fn,[y(`canvas`,{ref_key:`promiseCanvasRef`,ref:X,class:`promise-sig-canvas`,width:`520`,height:`140`,"aria-label":`手写签名区域`},null,512),y(`span`,{class:e([`promise-sig-hint`,{"d-none":!ti.value}])},`请在框内手写签名`,2)]),y(`div`,{class:`promise-sig-tools`},[y(`button`,{type:`button`,class:`btn btn-sm btn-outline-secondary`,onClick:yi},` 清除签名 `)])])]),y(`div`,In,[y(`span`,Ln,[a[12]||=n(`日期:`,-1),y(`strong`,null,h(ei.value),1)])])]),y(`div`,{class:`promise-sign-actions`},[a[13]||=y(`button`,{type:`button`,class:`btn btn-light notice-cancel-btn`,"data-bs-dismiss":`modal`},`关闭`,-1),y(`button`,{type:`button`,class:`btn btn-primary`,onClick:bi},`确认签署`)])])])])])],512)):t(``,!0),y(`div`,{ref_key:`noticeModalEl`,ref:Wr,id:`applyNoticeModal`,class:`modal fade`,tabindex:`-1`,"aria-hidden":`true`},[y(`div`,Rn,[y(`div`,{class:e([`modal-content notice-modal-content`,qr.value?`notice-success`:`notice-warning`])},[a[16]||=y(`div`,{class:`modal-header border-0 pb-0`},[y(`button`,{type:`button`,class:`btn-close ms-auto`,"data-bs-dismiss":`modal`,"aria-label":`关闭`})],-1),y(`div`,zn,[y(`div`,Bn,[qr.value?(_(),v(`svg`,Vn,[...a[14]||=[y(`circle`,{cx:`12`,cy:`12`,r:`10`,stroke:`currentColor`,"stroke-width":`1.8`},null,-1),y(`path`,{d:`M7 12.2l3.1 3.1L17.2 8.8`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`},null,-1)]])):(_(),v(`svg`,Hn,[...a[15]||=[y(`path`,{d:`M12 3.6L2.9 19.2a1 1 0 0 0 .86 1.5h16.48a1 1 0 0 0 .86-1.5L12 3.6z`,stroke:`currentColor`,"stroke-width":`1.8`},null,-1),y(`path`,{d:`M12 9v5`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`},null,-1),y(`circle`,{cx:`12`,cy:`16.8`,r:`1.1`,fill:`currentColor`},null,-1)]]))]),y(`h5`,Un,h(Gr.value),1),Kr.value.trim()?(_(),v(`p`,Wn,h(Kr.value),1)):t(``,!0)]),a[17]||=y(`div`,{class:`modal-footer notice-modal-footer border-0`},[y(`button`,{type:`button`,class:`btn btn-light notice-cancel-btn`,"data-bs-dismiss":`modal`},`取消`),y(`button`,{type:`button`,class:`btn btn-primary notice-ok-btn`,"data-bs-dismiss":`modal`},`确定`)],-1)],2)])],512)]))}}),[[`__scopeId`,`data-v-3879c265`]]),T=g({__name:`ApplyView`,setup(e){return(e,t)=>(_(),a(w))}});export{T as default}; \ No newline at end of file diff --git a/public/admin/assets/CompetitionFormView-CE6wqRFe.js b/public/admin/assets/CompetitionFormView-B35kaWp1.js similarity index 99% rename from public/admin/assets/CompetitionFormView-CE6wqRFe.js rename to public/admin/assets/CompetitionFormView-B35kaWp1.js index d032b09..b2be1c1 100644 --- a/public/admin/assets/CompetitionFormView-CE6wqRFe.js +++ b/public/admin/assets/CompetitionFormView-B35kaWp1.js @@ -1,4 +1,4 @@ -import{a as e,i as t,n,r,t as i}from"./rolldown-runtime-BYbx6iT9.js";import{$t as a,At as o,C as s,D as c,Dt as l,Et as u,Ht as d,I as f,It as p,Jt as m,Lt as h,Mt as g,Nt as _,O as v,Ot as y,Q as b,Qt as x,Rt as S,S as C,Ut as w,V as T,Vt as E,W as D,Wt as O,Xt as ee,Y as k,Yt as A,Z as j,Zt as te,_t as M,an as ne,at as re,b as ie,bt as ae,ct as oe,g as se,i as ce,in as N,jt as le,k as ue,kt as P,nn as de,nt as fe,o as pe,ot as me,p as he,q as ge,qt as _e,rn as ve,st as F,w as ye,x as I,xt as be}from"./vue.runtime.esm-bundler-OsdSFvn7.js";import{b as xe,d as Se,f as L,i as Ce,l as R,n as we,u as Te}from"./index-DAT5gpOZ.js";import{t as Ee}from"./_plugin-vue_export-helper-CXTkFu_Z.js";import{c as De,i as Oe,l as ke,n as Ae,o as je,r as Me,s as Ne,t as Pe}from"./competitions-BSJLYyM3.js";import{t as Fe}from"./adminCompetition-m6obxaBw.js";import{n as Ie,r as Le,t as Re}from"./competitionBranding-DKFkcrfF.js";import{n as ze}from"./downloadFeedback-aIJlOgpJ.js";import{n as Be,r as Ve}from"./datetimeShanghai-D1tceWM9.js";import{n as He}from"./publicSourceChannels-COAaqE-_.js";import{i as Ue,n as We,r as Ge,t as Ke}from"./signupChannels-DsI7Cu8M.js";import{a as qe,n as Je,o as Ye,r as Xe,s as Ze,t as Qe}from"./applications-DrpsfVEd.js";async function $e(e,t){let{data:n}=await Ce.get(`/competitions/${e}/form-schemas`,{params:t?{purpose:t}:{}}),r=n;return{data:r.data??[],signupFieldRegistry:r.meta?.signup_field_registry}}async function et(e,t){let{data:n}=await Ce.get(`/competitions/${e}/form-schemas/${t}`),r=n?.data??n;if(!r||typeof r!=`object`||!(`id`in r))throw Error(`表单详情无效`);return r}async function tt(e,t){let{data:n}=await Ce.post(`/competitions/${e}/form-schemas`,t);return n}async function nt(e,t,n){let{data:r}=await Ce.patch(`/competitions/${e}/form-schemas/${t}`,n);return r}async function rt(e,t){await Ce.delete(`/competitions/${e}/form-schemas/${t}`)}var it=`commitment_accepted`,at=`commitment_promise`,ot={scalar_field_keys:[`player_name`,`school`,`degree`,`contact_email`,`contact_mobile`,`entry_group`,`company_name`,`project_name`,`track`,`location_country`,`location_province`,`location_city`,`oversea_country`,`intro`,`recommend`],file_field_keys:[...[`plan`,`supporting`]],commitment_field_key:it,scalar_type_hints:{player_name:[`text`],school:[`text`],degree:[`select`],contact_email:[`email`,`text`],contact_mobile:[`tel`,`text`],entry_group:[`select`],company_name:[`text`],project_name:[`text`],track:[`select`],location_country:[`select`],location_province:[`select`,`text`],location_city:[`select`,`text`],oversea_country:[`text`],intro:[`textarea`,`text`],recommend:[`text`,`textarea`]},generic_scalar_types:[`text`,`textarea`,`email`,`tel`,`select`,`number`,`date`],all_supported_form_keys:[]};ot.all_supported_form_keys=[...ot.scalar_field_keys,...ot.file_field_keys,ot.commitment_field_key];var st=ot;function ct(e){e&&Array.isArray(e.scalar_field_keys)&&(st=e)}function lt(e){let t=st;return t.scalar_type_hints[e]??t.generic_scalar_types}function ut(e,t){let n=e.trim(),r=t.trim();if(!n)return`存在未填写「字段 key」的项(须与 applications 表列名一致)`;let i=st;if(n===i.commitment_field_key)return r===`checkbox`||r===`commitment_promise`?null:`参赛承诺书字段须为 checkbox 类型`;if(i.file_field_keys.includes(n))return r===`file`?null:`附件字段「${n}」须为 file 类型`;if(!i.scalar_field_keys.includes(n))return`字段 key「${n}」不是 applications 表可填列,请使用:${i.all_supported_form_keys.join(`、`)}(新增列请先做数据库迁移并加入 Application.$fillable)`;let a=lt(n);return!r||!a.includes(r)?`字段「${n}」类型须为:${a.join(` / `)}`:null}function dt(e){Object.getOwnPropertySymbols(e).forEach(t=>{yi[t]=e[t]})}function ft(e,t=``){return{type:0,source:t,children:e,helpers:new Set,components:[],directives:[],hoists:[],imports:[],cached:[],temps:0,codegenNode:void 0,loc:wi}}function pt(e,t,n,r,i,a,o,s=!1,c=!1,l=!1,u=wi){return e&&(s?(e.helper(zr),e.helper(jt(e.inSSR,l))):e.helper(At(e.inSSR,l)),o&&e.helper(Zr)),{type:13,tag:t,props:n,children:r,patchFlag:i,dynamicProps:a,directives:o,isBlock:s,disableTracking:c,isComponent:l,loc:u}}function mt(e,t=wi){return{type:17,loc:t,elements:e}}function ht(e,t=wi){return{type:15,loc:t,properties:e}}function gt(e,t){return{type:16,loc:wi,key:A(e)?_t(e,!0):e,value:t}}function _t(e,t=!1,n=wi,r=0){return{type:4,loc:n,content:e,isStatic:t,constType:t?3:r}}function vt(e,t){return{type:5,loc:t,content:A(e)?_t(e,!1,t):e}}function yt(e,t=wi){return{type:8,loc:t,children:e}}function bt(e,t=[],n=wi){return{type:14,loc:n,callee:e,arguments:t}}function xt(e,t=void 0,n=!1,r=!1,i=wi){return{type:18,params:e,returns:t,newline:n,isSlot:r,loc:i}}function St(e,t,n,r=!0){return{type:19,test:e,consequent:t,alternate:n,newline:r,loc:wi}}function Ct(e,t,n=!1,r=!1){return{type:20,index:e,value:t,needPauseTracking:n,inVOnce:r,needArraySpread:!1,loc:wi}}function wt(e){return{type:21,body:e,loc:wi}}function Tt(e){return{type:22,elements:e,loc:wi}}function Et(e,t,n){return{type:23,test:e,consequent:t,alternate:n,loc:wi}}function Dt(e,t){return{type:24,left:e,right:t,loc:wi}}function Ot(e){return{type:25,expressions:e,loc:wi}}function kt(e){return{type:26,returns:e,loc:wi}}function At(e,t){return e||t?Hr:Ur}function jt(e,t){return e||t?Br:Vr}function Mt(e,{helper:t,removeHelper:n,inSSR:r}){e.isBlock||(e.isBlock=!0,n(At(r,e.isComponent)),t(zr),t(jt(r,e.isComponent)))}function Nt(e){return e>=97&&e<=122||e>=65&&e<=90}function Pt(e){return e===32||e===10||e===9||e===12||e===13}function Ft(e){return e===47||e===62||Pt(e)}function It(e){let t=new Uint8Array(e.length);for(let n=0;n{yi[t]=e[t]})}function ft(e,t=``){return{type:0,source:t,children:e,helpers:new Set,components:[],directives:[],hoists:[],imports:[],cached:[],temps:0,codegenNode:void 0,loc:wi}}function pt(e,t,n,r,i,a,o,s=!1,c=!1,l=!1,u=wi){return e&&(s?(e.helper(zr),e.helper(jt(e.inSSR,l))):e.helper(At(e.inSSR,l)),o&&e.helper(Zr)),{type:13,tag:t,props:n,children:r,patchFlag:i,dynamicProps:a,directives:o,isBlock:s,disableTracking:c,isComponent:l,loc:u}}function mt(e,t=wi){return{type:17,loc:t,elements:e}}function ht(e,t=wi){return{type:15,loc:t,properties:e}}function gt(e,t){return{type:16,loc:wi,key:A(e)?_t(e,!0):e,value:t}}function _t(e,t=!1,n=wi,r=0){return{type:4,loc:n,content:e,isStatic:t,constType:t?3:r}}function vt(e,t){return{type:5,loc:t,content:A(e)?_t(e,!1,t):e}}function yt(e,t=wi){return{type:8,loc:t,children:e}}function bt(e,t=[],n=wi){return{type:14,loc:n,callee:e,arguments:t}}function xt(e,t=void 0,n=!1,r=!1,i=wi){return{type:18,params:e,returns:t,newline:n,isSlot:r,loc:i}}function St(e,t,n,r=!0){return{type:19,test:e,consequent:t,alternate:n,newline:r,loc:wi}}function Ct(e,t,n=!1,r=!1){return{type:20,index:e,value:t,needPauseTracking:n,inVOnce:r,needArraySpread:!1,loc:wi}}function wt(e){return{type:21,body:e,loc:wi}}function Tt(e){return{type:22,elements:e,loc:wi}}function Et(e,t,n){return{type:23,test:e,consequent:t,alternate:n,loc:wi}}function Dt(e,t){return{type:24,left:e,right:t,loc:wi}}function Ot(e){return{type:25,expressions:e,loc:wi}}function kt(e){return{type:26,returns:e,loc:wi}}function At(e,t){return e||t?Hr:Ur}function jt(e,t){return e||t?Br:Vr}function Mt(e,{helper:t,removeHelper:n,inSSR:r}){e.isBlock||(e.isBlock=!0,n(At(r,e.isComponent)),t(zr),t(jt(r,e.isComponent)))}function Nt(e){return e>=97&&e<=122||e>=65&&e<=90}function Pt(e){return e===32||e===10||e===9||e===12||e===13}function Ft(e){return e===47||e===62||Pt(e)}function It(e){let t=new Uint8Array(e.length);for(let n=0;n{e&&$t(e,t)});break;case`RestElement`:$t(e.argument,t);break;case`AssignmentPattern`:$t(e.left,t);break}return t}function en(e){return Ii.includes(e.type)?en(e.expression):e}function tn(e){switch(e){case`Teleport`:case`teleport`:return Fr;case`Suspense`:case`suspense`:return Ir;case`KeepAlive`:case`keep-alive`:return Lr;case`BaseTransition`:case`base-transition`:return Rr}}function nn(e,t,n=t.length){return rn({offset:e.offset,line:e.line,column:e.column},t,n)}function rn(e,t,n=t.length){let r=0,i=-1;for(let e=0;ee.type===7&&e.name===`bind`&&(!e.arg||e.arg.type!==4||!e.arg.isStatic))}function un(e){return e.type===5||e.type===2}function dn(e){return e.type===7&&e.name===`pre`}function fn(e){return e.type===7&&e.name===`slot`}function pn(e){return e.type===1&&e.tagType===3}function mn(e){return e.type===1&&e.tagType===2}function hn(e,t=[]){if(e&&!A(e)&&e.type===14){let n=e.callee;if(!A(n)&&Zi.has(n))return hn(e.arguments[0],t.concat(e))}return[e,t]}function gn(e,t,n){let r,i=e.type===13?e.props:e.arguments[2],a=[],o;if(i&&!A(i)&&i.type===14){let e=hn(i);i=e[0],a=e[1],o=a[a.length-1]}if(i==null||A(i))r=ht([t]);else if(i.type===14){let e=i.arguments[0];!A(e)&&e.type===15?_n(t,e)||e.properties.unshift(t):i.callee===si?r=bt(n.helper(ni),[ht([t]),i]):i.arguments.unshift(ht([t])),!r&&(r=i)}else i.type===15?(_n(t,i)||i.properties.unshift(t),r=i):(r=bt(n.helper(ni),[ht([t]),i]),o&&o.callee===oi&&(o=a[a.length-2]));e.type===13?o?o.arguments[0]=r:e.props=r:o?o.arguments[0]=r:e.arguments[2]=r}function _n(e,t){let n=!1;if(e.key.type===4){let r=e.key.content;n=t.properties.some(e=>e.key.type===4&&e.key.content===r)}return n}function vn(e,t){return`_${t}_${e.replace(/[^\w]/g,(t,n)=>t===`-`?`_`:e.charCodeAt(n).toString())}`}function yn(e,t){if(!e||Object.keys(t).length===0)return!1;switch(e.type){case 1:for(let n=0;nyn(e,t));case 11:return yn(e.source,t)?!0:e.children.some(e=>yn(e,t));case 9:return e.branches.some(e=>yn(e,t));case 10:return yn(e.condition,t)?!0:e.children.some(e=>yn(e,t));case 4:return!e.isStatic&&zi(e.content)&&!!t[e.content];case 8:return e.children.some(e=>w(e)&&yn(e,t));case 5:case 12:return yn(e.content,t);case 2:case 3:case 20:return!1;default:return!1}}function bn(e){return e.type===14&&e.callee===_i?e.arguments[1].returns:e}function xn(e){for(let t=0;t{let i=t.start.offset+n;return Hn(e,!1,Rn(i,i+e.length),0,+!!r)},s={source:o(a.trim(),n.indexOf(a,i.length)),value:void 0,key:void 0,index:void 0,finalized:!1},c=i.trim().replace(ma,``).trim(),l=i.indexOf(c),u=c.match(pa);if(u){c=c.replace(pa,``).trim();let e=u[1].trim(),t;if(e&&(t=n.indexOf(e,l+c.length),s.key=o(e,t,!0)),u[2]){let r=u[2].trim();r&&(s.index=o(r,n.indexOf(r,s.key?t+e.length:l+c.length),!0))}}return c&&(s.value=o(c,l,!0)),s}function Tn(e,t){return na.slice(e,t)}function En(e){fa.inSFCRoot&&(ra.innerLoc=Rn(e+1,e+1)),Ln(ra);let{tag:t,ns:n}=ra;n===0&&ea.isPreTag(t)&&ca++,ea.isVoidTag(t)?On(ra,e):(da.unshift(ra),(n===1||n===2)&&(fa.inXML=!0)),ra=null}function Dn(e,t,n){{let t=da[0]&&da[0].tag;t!==`script`&&t!==`style`&&e.includes(`&`)&&(e=ea.decodeEntities(e,!1))}let r=da[0]||ta,i=r.children[r.children.length-1];i&&i.type===2?(i.content+=e,Bn(i.loc,n)):r.children.push({type:2,content:e,loc:Rn(t,n)})}function On(e,t,n=!1){n?Bn(e.loc,An(t,60)):Bn(e.loc,kn(t,62)+1),fa.inSFCRoot&&(e.children.length?e.innerLoc.end=g({},e.children[e.children.length-1].loc.end):e.innerLoc.end=g({},e.innerLoc.start),e.innerLoc.source=Tn(e.innerLoc.start.offset,e.innerLoc.end.offset));let{tag:r,ns:i,children:a}=e;if(la||(r===`slot`?e.tagType=2:jn(e)?e.tagType=3:Mn(e)&&(e.tagType=1)),fa.inRCDATA||(e.children=Pn(a)),i===0&&ea.isIgnoreNewlineTag(r)){let e=a[0];e&&e.type===2&&(e.content=e.content.replace(/^\r?\n/,``))}i===0&&ea.isPreTag(r)&&ca--,ua===e&&(la=fa.inVPre=!1,ua=null),fa.inXML&&(da[0]?da[0].ns:ea.ns)===0&&(fa.inXML=!1);{let t=e.props;if(!fa.inSFCRoot&&Rt(`COMPILER_NATIVE_TEMPLATE`,ea)&&e.tag===`template`&&!jn(e)){let t=da[0]||ta,n=t.children.indexOf(e);t.children.splice(n,1,...e.children)}let n=t.find(e=>e.type===6&&e.name===`inline-template`);n&&zt(`COMPILER_INLINE_TEMPLATE`,ea,n.loc)&&e.children.length&&(n.value={type:2,content:Tn(e.children[0].loc.start.offset,e.children[e.children.length-1].loc.end.offset),loc:n.loc})}}function kn(e,t){let n=e;for(;na.charCodeAt(n)!==t&&n=0;)n--;return n}function jn({tag:e,props:t}){if(e===`template`){for(let e=0;e64&&e<91}function Pn(e){let t=ea.whitespace!==`preserve`,n=!1;for(let r=0;re.type!==3);return t.length===1&&t[0].type===1&&!mn(t[0])?t[0]:null}function Jn(e,t,n,r=!1,i=!1){let{children:a}=e,o=[];for(let t=0;t0){if(e>=2){s.codegenNode.patchFlag=-1,o.push(s);continue}}else{let e=s.codegenNode;if(e.type===13){let t=e.patchFlag;if((t===void 0||t===512||t===1)&&Zn(s,n)>=2){let t=Qn(s);t&&(e.props=n.hoist(t))}e.dynamicProps&&=n.hoist(e.dynamicProps)}}}else if(s.type===12&&(r?0:Yn(s,n))>=2){s.codegenNode.type===14&&s.codegenNode.arguments.length>0&&s.codegenNode.arguments.push(`-1`),o.push(s);continue}if(s.type===1){let t=s.tagType===1;t&&n.scopes.vSlot++,Jn(s,e,n,!1,i),t&&n.scopes.vSlot--}else if(s.type===11)Jn(s,e,n,s.children.length===1,!0);else if(s.type===9)for(let t=0;te.key===t||e.key.content===t);return n&&n.value}}o.length&&n.transformHoist&&n.transformHoist(a,n,e)}function Yn(e,t){let{constantCache:n}=t;switch(e.type){case 1:if(e.tagType!==0)return 0;let r=n.get(e);if(r!==void 0)return r;let i=e.codegenNode;if(i.type!==13||i.isBlock&&e.tag!==`svg`&&e.tag!==`foreignObject`&&e.tag!==`math`)return 0;if(i.patchFlag===void 0){let r=3,a=Zn(e,t);if(a===0)return n.set(e,0),0;a1)for(let i=0;in&&(E.childIndex--,E.onNodeRemoved()),E.parent.children.splice(n,1)},onNodeRemoved:P,addIdentifiers(e){},removeIdentifiers(e){},hoist(e){A(e)&&(e=_t(e)),E.hoists.push(e);let t=_t(`_hoisted_${E.hoists.length}`,!1,e.loc,2);return t.hoisted=e,t},cache(e,t=!1,n=!1){let r=Ct(E.cached.length,e,t,n);return E.cached.push(r),r}};return E.filters=new Set,E}function er(e,t){let n=$n(e,t);nr(e,n),t.hoistStatic&&Kn(e,n),t.ssr||tr(e,n),e.helpers=new Set([...n.helpers.keys()]),e.components=[...n.components],e.directives=[...n.directives],e.imports=n.imports,e.hoists=n.hoists,e.temps=n.temps,e.cached=n.cached,e.transformed=!0,e.filters=[...n.filters]}function tr(e,t){let{helper:n}=t,{children:r}=e;if(r.length===1){let n=qn(e);if(n&&n.codegenNode){let r=n.codegenNode;r.type===13&&Mt(r,t),e.codegenNode=r}else e.codegenNode=r[0]}else r.length>1&&(e.codegenNode=pt(t,n(Pr),void 0,e.children,64,void 0,void 0,!0,void 0,!1))}function eee(e,t){let n=0,r=()=>{n--};for(;nt===e:t=>e.test(t);return(e,r)=>{if(e.type===1){let{props:i}=e;if(e.tagType===3&&i.some(fn))return;let a=[];for(let o=0;o0,p=!a&&r!==`module`;if(nee(e,n),i(`function ${u?`ssrRender`:`render`}(${(u?[`_ctx`,`_push`,`_parent`,`_attrs`]:[`_ctx`,`_cache`]).join(`, `)}) {`),o(),p&&(i(`with (_ctx) {`),o(),f&&(i(`const { ${d.map(ya).join(`, `)} } = _Vue diff --git a/public/admin/assets/CompetitionListView-CYZHzCBd.js b/public/admin/assets/CompetitionListView-CZtFbhx_.js similarity index 91% rename from public/admin/assets/CompetitionListView-CYZHzCBd.js rename to public/admin/assets/CompetitionListView-CZtFbhx_.js index 87bb14a..fc77109 100644 --- a/public/admin/assets/CompetitionListView-CYZHzCBd.js +++ b/public/admin/assets/CompetitionListView-CZtFbhx_.js @@ -1 +1 @@ -import{C as e,D as t,Et as n,O as r,Q as i,S as a,W as o,Z as s,_t as c,ct as l,in as u,k as d,q as f,st as p,w as m,x as h}from"./vue.runtime.esm-bundler-OsdSFvn7.js";import{f as g}from"./index-DAT5gpOZ.js";import{t as _}from"./_plugin-vue_export-helper-CXTkFu_Z.js";import{a as v}from"./competitions-BSJLYyM3.js";import{t as y}from"./adminCompetition-m6obxaBw.js";import{t as b}from"./competitionAdminLabels-v0rVrY9u.js";import{t as x}from"./datetimeShanghai-D1tceWM9.js";var S={class:`page-header`},C={key:0,class:`pager`},w={class:`total`},T=_(d({__name:`CompetitionListView`,setup(d){let _=c([]),T=y(),E=c(!1),D=c(1),O=c(1),k=c(0),A=c(15);async function j(){E.value=!0;try{let e=await v({page:D.value,per_page:A.value});_.value=e.data,O.value=e.meta.last_page,k.value=e.meta.total,A.value=e.meta.per_page}catch(e){_.value=[],g.error(e instanceof Error?e.message:`加载失败`)}finally{E.value=!1}}function M(e){e<1||e>O.value||(D.value=e,j())}function N(e){return x(e)}return o(()=>{j()}),(o,c)=>{let d=s(`el-button`),g=s(`RouterLink`),v=s(`el-table-column`),y=s(`el-tag`),x=s(`el-table`),j=s(`el-pagination`),P=s(`el-card`),F=i(`loading`);return f(),m(`div`,null,[h(`div`,S,[c[1]||=h(`h2`,{class:`page-title`},`赛事列表`,-1),r(g,{to:{name:`admin-competition-new`}},{default:p(()=>[r(d,{type:`danger`},{default:p(()=>[...c[0]||=[t(`新建赛事`,-1)]]),_:1})]),_:1})]),r(P,{shadow:`never`},{default:p(()=>[l((f(),a(x,{data:_.value,stripe:``,style:{width:`100%`}},{empty:p(()=>[...c[3]||=[h(`span`,{class:`text-muted`},`暂无数据`,-1)]]),default:p(()=>[r(v,{prop:`name`,label:`名称`,"min-width":`140`,"show-overflow-tooltip":``}),r(v,{prop:`slug`,label:`访问地址`,"min-width":`120`,"show-overflow-tooltip":``}),r(v,{label:`状态`,width:`120`},{default:p(({row:e})=>[t(u(n(b)(e.status)),1)]),_:1}),r(v,{label:`对外可见`,width:`100`},{default:p(({row:e})=>[r(y,{type:e.published?`success`:`info`,size:`small`},{default:p(()=>[t(u(e.published?`是`:`否`),1)]),_:2},1032,[`type`])]),_:1}),r(v,{label:`报名开始`,"min-width":`160`},{default:p(({row:e})=>[t(u(N(e.signup_open_at??null)),1)]),_:1}),r(v,{label:`报名截止`,"min-width":`160`},{default:p(({row:e})=>[t(u(N(e.signup_close_at??null)),1)]),_:1}),r(v,{label:`操作`,width:`140`,fixed:`right`},{default:p(({row:e})=>[r(g,{to:{name:`admin-competition-workspace`},onClick:t=>n(T).selectCompetition(e.id)},{default:p(()=>[r(d,{type:`danger`,link:``},{default:p(()=>[...c[2]||=[t(`进入赛事中心`,-1)]]),_:1})]),_:1},8,[`onClick`])]),_:1})]),_:1},8,[`data`])),[[F,E.value]]),O.value>1?(f(),m(`div`,C,[h(`span`,w,`共 `+u(k.value)+` 条`,1),r(j,{background:``,layout:`prev, pager, next`,"current-page":D.value,"page-size":A.value,total:k.value,onCurrentChange:M},null,8,[`current-page`,`page-size`,`total`])])):e(``,!0)]),_:1})])}}}),[[`__scopeId`,`data-v-0694ed3e`]]);export{T as default}; \ No newline at end of file +import{C as e,D as t,Et as n,O as r,Q as i,S as a,W as o,Z as s,_t as c,ct as l,in as u,k as d,q as f,st as p,w as m,x as h}from"./vue.runtime.esm-bundler-OsdSFvn7.js";import{f as g}from"./index-t7bgup9e.js";import{t as _}from"./_plugin-vue_export-helper-CXTkFu_Z.js";import{a as v}from"./competitions-DP_OWCTo.js";import{t as y}from"./adminCompetition-DfRlbUCX.js";import{t as b}from"./competitionAdminLabels-v0rVrY9u.js";import{t as x}from"./datetimeShanghai-D1tceWM9.js";var S={class:`page-header`},C={key:0,class:`pager`},w={class:`total`},T=_(d({__name:`CompetitionListView`,setup(d){let _=c([]),T=y(),E=c(!1),D=c(1),O=c(1),k=c(0),A=c(15);async function j(){E.value=!0;try{let e=await v({page:D.value,per_page:A.value});_.value=e.data,O.value=e.meta.last_page,k.value=e.meta.total,A.value=e.meta.per_page}catch(e){_.value=[],g.error(e instanceof Error?e.message:`加载失败`)}finally{E.value=!1}}function M(e){e<1||e>O.value||(D.value=e,j())}function N(e){return x(e)}return o(()=>{j()}),(o,c)=>{let d=s(`el-button`),g=s(`RouterLink`),v=s(`el-table-column`),y=s(`el-tag`),x=s(`el-table`),j=s(`el-pagination`),P=s(`el-card`),F=i(`loading`);return f(),m(`div`,null,[h(`div`,S,[c[1]||=h(`h2`,{class:`page-title`},`赛事列表`,-1),r(g,{to:{name:`admin-competition-new`}},{default:p(()=>[r(d,{type:`danger`},{default:p(()=>[...c[0]||=[t(`新建赛事`,-1)]]),_:1})]),_:1})]),r(P,{shadow:`never`},{default:p(()=>[l((f(),a(x,{data:_.value,stripe:``,style:{width:`100%`}},{empty:p(()=>[...c[3]||=[h(`span`,{class:`text-muted`},`暂无数据`,-1)]]),default:p(()=>[r(v,{prop:`name`,label:`名称`,"min-width":`140`,"show-overflow-tooltip":``}),r(v,{prop:`slug`,label:`访问地址`,"min-width":`120`,"show-overflow-tooltip":``}),r(v,{label:`状态`,width:`120`},{default:p(({row:e})=>[t(u(n(b)(e.status)),1)]),_:1}),r(v,{label:`对外可见`,width:`100`},{default:p(({row:e})=>[r(y,{type:e.published?`success`:`info`,size:`small`},{default:p(()=>[t(u(e.published?`是`:`否`),1)]),_:2},1032,[`type`])]),_:1}),r(v,{label:`报名开始`,"min-width":`160`},{default:p(({row:e})=>[t(u(N(e.signup_open_at??null)),1)]),_:1}),r(v,{label:`报名截止`,"min-width":`160`},{default:p(({row:e})=>[t(u(N(e.signup_close_at??null)),1)]),_:1}),r(v,{label:`操作`,width:`140`,fixed:`right`},{default:p(({row:e})=>[r(g,{to:{name:`admin-competition-workspace`},onClick:t=>n(T).selectCompetition(e.id)},{default:p(()=>[r(d,{type:`danger`,link:``},{default:p(()=>[...c[2]||=[t(`进入赛事中心`,-1)]]),_:1})]),_:1},8,[`onClick`])]),_:1})]),_:1},8,[`data`])),[[F,E.value]]),O.value>1?(f(),m(`div`,C,[h(`span`,w,`共 `+u(k.value)+` 条`,1),r(j,{background:``,layout:`prev, pager, next`,"current-page":D.value,"page-size":A.value,total:k.value,onCurrentChange:M},null,8,[`current-page`,`page-size`,`total`])])):e(``,!0)]),_:1})])}}}),[[`__scopeId`,`data-v-0694ed3e`]]);export{T as default}; \ No newline at end of file diff --git a/public/admin/assets/CompetitionManageLayout-RtEzZeOT.js b/public/admin/assets/CompetitionManageLayout-B4taBN2o.js similarity index 95% rename from public/admin/assets/CompetitionManageLayout-RtEzZeOT.js rename to public/admin/assets/CompetitionManageLayout-B4taBN2o.js index 39276d0..65d3297 100644 --- a/public/admin/assets/CompetitionManageLayout-RtEzZeOT.js +++ b/public/admin/assets/CompetitionManageLayout-B4taBN2o.js @@ -1 +1 @@ -import{D as e,Et as t,G as n,J as r,O as i,W as a,Z as o,_t as s,at as c,b as l,in as u,k as d,m as f,q as ee,st as p,w as m,x as h}from"./vue.runtime.esm-bundler-OsdSFvn7.js";import{m as g}from"./api-rQwE0AaH.js";import{S as _,f as te,l as ne,n as v,u as y}from"./index-DAT5gpOZ.js";import{t as b}from"./_plugin-vue_export-helper-CXTkFu_Z.js";import{n as re}from"./auth-CW8ToWeP.js";import{t as ie}from"./adminCompetition-m6obxaBw.js";/* empty css *//* empty css */import{i as x,r as S,t as C}from"./competitionBranding-DKFkcrfF.js";import{n as w,r as T,t as E}from"./PortalChangePasswordModal-DBmd4yLD.js";var D={class:`manage-layout-root`},O={class:`navbar navbar-expand-lg layout-header`},k={class:`container-fluid px-4`},A={class:`navbar-brand mb-0 prototype-title`},j={class:`dropdown`},M={class:`header-user dropdown-toggle`,type:`button`,"data-bs-toggle":`dropdown`,"aria-expanded":`false`},N={class:`header-user-name`},P={class:`dropdown-menu dropdown-menu-end header-user-menu`},F={class:`container-fluid px-4 pt-2 pb-1 d-lg-none`},I={class:`mobile-nav-wrap`},L={class:`container-fluid px-4 py-3 layout-main`},ae={class:`row g-3 portal-layout-row`},R={class:`col-12 col-md-3 col-lg-2 layout-sider`},z={class:`card h-100 portal-sider-card`},B={class:`card-body`},V={class:`nav flex-column gap-2`},H={class:`col-12 col-md-9 col-lg-10 portal-main-column`},U={class:`manage-main-surface border rounded-3 bg-white h-100`},W={class:`border-top bg-white text-center py-2 small text-secondary prototype-subtitle`},G=b(d({__name:`CompetitionManageLayout`,setup(d){let b=ne(),G=y(),K=v(),q=ie(),J=l(()=>String(b.params.slug??``).trim()),Y=s(null),X=s(``),Z=s(S()),oe=l(()=>{let e=Z.value.review?.pageTitle?.trim();if(e)return e;let t=X.value.trim();return t?`${t} · 赛事管理`:`赛事管理`}),se=l(()=>{if(x(Z.value.review.footerCopyright))return Z.value.review.footerCopyright;if(x(Z.value.login.footerCopyright))return Z.value.login.footerCopyright;let e=X.value.trim();return e?`版权所有:${e}`:`版权所有:2026江苏省新消费创新创业大赛`});r(`manageCompetitionId`,Y),r(`manageCompetitionSlug`,J),r(`manageCompetitionName`,X);async function ce(){let e=J.value;if(e)try{let t=await fetch(`${g()}/api/v1/public/competitions/by-slug/${encodeURIComponent(e)}`,{headers:{Accept:`application/json`}});if(!t.ok)throw Error(`赛事不存在`);let n=await t.json(),r=n.data!=null&&typeof n.data==`object`&&!Array.isArray(n.data)?n.data:n;Y.value=Number(r.id),X.value=String(r.name??``),Z.value=C(r.branding_json??null),Y.value&&q.selectCompetition(Y.value)}catch{Y.value=null,X.value=``,Z.value=S()}}function le(){K.logout(G),G.replace({name:`manage-login`,params:{slug:J.value}})}let Q=s(null),$=s(!1);function ue(){Q.value?.reset();let e=document.getElementById(`managePasswordModal`);e&&_.getOrCreateInstance(e).show()}async function de(e){$.value=!0;try{await re(e),te.success(`密码已更新`);let t=document.getElementById(`managePasswordModal`);t&&_.getOrCreateInstance(t).hide()}catch(e){Q.value?.setError(e instanceof Error?e.message:`修改密码失败`)}finally{$.value=!1}}return c(Z,()=>w(Z.value.login.themePrimary),{deep:!0,immediate:!0}),c(J,()=>void ce(),{immediate:!0}),a(()=>{document.body.classList.add(`prototype-page`,`participant-portal-theme`,`admin-desktop-page`)}),n(()=>{document.body.classList.remove(`prototype-page`,`participant-portal-theme`,`admin-desktop-page`),T()}),(n,r)=>{let a=o(`router-link`),s=o(`router-view`);return ee(),m(`div`,D,[h(`header`,O,[h(`div`,k,[h(`span`,A,u(oe.value),1),h(`div`,j,[h(`button`,M,[r[0]||=h(`svg`,{width:`22`,height:`22`,viewBox:`0 0 24 24`,fill:`none`,"aria-hidden":`true`},[h(`circle`,{cx:`12`,cy:`12`,r:`9.5`,stroke:`currentColor`,"stroke-width":`2`}),h(`circle`,{cx:`12`,cy:`9`,r:`3.2`,fill:`currentColor`}),h(`path`,{d:`M6.8 18.2c1.1-2.4 3-3.6 5.2-3.6s4.1 1.2 5.2 3.6`,fill:`currentColor`})],-1),h(`span`,N,u(t(K).displayName),1)]),h(`ul`,P,[h(`li`,null,[h(`a`,{class:`dropdown-item`,href:`javascript:void(0)`,onClick:f(ue,[`prevent`])},[...r[1]||=[h(`span`,{class:`menu-icon`},`🔒`,-1),e(`修改密码 `,-1)]])]),r[3]||=h(`li`,null,[h(`hr`,{class:`dropdown-divider`})],-1),h(`li`,null,[h(`a`,{class:`dropdown-item text-danger`,href:`javascript:void(0)`,onClick:f(le,[`prevent`])},[...r[2]||=[h(`span`,{class:`menu-icon`},`↪`,-1),e(`退出登录 `,-1)]])])])])])]),h(`div`,F,[h(`div`,I,[i(a,{class:`mobile-nav-link`,to:{name:`manage-dashboard`,params:{slug:J.value}}},{default:p(()=>[...r[4]||=[e(`综合看板`,-1)]]),_:1},8,[`to`]),i(a,{class:`mobile-nav-link`,to:{name:`manage-projects`,params:{slug:J.value}}},{default:p(()=>[...r[5]||=[e(`项目管理`,-1)]]),_:1},8,[`to`]),i(a,{class:`mobile-nav-link`,to:{name:`manage-reviewers`,params:{slug:J.value}}},{default:p(()=>[...r[6]||=[e(`评审员管理`,-1)]]),_:1},8,[`to`])])]),h(`div`,L,[h(`div`,ae,[h(`aside`,R,[h(`div`,z,[h(`div`,B,[h(`nav`,V,[i(a,{class:`nav-link text-start`,to:{name:`manage-dashboard`,params:{slug:J.value}}},{default:p(()=>[...r[7]||=[e(` 综合看板 `,-1)]]),_:1},8,[`to`]),i(a,{class:`nav-link text-start`,to:{name:`manage-projects`,params:{slug:J.value}}},{default:p(()=>[...r[8]||=[e(` 项目管理 `,-1)]]),_:1},8,[`to`]),i(a,{class:`nav-link text-start`,to:{name:`manage-reviewers`,params:{slug:J.value}}},{default:p(()=>[...r[9]||=[e(` 评审员管理 `,-1)]]),_:1},8,[`to`])])])])]),h(`main`,H,[h(`div`,U,[i(s,{class:`manage-main-view`})])])])]),h(`footer`,W,u(se.value),1),i(E,{ref_key:`passwordModalRef`,ref:Q,"modal-id":`managePasswordModal`,submitting:$.value,onSubmit:de},null,8,[`submitting`])])}}}),[[`__scopeId`,`data-v-1eca3824`]]);export{G as default}; \ No newline at end of file +import{D as e,Et as t,G as n,J as r,O as i,W as a,Z as o,_t as s,at as c,b as l,in as u,k as d,m as f,q as ee,st as p,w as m,x as h}from"./vue.runtime.esm-bundler-OsdSFvn7.js";import{m as g}from"./api-rQwE0AaH.js";import{S as _,f as te,l as ne,n as v,u as y}from"./index-t7bgup9e.js";import{t as b}from"./_plugin-vue_export-helper-CXTkFu_Z.js";import{n as re}from"./auth-Cjgu0CU4.js";import{t as ie}from"./adminCompetition-DfRlbUCX.js";/* empty css *//* empty css */import{i as x,r as S,t as C}from"./competitionBranding-DKFkcrfF.js";import{n as w,r as T,t as E}from"./PortalChangePasswordModal-DBmd4yLD.js";var D={class:`manage-layout-root`},O={class:`navbar navbar-expand-lg layout-header`},k={class:`container-fluid px-4`},A={class:`navbar-brand mb-0 prototype-title`},j={class:`dropdown`},M={class:`header-user dropdown-toggle`,type:`button`,"data-bs-toggle":`dropdown`,"aria-expanded":`false`},N={class:`header-user-name`},P={class:`dropdown-menu dropdown-menu-end header-user-menu`},F={class:`container-fluid px-4 pt-2 pb-1 d-lg-none`},I={class:`mobile-nav-wrap`},L={class:`container-fluid px-4 py-3 layout-main`},ae={class:`row g-3 portal-layout-row`},R={class:`col-12 col-md-3 col-lg-2 layout-sider`},z={class:`card h-100 portal-sider-card`},B={class:`card-body`},V={class:`nav flex-column gap-2`},H={class:`col-12 col-md-9 col-lg-10 portal-main-column`},U={class:`manage-main-surface border rounded-3 bg-white h-100`},W={class:`border-top bg-white text-center py-2 small text-secondary prototype-subtitle`},G=b(d({__name:`CompetitionManageLayout`,setup(d){let b=ne(),G=y(),K=v(),q=ie(),J=l(()=>String(b.params.slug??``).trim()),Y=s(null),X=s(``),Z=s(S()),oe=l(()=>{let e=Z.value.review?.pageTitle?.trim();if(e)return e;let t=X.value.trim();return t?`${t} · 赛事管理`:`赛事管理`}),se=l(()=>{if(x(Z.value.review.footerCopyright))return Z.value.review.footerCopyright;if(x(Z.value.login.footerCopyright))return Z.value.login.footerCopyright;let e=X.value.trim();return e?`版权所有:${e}`:`版权所有:2026江苏省新消费创新创业大赛`});r(`manageCompetitionId`,Y),r(`manageCompetitionSlug`,J),r(`manageCompetitionName`,X);async function ce(){let e=J.value;if(e)try{let t=await fetch(`${g()}/api/v1/public/competitions/by-slug/${encodeURIComponent(e)}`,{headers:{Accept:`application/json`}});if(!t.ok)throw Error(`赛事不存在`);let n=await t.json(),r=n.data!=null&&typeof n.data==`object`&&!Array.isArray(n.data)?n.data:n;Y.value=Number(r.id),X.value=String(r.name??``),Z.value=C(r.branding_json??null),Y.value&&q.selectCompetition(Y.value)}catch{Y.value=null,X.value=``,Z.value=S()}}function le(){K.logout(G),G.replace({name:`manage-login`,params:{slug:J.value}})}let Q=s(null),$=s(!1);function ue(){Q.value?.reset();let e=document.getElementById(`managePasswordModal`);e&&_.getOrCreateInstance(e).show()}async function de(e){$.value=!0;try{await re(e),te.success(`密码已更新`);let t=document.getElementById(`managePasswordModal`);t&&_.getOrCreateInstance(t).hide()}catch(e){Q.value?.setError(e instanceof Error?e.message:`修改密码失败`)}finally{$.value=!1}}return c(Z,()=>w(Z.value.login.themePrimary),{deep:!0,immediate:!0}),c(J,()=>void ce(),{immediate:!0}),a(()=>{document.body.classList.add(`prototype-page`,`participant-portal-theme`,`admin-desktop-page`)}),n(()=>{document.body.classList.remove(`prototype-page`,`participant-portal-theme`,`admin-desktop-page`),T()}),(n,r)=>{let a=o(`router-link`),s=o(`router-view`);return ee(),m(`div`,D,[h(`header`,O,[h(`div`,k,[h(`span`,A,u(oe.value),1),h(`div`,j,[h(`button`,M,[r[0]||=h(`svg`,{width:`22`,height:`22`,viewBox:`0 0 24 24`,fill:`none`,"aria-hidden":`true`},[h(`circle`,{cx:`12`,cy:`12`,r:`9.5`,stroke:`currentColor`,"stroke-width":`2`}),h(`circle`,{cx:`12`,cy:`9`,r:`3.2`,fill:`currentColor`}),h(`path`,{d:`M6.8 18.2c1.1-2.4 3-3.6 5.2-3.6s4.1 1.2 5.2 3.6`,fill:`currentColor`})],-1),h(`span`,N,u(t(K).displayName),1)]),h(`ul`,P,[h(`li`,null,[h(`a`,{class:`dropdown-item`,href:`javascript:void(0)`,onClick:f(ue,[`prevent`])},[...r[1]||=[h(`span`,{class:`menu-icon`},`🔒`,-1),e(`修改密码 `,-1)]])]),r[3]||=h(`li`,null,[h(`hr`,{class:`dropdown-divider`})],-1),h(`li`,null,[h(`a`,{class:`dropdown-item text-danger`,href:`javascript:void(0)`,onClick:f(le,[`prevent`])},[...r[2]||=[h(`span`,{class:`menu-icon`},`↪`,-1),e(`退出登录 `,-1)]])])])])])]),h(`div`,F,[h(`div`,I,[i(a,{class:`mobile-nav-link`,to:{name:`manage-dashboard`,params:{slug:J.value}}},{default:p(()=>[...r[4]||=[e(`综合看板`,-1)]]),_:1},8,[`to`]),i(a,{class:`mobile-nav-link`,to:{name:`manage-projects`,params:{slug:J.value}}},{default:p(()=>[...r[5]||=[e(`项目管理`,-1)]]),_:1},8,[`to`]),i(a,{class:`mobile-nav-link`,to:{name:`manage-reviewers`,params:{slug:J.value}}},{default:p(()=>[...r[6]||=[e(`评审员管理`,-1)]]),_:1},8,[`to`])])]),h(`div`,L,[h(`div`,ae,[h(`aside`,R,[h(`div`,z,[h(`div`,B,[h(`nav`,V,[i(a,{class:`nav-link text-start`,to:{name:`manage-dashboard`,params:{slug:J.value}}},{default:p(()=>[...r[7]||=[e(` 综合看板 `,-1)]]),_:1},8,[`to`]),i(a,{class:`nav-link text-start`,to:{name:`manage-projects`,params:{slug:J.value}}},{default:p(()=>[...r[8]||=[e(` 项目管理 `,-1)]]),_:1},8,[`to`]),i(a,{class:`nav-link text-start`,to:{name:`manage-reviewers`,params:{slug:J.value}}},{default:p(()=>[...r[9]||=[e(` 评审员管理 `,-1)]]),_:1},8,[`to`])])])])]),h(`main`,H,[h(`div`,U,[i(s,{class:`manage-main-view`})])])])]),h(`footer`,W,u(se.value),1),i(E,{ref_key:`passwordModalRef`,ref:Q,"modal-id":`managePasswordModal`,submitting:$.value,onSubmit:de},null,8,[`submitting`])])}}}),[[`__scopeId`,`data-v-1eca3824`]]);export{G as default}; \ No newline at end of file diff --git a/public/admin/assets/LoginView-B8c0Fe-9.js b/public/admin/assets/LoginView-DcN2H63N.js similarity index 99% rename from public/admin/assets/LoginView-B8c0Fe-9.js rename to public/admin/assets/LoginView-DcN2H63N.js index 75c1dfb..aa5989e 100644 --- a/public/admin/assets/LoginView-B8c0Fe-9.js +++ b/public/admin/assets/LoginView-DcN2H63N.js @@ -1,4 +1,4 @@ -import{$t as e,C as t,E as n,Et as r,G as i,W as a,Y as o,_t as s,b as c,ct as ee,d as te,g as l,in as u,k as ne,m as re,q as d,w as f,x as p}from"./vue.runtime.esm-bundler-OsdSFvn7.js";import{d as ie,h as ae,m as oe,o as se,s as ce}from"./api-rQwE0AaH.js";import{l as le,t as m,u as ue}from"./index-DAT5gpOZ.js";/* empty css */import{i as h,r as g,t as de}from"./competitionBranding-DKFkcrfF.js";import{n as _,t as fe}from"./participantContact-DSzdsPPk.js";/* empty css */var pe={class:`login-page-wls__wrap`},me={class:`login-page-wls__inner`},he={class:`login-page-wls__brand`,"aria-label":`系统说明`},ge={class:`login-page-wls__logo`,"aria-hidden":`true`},_e=[`src`],ve={key:1,viewBox:`0 0 100 100`,width:`72`,height:`72`,xmlns:`http://www.w3.org/2000/svg`,"aria-hidden":`true`},ye={key:0,class:`login-page-wls__mark`},be=[`innerHTML`],xe={key:1,class:`login-page-wls__title`},Se=[`innerHTML`],Ce={class:`login-page-wls__panel`},we={class:`login-page-wls__card`},Te={key:0,class:`login-page-wls__card-title`},Ee={class:`login-page-wls__code-row`},De=[`value`],Oe=[`disabled`],ke=[`disabled`],v={class:`login-page-wls__contact`,"aria-label":`咨询电话`},y={class:`login-page-wls__contact-entry`},b={key:0,class:`login-page-wls__contact-sep`},x=[`href`],S=[`href`],C={key:0,class:`login-page-wls__footer`},w={class:`login-page-wls__copyright`},T=ne({__name:`LoginView`,setup(ne){let T=le(),E=ue(),D=s(``),O=s(``),k=s(!1),A=s(!1),j=s(!1),M=s(`获取验证码`),N=s(!1),P=s(``),F=s(`neutral`),I=c(()=>String(T.params.slug??``).trim()),L=s(``),R=s(g()),Ae=c(()=>F.value===`error`?`login-page-wls__hint login-page-wls__hint--error`:F.value===`success`?`login-page-wls__hint login-page-wls__hint--success`:`login-page-wls__hint`),je=c(()=>{let e=R.value.login.markLine;return h(e)?z(e):``}),Me=c(()=>{let e=R.value.login.headline;return h(e)?z(e):``});function z(e){return e.replace(/&/g,`&`).replace(//g,`>`).replace(/"/g,`"`)}let B=c(()=>L.value?L.value:h(R.value.login.slogan)?R.value.login.slogan:``),Ne=c(()=>!!L.value),Pe=c(()=>h(R.value.login.cardWelcome)?R.value.login.cardWelcome:``),V=c(()=>Pe.value.replace(/登陆/g,`登录`)),H=c(()=>h(R.value.login.footerCopyright)?R.value.login.footerCopyright:``),U=c(()=>h(R.value.login.logoUrl)?R.value.login.logoUrl:``),W=0;function G(){W&&=(window.clearInterval(W),0)}function Fe(){G();let e=ae();j.value=!0,M.value=`重新获取(${e}s)`,W=window.setInterval(()=>{if(--e,e<=0){G(),M.value=`获取验证码`,j.value=!1;return}M.value=`重新获取(${e}s)`},1e3)}function K(){return oe()}function q(e,t=`neutral`){P.value=e,F.value=t}function J(){P.value=``,F.value=`neutral`}function Y(e){return e.replace(/\D/g,``).slice(0,6)}function Ie(e){let t=e.target,n=Y(t?.value??``);O.value=n,t&&t.value!==n&&(t.value=n),A.value=!1}function X(e){if(typeof e!=`object`||!e)return`请求失败`;let t=e,n=t.message;if(typeof n==`string`&&n.trim())return n.trim();let r=t.errors;if(typeof r==`object`&&r&&!Array.isArray(r)){let e=Object.values(r).flatMap(e=>Array.isArray(e)?e.map(e=>String(e)):[]);if(e.length)return e.join(` +import{$t as e,C as t,E as n,Et as r,G as i,W as a,Y as o,_t as s,b as c,ct as ee,d as te,g as l,in as u,k as ne,m as re,q as d,w as f,x as p}from"./vue.runtime.esm-bundler-OsdSFvn7.js";import{d as ie,h as ae,m as oe,o as se,s as ce}from"./api-rQwE0AaH.js";import{l as le,t as m,u as ue}from"./index-t7bgup9e.js";/* empty css */import{i as h,r as g,t as de}from"./competitionBranding-DKFkcrfF.js";import{n as _,t as fe}from"./participantContact-DSzdsPPk.js";/* empty css */var pe={class:`login-page-wls__wrap`},me={class:`login-page-wls__inner`},he={class:`login-page-wls__brand`,"aria-label":`系统说明`},ge={class:`login-page-wls__logo`,"aria-hidden":`true`},_e=[`src`],ve={key:1,viewBox:`0 0 100 100`,width:`72`,height:`72`,xmlns:`http://www.w3.org/2000/svg`,"aria-hidden":`true`},ye={key:0,class:`login-page-wls__mark`},be=[`innerHTML`],xe={key:1,class:`login-page-wls__title`},Se=[`innerHTML`],Ce={class:`login-page-wls__panel`},we={class:`login-page-wls__card`},Te={key:0,class:`login-page-wls__card-title`},Ee={class:`login-page-wls__code-row`},De=[`value`],Oe=[`disabled`],ke=[`disabled`],v={class:`login-page-wls__contact`,"aria-label":`咨询电话`},y={class:`login-page-wls__contact-entry`},b={key:0,class:`login-page-wls__contact-sep`},x=[`href`],S=[`href`],C={key:0,class:`login-page-wls__footer`},w={class:`login-page-wls__copyright`},T=ne({__name:`LoginView`,setup(ne){let T=le(),E=ue(),D=s(``),O=s(``),k=s(!1),A=s(!1),j=s(!1),M=s(`获取验证码`),N=s(!1),P=s(``),F=s(`neutral`),I=c(()=>String(T.params.slug??``).trim()),L=s(``),R=s(g()),Ae=c(()=>F.value===`error`?`login-page-wls__hint login-page-wls__hint--error`:F.value===`success`?`login-page-wls__hint login-page-wls__hint--success`:`login-page-wls__hint`),je=c(()=>{let e=R.value.login.markLine;return h(e)?z(e):``}),Me=c(()=>{let e=R.value.login.headline;return h(e)?z(e):``});function z(e){return e.replace(/&/g,`&`).replace(//g,`>`).replace(/"/g,`"`)}let B=c(()=>L.value?L.value:h(R.value.login.slogan)?R.value.login.slogan:``),Ne=c(()=>!!L.value),Pe=c(()=>h(R.value.login.cardWelcome)?R.value.login.cardWelcome:``),V=c(()=>Pe.value.replace(/登陆/g,`登录`)),H=c(()=>h(R.value.login.footerCopyright)?R.value.login.footerCopyright:``),U=c(()=>h(R.value.login.logoUrl)?R.value.login.logoUrl:``),W=0;function G(){W&&=(window.clearInterval(W),0)}function Fe(){G();let e=ae();j.value=!0,M.value=`重新获取(${e}s)`,W=window.setInterval(()=>{if(--e,e<=0){G(),M.value=`获取验证码`,j.value=!1;return}M.value=`重新获取(${e}s)`},1e3)}function K(){return oe()}function q(e,t=`neutral`){P.value=e,F.value=t}function J(){P.value=``,F.value=`neutral`}function Y(e){return e.replace(/\D/g,``).slice(0,6)}function Ie(e){let t=e.target,n=Y(t?.value??``);O.value=n,t&&t.value!==n&&(t.value=n),A.value=!1}function X(e){if(typeof e!=`object`||!e)return`请求失败`;let t=e,n=t.message;if(typeof n==`string`&&n.trim())return n.trim();let r=t.errors;if(typeof r==`object`&&r&&!Array.isArray(r)){let e=Object.values(r).flatMap(e=>Array.isArray(e)?e.map(e=>String(e)):[]);if(e.length)return e.join(` `)}return`请求失败`}let Z=null,Q=null,$=!1;async function Le(){L.value=``,R.value=g();let e=I.value,t=typeof document<`u`?document.title:``;if(!e){L.value=`缺少赛事访问地址,请从正确入口进入`;return}try{let n=await fetch(`${K()}/api/v1/public/competitions/by-slug/${encodeURIComponent(e)}`,{headers:{Accept:`application/json`}});if(!n.ok){L.value=n.status===404?`赛事不存在或未发布,请核对访问地址`:`无法加载赛事信息`;return}let r=await n.json();R.value=de(r.branding_json??r.branding??null);let i=R.value.documentTitle;typeof document<`u`&&(h(i)?document.title=i:document.title=t);let a=R.value.login.themePrimary;if(h(a)&&typeof document<`u`){Z===null&&(Z=document.body.style.getPropertyValue(`--primary`)||``),document.body.style.setProperty(`--primary`,a);let e=`${a}14`;document.body.style.setProperty(`--primary-soft`,e)}let o=R.value.login.faviconUrl;if(h(o)&&typeof document<`u`){let e=document.querySelector(`link[rel~="icon"]`);e||(e=document.createElement(`link`),e.rel=`icon`,document.head.appendChild(e)),Q===null&&(Q=e.getAttribute(`href`)||``),e.href=o}}catch{L.value=`网络错误,无法校验赛事链接`}}async function Re(){if(j.value)return;let e=D.value.trim();if(!/^1[3-9]\d{9}$/.test(e)){k.value=!0,A.value=!1,q(`请先填写正确手机号`,`error`);return}k.value=!1,A.value=!1,J(),j.value=!0,M.value=`发送中...`;let t=`${K()}${ce}`;try{let n=await fetch(t,{method:`POST`,headers:{"Content-Type":`application/json`,Accept:`application/json`,"X-Requested-With":`XMLHttpRequest`},body:JSON.stringify({mobile:e})}),r=await n.json().catch(()=>({}));if(!n.ok){q(X(r),`error`),M.value=`获取验证码`,j.value=!1,G();return}J(),Fe()}catch{q(`网络错误,请确认后端已启动(Vite 将 /api 代理至 php artisan serve 端口,见 vite.config)`,`error`),M.value=`获取验证码`,j.value=!1,G()}}async function ze(){let e=/^1[3-9]\d{9}$/.test(D.value.trim()),t=Y(O.value);O.value=t;let n=t.length===6;if(k.value=!e,A.value=e&&!n,!e){q(`请先填写正确手机号`,`error`);return}if(!n){q(`请输入 6 位验证码`,`error`);return}if(J(),N.value=!0,q(`登录中...`,`neutral`),!I.value){q(`缺少赛事访问地址,请从正确入口进入`,`error`),N.value=!1;return}let r=`${K()}${se}`;try{let e=m(),n=await fetch(r,{method:`POST`,headers:{"Content-Type":`application/json`,Accept:`application/json`,"X-Requested-With":`XMLHttpRequest`},body:JSON.stringify({mobile:D.value.trim(),code:t,competition_slug:I.value,...e?{public_source_code:e}:{}})}),i=await n.json().catch(()=>({}));if(!n.ok){q(X(i),`error`);return}J(),localStorage.setItem(ie,i.token),localStorage.setItem(`cxxfds_user`,JSON.stringify(i.user));let a=typeof T.query.redirect==`string`?T.query.redirect:``;if(a&&a.startsWith(`/`)){await E.replace(a);return}let o=I.value;o?await E.replace({name:`participant-apply`,params:{slug:o}}):await E.replace(`/c`)}catch{q(`网络错误,请确认后端已启动`,`error`)}finally{N.value=!1}}return a(()=>{typeof document<`u`&&(document.documentElement.classList.add(`cxxfds-login-page`),$=!0),document.body.classList.add(`login-page-wls`),Le()}),i(()=>{if(typeof document<`u`&&$&&(document.documentElement.classList.remove(`cxxfds-login-page`),$=!1),document.body.classList.remove(`login-page-wls`),G(),typeof document<`u`&&(Z!==null&&(Z===``?(document.body.style.removeProperty(`--primary`),document.body.style.removeProperty(`--primary-soft`)):document.body.style.setProperty(`--primary`,Z),Z=null),Q!==null)){let e=document.querySelector(`link[rel~="icon"]`);e&&(Q===``?e.removeAttribute(`href`):e.href=Q),Q=null}}),(i,a)=>(d(),f(`div`,pe,[p(`div`,me,[p(`aside`,he,[p(`div`,ge,[U.value?(d(),f(`img`,{key:0,src:U.value,alt:``,class:`login-page-wls__logo-img`,width:`72`,height:`72`},null,8,_e)):(d(),f(`svg`,ve,[...a[2]||=[n(`String(U.params.slug??``).trim()),G=o(w()),K=o(``),q=c(()=>S(G.value,K.value)),J=c(()=>{if(C(G.value.login.footerCopyright))return G.value.login.footerCopyright;let e=K.value.trim();return e?`版权所有:${e}`:`版权所有`});async function Y(){let e=W.value;if(!e){G.value=w(),K.value=``;return}try{let t=await fetch(`${_()}/api/v1/public/competitions/by-slug/${encodeURIComponent(e)}`,{headers:{Accept:`application/json`}});if(!t.ok){G.value=w(),K.value=``;return}let n=await t.json(),r=n.data!=null&&typeof n.data==`object`&&!Array.isArray(n.data)?n.data:n;K.value=String(r.name??``),G.value=ee(r.branding_json??null)}catch{G.value=w(),K.value=``}}s(W,()=>{Y()},{immediate:!0});function X(e){let t=e.trim().replace(`#`,``);return/^[0-9a-f]{6}$/i.test(t)?`${parseInt(t.slice(0,2),16)}, ${parseInt(t.slice(2,4),16)}, ${parseInt(t.slice(4,6),16)}`:null}function Z(){if(typeof document>`u`)return;let e=G.value.login.themePrimary?.trim()??``,t=C(e)?/^(?:#|rgb|hsl)/i.test(e)?e:`#${e.replace(/^#/,``)}`:H;if(document.body.style.setProperty(`--primary`,t),document.body.style.setProperty(`--bs-primary`,t),t.startsWith(`#`)){document.body.style.setProperty(`--primary-soft`,`${t}14`);let e=X(t);e&&document.body.style.setProperty(`--bs-primary-rgb`,e)}else document.body.style.removeProperty(`--primary-soft`),document.body.style.removeProperty(`--bs-primary-rgb`)}s(G,()=>Z(),{deep:!0,immediate:!0});let Q=o(``),$=o(sessionStorage.getItem(v)===`1`),te=c(()=>{if($.value){let e=Q.value.trim();return e?`管理员代登 · ${e}`:`管理员代登中`}return Q.value||`用户`});async function ne(){let e=localStorage.getItem(g),t=_();if(e)try{let n=await fetch(`${t}/api/me`,{headers:{Authorization:`Bearer ${e}`,Accept:`application/json`}});if(!n.ok)return;let r=await n.json();Q.value=r.name||r.mobile||``}catch{}}function re(){localStorage.removeItem(g),localStorage.removeItem(`cxxfds_user`),sessionStorage.removeItem(v),$.value=!1;let e=W.value;e?x.push({name:`participant-login`,params:{slug:e}}):x.push(`/c`)}return i(()=>{document.body.classList.add(`prototype-page`,`user-mobile-no-menu`),$.value=sessionStorage.getItem(v)===`1`,ne()}),n(()=>{document.body.classList.remove(`prototype-page`,`user-mobile-no-menu`),document.body.style.removeProperty(`--primary`),document.body.style.removeProperty(`--primary-soft`),document.body.style.removeProperty(`--bs-primary`),document.body.style.removeProperty(`--bs-primary-rgb`)}),(n,i)=>{let o=a(`router-link`),s=a(`router-view`);return f(),m(`div`,T,[$.value?(f(),m(`div`,E,` 当前为管理员代登选手端,操作将以该选手身份生效。请用完后点击右上角「退出登录」。 `)):e(``,!0),h(`header`,D,[h(`div`,O,[h(`span`,k,l(q.value),1),h(`div`,A,[h(`button`,j,[i[0]||=h(`svg`,{width:`22`,height:`22`,viewBox:`0 0 24 24`,fill:`none`,"aria-hidden":`true`},[h(`circle`,{cx:`12`,cy:`12`,r:`9.5`,stroke:`currentColor`,"stroke-width":`2`}),h(`circle`,{cx:`12`,cy:`9`,r:`3.2`,fill:`currentColor`}),h(`path`,{d:`M6.8 18.2c1.1-2.4 3-3.6 5.2-3.6s4.1 1.2 5.2 3.6`,fill:`currentColor`})],-1),h(`span`,M,l(te.value),1)]),h(`ul`,N,[h(`li`,null,[h(`a`,{class:`dropdown-item text-danger`,href:`javascript:void(0)`,onClick:d(re,[`prevent`])},[...i[1]||=[h(`span`,{class:`menu-icon`},`↪`,-1),t(`退出登录 `,-1)]])])])])])]),h(`div`,P,[h(`div`,F,[h(`aside`,I,[h(`div`,L,[h(`div`,R,[h(`nav`,z,[r(o,{class:`nav-link text-start`,"active-class":`active`,to:{name:`participant-apply`,params:{slug:W.value}}},{default:p(()=>[...i[2]||=[t(` 赛事报名 `,-1)]]),_:1},8,[`to`])])])])]),h(`main`,B,[r(s)])])]),h(`footer`,V,l(J.value),1)])}}}),[[`__scopeId`,`data-v-ff65c5a6`]]);export{U as default}; \ No newline at end of file +import{C as e,D as t,G as n,O as r,W as i,Z as a,_t as o,at as s,b as c,in as l,k as u,m as d,q as f,st as p,w as m,x as h}from"./vue.runtime.esm-bundler-OsdSFvn7.js";import{d as g,m as _,n as v}from"./api-rQwE0AaH.js";import{l as y,u as b}from"./index-t7bgup9e.js";import{t as x}from"./_plugin-vue_export-helper-CXTkFu_Z.js";/* empty css *//* empty css */import{a as S,i as C,r as w,t as ee}from"./competitionBranding-DKFkcrfF.js";var T={class:`participant-layout`},E={key:0,class:`admin-impersonation-banner text-center small py-2 px-3`,role:`status`},D={class:`navbar navbar-expand-lg layout-header`},O={class:`container-fluid px-3 px-lg-4`},k={class:`navbar-brand mb-0 prototype-title`},A={class:`dropdown`},j={class:`header-user dropdown-toggle`,type:`button`,"data-bs-toggle":`dropdown`,"aria-expanded":`false`},M={class:`header-user-name`},N={class:`dropdown-menu dropdown-menu-end header-user-menu`},P={class:`container-fluid px-3 px-lg-4 py-3 layout-main`},F={class:`row layout-main-row g-3`},I={class:`col-12 col-md-2 col-lg-2 layout-sider`},L={class:`card h-100`},R={class:`card-body`},z={class:`nav flex-column gap-2`},B={class:`col-12 col-md-10 col-lg-10 participant-main-col`},V={id:`layoutFooter`,class:`border-top bg-white text-center py-2 small text-secondary prototype-subtitle`},H=`#052d62`,U=x(u({__name:`MainLayout`,setup(u){let x=b(),U=y(),W=c(()=>String(U.params.slug??``).trim()),G=o(w()),K=o(``),q=c(()=>S(G.value,K.value)),J=c(()=>{if(C(G.value.login.footerCopyright))return G.value.login.footerCopyright;let e=K.value.trim();return e?`版权所有:${e}`:`版权所有`});async function Y(){let e=W.value;if(!e){G.value=w(),K.value=``;return}try{let t=await fetch(`${_()}/api/v1/public/competitions/by-slug/${encodeURIComponent(e)}`,{headers:{Accept:`application/json`}});if(!t.ok){G.value=w(),K.value=``;return}let n=await t.json(),r=n.data!=null&&typeof n.data==`object`&&!Array.isArray(n.data)?n.data:n;K.value=String(r.name??``),G.value=ee(r.branding_json??null)}catch{G.value=w(),K.value=``}}s(W,()=>{Y()},{immediate:!0});function X(e){let t=e.trim().replace(`#`,``);return/^[0-9a-f]{6}$/i.test(t)?`${parseInt(t.slice(0,2),16)}, ${parseInt(t.slice(2,4),16)}, ${parseInt(t.slice(4,6),16)}`:null}function Z(){if(typeof document>`u`)return;let e=G.value.login.themePrimary?.trim()??``,t=C(e)?/^(?:#|rgb|hsl)/i.test(e)?e:`#${e.replace(/^#/,``)}`:H;if(document.body.style.setProperty(`--primary`,t),document.body.style.setProperty(`--bs-primary`,t),t.startsWith(`#`)){document.body.style.setProperty(`--primary-soft`,`${t}14`);let e=X(t);e&&document.body.style.setProperty(`--bs-primary-rgb`,e)}else document.body.style.removeProperty(`--primary-soft`),document.body.style.removeProperty(`--bs-primary-rgb`)}s(G,()=>Z(),{deep:!0,immediate:!0});let Q=o(``),$=o(sessionStorage.getItem(v)===`1`),te=c(()=>{if($.value){let e=Q.value.trim();return e?`管理员代登 · ${e}`:`管理员代登中`}return Q.value||`用户`});async function ne(){let e=localStorage.getItem(g),t=_();if(e)try{let n=await fetch(`${t}/api/me`,{headers:{Authorization:`Bearer ${e}`,Accept:`application/json`}});if(!n.ok)return;let r=await n.json();Q.value=r.name||r.mobile||``}catch{}}function re(){localStorage.removeItem(g),localStorage.removeItem(`cxxfds_user`),sessionStorage.removeItem(v),$.value=!1;let e=W.value;e?x.push({name:`participant-login`,params:{slug:e}}):x.push(`/c`)}return i(()=>{document.body.classList.add(`prototype-page`,`user-mobile-no-menu`),$.value=sessionStorage.getItem(v)===`1`,ne()}),n(()=>{document.body.classList.remove(`prototype-page`,`user-mobile-no-menu`),document.body.style.removeProperty(`--primary`),document.body.style.removeProperty(`--primary-soft`),document.body.style.removeProperty(`--bs-primary`),document.body.style.removeProperty(`--bs-primary-rgb`)}),(n,i)=>{let o=a(`router-link`),s=a(`router-view`);return f(),m(`div`,T,[$.value?(f(),m(`div`,E,` 当前为管理员代登选手端,操作将以该选手身份生效。请用完后点击右上角「退出登录」。 `)):e(``,!0),h(`header`,D,[h(`div`,O,[h(`span`,k,l(q.value),1),h(`div`,A,[h(`button`,j,[i[0]||=h(`svg`,{width:`22`,height:`22`,viewBox:`0 0 24 24`,fill:`none`,"aria-hidden":`true`},[h(`circle`,{cx:`12`,cy:`12`,r:`9.5`,stroke:`currentColor`,"stroke-width":`2`}),h(`circle`,{cx:`12`,cy:`9`,r:`3.2`,fill:`currentColor`}),h(`path`,{d:`M6.8 18.2c1.1-2.4 3-3.6 5.2-3.6s4.1 1.2 5.2 3.6`,fill:`currentColor`})],-1),h(`span`,M,l(te.value),1)]),h(`ul`,N,[h(`li`,null,[h(`a`,{class:`dropdown-item text-danger`,href:`javascript:void(0)`,onClick:d(re,[`prevent`])},[...i[1]||=[h(`span`,{class:`menu-icon`},`↪`,-1),t(`退出登录 `,-1)]])])])])])]),h(`div`,P,[h(`div`,F,[h(`aside`,I,[h(`div`,L,[h(`div`,R,[h(`nav`,z,[r(o,{class:`nav-link text-start`,"active-class":`active`,to:{name:`participant-apply`,params:{slug:W.value}}},{default:p(()=>[...i[2]||=[t(` 赛事报名 `,-1)]]),_:1},8,[`to`])])])])]),h(`main`,B,[r(s)])])]),h(`footer`,V,l(J.value),1)])}}}),[[`__scopeId`,`data-v-ff65c5a6`]]);export{U as default}; \ No newline at end of file diff --git a/public/admin/assets/ManageDashboardView-BvyKsQMW.js b/public/admin/assets/ManageDashboardView-cjRK_yIm.js similarity index 98% rename from public/admin/assets/ManageDashboardView-BvyKsQMW.js rename to public/admin/assets/ManageDashboardView-cjRK_yIm.js index 5552e7b..6e3dba6 100644 --- a/public/admin/assets/ManageDashboardView-BvyKsQMW.js +++ b/public/admin/assets/ManageDashboardView-cjRK_yIm.js @@ -1 +1 @@ -import{C as e,Et as t,P as ee,W as n,Y as r,_t as i,at as te,b as ne,g as a,in as o,k as re,q as s,tn as c,w as l,x as u}from"./vue.runtime.esm-bundler-OsdSFvn7.js";import{i as d}from"./index-DAT5gpOZ.js";async function ie(e){let{data:t}=await d.get(`/competitions/${e}/manage/report`);return t}var f={class:`container-fluid p-3 p-md-4 manage-portal-dashboard`},p={key:0,class:`text-secondary py-4 text-center`},m={key:1,class:`alert alert-warning`},h={class:`row g-3 mb-1`},g={class:`report-kpi-card`},_={class:`report-kpi-label`},v={class:`report-kpi-value`},y={class:`report-kpi-sub`},b={class:`row g-3 mt-1`},x={class:`col-lg-6`},S={class:`card report-section-card mb-3`},C={class:`card-body`},w={class:`report-bar-head`},T={class:`report-bar-label`},E={class:`report-bar-meta`},D={class:`progress report-progress`},O={class:`card report-section-card mb-3`},k={class:`card-body`},A={class:`report-bar-head`},j={class:`report-bar-label`},M={class:`report-bar-meta`},N={class:`progress report-progress`},P={class:`card report-section-card`},F={class:`card-body`},I={class:`table-responsive`},L={class:`table table-sm align-middle mb-0 report-table`},R={class:`col-lg-6`},z={class:`card report-section-card mb-3`},ae={class:`card-body`},B={class:`report-bar-head`},V={class:`report-bar-label`},H={class:`report-bar-meta`},U={class:`progress report-progress`},W={class:`report-bar-head`},G={class:`report-bar-label`},K={class:`report-bar-meta`},q={class:`progress report-progress`},J={class:`card report-section-card`},oe={class:`card-body`},se={class:`table-responsive`},ce={class:`table table-sm align-middle mb-0 report-table`},le={class:`row g-3 mt-1`},ue={class:`col-lg-5`},de={class:`card report-section-card h-100`},fe={class:`card-body`},pe={class:`table-responsive`},me={class:`table table-sm align-middle mb-0 report-table`},he={class:`col-lg-7`},ge={class:`card report-section-card h-100`},_e={class:`card-body`},Y={class:`row g-2`},ve={class:`top5-track-card h-100`},ye={class:`top5-track-title`},be={class:`top5-track-list`},xe={class:`top5-item-rank`},Se={class:`top5-item-name`},Ce={class:`top5-item-score`},X=re({__name:`ManageDashboardView`,setup(re){let d=ee(`manageCompetitionId`,i(null)),X=i(!1),Z=i(null);async function Q(){let e=d.value;if(e){X.value=!0;try{Z.value=await ie(e)}catch{Z.value=null}finally{X.value=!1}}}let we=ne(()=>Z.value?.kpis??[]);function $(e){return e??[]}return te(d,()=>void Q(),{immediate:!0}),n(()=>void Q()),(ee,n)=>(s(),l(`div`,f,[n[11]||=u(`h5`,{class:`section-title mb-3`},`综合看板`,-1),X.value?(s(),l(`div`,p,`加载中…`)):e(``,!0),!t(d)&&!X.value?(s(),l(`div`,m,`赛事信息加载失败,请检查链接 slug。`)):Z.value?(s(),l(a,{key:2},[u(`div`,h,[(s(!0),l(a,null,r(we.value,(e,t)=>(s(),l(`div`,{key:t,class:`col-12 col-sm-6 col-xl`},[u(`div`,g,[u(`div`,_,o(e.label),1),u(`div`,v,o(e.value),1),u(`div`,y,o(e.sub),1)])]))),128))]),u(`div`,b,[u(`div`,x,[u(`div`,S,[u(`div`,C,[n[0]||=u(`h6`,{class:`report-section-title`},`赛道报名结构`,-1),(s(!0),l(a,null,r($(Z.value.track_counts),e=>(s(),l(`div`,{key:e.label,class:`report-bar-row`},[u(`div`,w,[u(`span`,T,o(e.label),1),u(`span`,E,o(e.count)+`(`+o(e.percent)+`%)`,1)]),u(`div`,D,[u(`div`,{class:`progress-bar`,style:c({width:`${e.percent}%`})},null,4)])]))),128))])]),u(`div`,O,[u(`div`,k,[n[1]||=u(`h6`,{class:`report-section-title`},`学历结构`,-1),(s(!0),l(a,null,r($(Z.value.degree_counts),e=>(s(),l(`div`,{key:e.label,class:`report-bar-row`},[u(`div`,A,[u(`span`,j,o(e.label),1),u(`span`,M,o(e.count)+`(`+o(e.percent)+`%)`,1)]),u(`div`,N,[u(`div`,{class:`progress-bar`,style:c({width:`${e.percent}%`})},null,4)])]))),128))])]),u(`div`,P,[u(`div`,F,[n[3]||=u(`h6`,{class:`report-section-title`},`院校活跃度 TOP5`,-1),u(`div`,I,[u(`table`,L,[n[2]||=u(`thead`,null,[u(`tr`,null,[u(`th`,null,`排名`),u(`th`,null,`院校`),u(`th`,null,`报名数`),u(`th`,null,`通过率`)])],-1),u(`tbody`,null,[(s(!0),l(a,null,r(Z.value.school_top,e=>(s(),l(`tr`,{key:e.rank},[u(`td`,null,o(e.rank),1),u(`td`,null,o(e.name),1),u(`td`,null,o(e.total),1),u(`td`,null,o(e.pass_rate),1)]))),128))])])])])])]),u(`div`,R,[u(`div`,z,[u(`div`,ae,[n[4]||=u(`h6`,{class:`report-section-title`},`地区分布(国家)`,-1),(s(!0),l(a,null,r($(Z.value.country_counts),e=>(s(),l(`div`,{key:e.label,class:`report-bar-row`},[u(`div`,B,[u(`span`,V,o(e.label),1),u(`span`,H,o(e.count)+`(`+o(e.percent)+`%)`,1)]),u(`div`,U,[u(`div`,{class:`progress-bar`,style:c({width:`${e.percent}%`})},null,4)])]))),128)),n[5]||=u(`hr`,{class:`my-4 report-split-line`},null,-1),n[6]||=u(`h6`,{class:`report-section-title`},`地区分布(省份TOP6)`,-1),(s(!0),l(a,null,r($(Z.value.province_counts),e=>(s(),l(`div`,{key:e.label,class:`report-bar-row`},[u(`div`,W,[u(`span`,G,o(e.label),1),u(`span`,K,o(e.count)+`(`+o(e.percent)+`%)`,1)]),u(`div`,q,[u(`div`,{class:`progress-bar`,style:c({width:`${e.percent}%`})},null,4)])]))),128))])]),u(`div`,J,[u(`div`,oe,[n[8]||=u(`h6`,{class:`report-section-title`},`城市活跃度 TOP5`,-1),u(`div`,se,[u(`table`,ce,[n[7]||=u(`thead`,null,[u(`tr`,null,[u(`th`,null,`排名`),u(`th`,null,`城市`),u(`th`,null,`报名数`),u(`th`,null,`通过率`)])],-1),u(`tbody`,null,[(s(!0),l(a,null,r(Z.value.city_top,e=>(s(),l(`tr`,{key:e.rank},[u(`td`,null,o(e.rank),1),u(`td`,null,o(e.name),1),u(`td`,null,o(e.total),1),u(`td`,null,o(e.pass_rate),1)]))),128))])])])])])])]),u(`div`,le,[u(`div`,ue,[u(`div`,de,[u(`div`,fe,[n[10]||=u(`h6`,{class:`report-section-title mb-2`},`赛道评审均分排行`,-1),u(`div`,pe,[u(`table`,me,[n[9]||=u(`thead`,null,[u(`tr`,null,[u(`th`,null,`排名`),u(`th`,null,`赛道`),u(`th`,null,`均分`),u(`th`,null,`项目数`)])],-1),u(`tbody`,null,[(s(!0),l(a,null,r(Z.value.track_score_rank,e=>(s(),l(`tr`,{key:e.rank},[u(`td`,null,o(e.rank),1),u(`td`,null,o(e.track),1),u(`td`,null,o(e.avg.toFixed(2)),1),u(`td`,null,o(e.count),1)]))),128))])])])])])]),u(`div`,he,[u(`div`,ge,[u(`div`,_e,[u(`div`,Y,[(s(!0),l(a,null,r(Z.value.track_top_projects,e=>(s(),l(`div`,{key:e.track,class:`col-12 col-md-6`},[u(`div`,ve,[u(`div`,ye,o(e.track)+` TOP3`,1),u(`ul`,be,[(s(!0),l(a,null,r(e.items,e=>(s(),l(`li`,{key:e.rank,class:`top5-item-row`},[u(`span`,xe,o(e.rank),1),u(`span`,Se,o(e.name),1),u(`span`,Ce,o(e.avg.toFixed(2)),1)]))),128))])])]))),128))])])])])])],64)):e(``,!0)]))}});export{X as default}; \ No newline at end of file +import{C as e,Et as t,P as ee,W as n,Y as r,_t as i,at as te,b as ne,g as a,in as o,k as re,q as s,tn as c,w as l,x as u}from"./vue.runtime.esm-bundler-OsdSFvn7.js";import{i as d}from"./index-t7bgup9e.js";async function ie(e){let{data:t}=await d.get(`/competitions/${e}/manage/report`);return t}var f={class:`container-fluid p-3 p-md-4 manage-portal-dashboard`},p={key:0,class:`text-secondary py-4 text-center`},m={key:1,class:`alert alert-warning`},h={class:`row g-3 mb-1`},g={class:`report-kpi-card`},_={class:`report-kpi-label`},v={class:`report-kpi-value`},y={class:`report-kpi-sub`},b={class:`row g-3 mt-1`},x={class:`col-lg-6`},S={class:`card report-section-card mb-3`},C={class:`card-body`},w={class:`report-bar-head`},T={class:`report-bar-label`},E={class:`report-bar-meta`},D={class:`progress report-progress`},O={class:`card report-section-card mb-3`},k={class:`card-body`},A={class:`report-bar-head`},j={class:`report-bar-label`},M={class:`report-bar-meta`},N={class:`progress report-progress`},P={class:`card report-section-card`},F={class:`card-body`},I={class:`table-responsive`},L={class:`table table-sm align-middle mb-0 report-table`},R={class:`col-lg-6`},z={class:`card report-section-card mb-3`},ae={class:`card-body`},B={class:`report-bar-head`},V={class:`report-bar-label`},H={class:`report-bar-meta`},U={class:`progress report-progress`},W={class:`report-bar-head`},G={class:`report-bar-label`},K={class:`report-bar-meta`},q={class:`progress report-progress`},J={class:`card report-section-card`},oe={class:`card-body`},se={class:`table-responsive`},ce={class:`table table-sm align-middle mb-0 report-table`},le={class:`row g-3 mt-1`},ue={class:`col-lg-5`},de={class:`card report-section-card h-100`},fe={class:`card-body`},pe={class:`table-responsive`},me={class:`table table-sm align-middle mb-0 report-table`},he={class:`col-lg-7`},ge={class:`card report-section-card h-100`},_e={class:`card-body`},Y={class:`row g-2`},ve={class:`top5-track-card h-100`},ye={class:`top5-track-title`},be={class:`top5-track-list`},xe={class:`top5-item-rank`},Se={class:`top5-item-name`},Ce={class:`top5-item-score`},X=re({__name:`ManageDashboardView`,setup(re){let d=ee(`manageCompetitionId`,i(null)),X=i(!1),Z=i(null);async function Q(){let e=d.value;if(e){X.value=!0;try{Z.value=await ie(e)}catch{Z.value=null}finally{X.value=!1}}}let we=ne(()=>Z.value?.kpis??[]);function $(e){return e??[]}return te(d,()=>void Q(),{immediate:!0}),n(()=>void Q()),(ee,n)=>(s(),l(`div`,f,[n[11]||=u(`h5`,{class:`section-title mb-3`},`综合看板`,-1),X.value?(s(),l(`div`,p,`加载中…`)):e(``,!0),!t(d)&&!X.value?(s(),l(`div`,m,`赛事信息加载失败,请检查链接 slug。`)):Z.value?(s(),l(a,{key:2},[u(`div`,h,[(s(!0),l(a,null,r(we.value,(e,t)=>(s(),l(`div`,{key:t,class:`col-12 col-sm-6 col-xl`},[u(`div`,g,[u(`div`,_,o(e.label),1),u(`div`,v,o(e.value),1),u(`div`,y,o(e.sub),1)])]))),128))]),u(`div`,b,[u(`div`,x,[u(`div`,S,[u(`div`,C,[n[0]||=u(`h6`,{class:`report-section-title`},`赛道报名结构`,-1),(s(!0),l(a,null,r($(Z.value.track_counts),e=>(s(),l(`div`,{key:e.label,class:`report-bar-row`},[u(`div`,w,[u(`span`,T,o(e.label),1),u(`span`,E,o(e.count)+`(`+o(e.percent)+`%)`,1)]),u(`div`,D,[u(`div`,{class:`progress-bar`,style:c({width:`${e.percent}%`})},null,4)])]))),128))])]),u(`div`,O,[u(`div`,k,[n[1]||=u(`h6`,{class:`report-section-title`},`学历结构`,-1),(s(!0),l(a,null,r($(Z.value.degree_counts),e=>(s(),l(`div`,{key:e.label,class:`report-bar-row`},[u(`div`,A,[u(`span`,j,o(e.label),1),u(`span`,M,o(e.count)+`(`+o(e.percent)+`%)`,1)]),u(`div`,N,[u(`div`,{class:`progress-bar`,style:c({width:`${e.percent}%`})},null,4)])]))),128))])]),u(`div`,P,[u(`div`,F,[n[3]||=u(`h6`,{class:`report-section-title`},`院校活跃度 TOP5`,-1),u(`div`,I,[u(`table`,L,[n[2]||=u(`thead`,null,[u(`tr`,null,[u(`th`,null,`排名`),u(`th`,null,`院校`),u(`th`,null,`报名数`),u(`th`,null,`通过率`)])],-1),u(`tbody`,null,[(s(!0),l(a,null,r(Z.value.school_top,e=>(s(),l(`tr`,{key:e.rank},[u(`td`,null,o(e.rank),1),u(`td`,null,o(e.name),1),u(`td`,null,o(e.total),1),u(`td`,null,o(e.pass_rate),1)]))),128))])])])])])]),u(`div`,R,[u(`div`,z,[u(`div`,ae,[n[4]||=u(`h6`,{class:`report-section-title`},`地区分布(国家)`,-1),(s(!0),l(a,null,r($(Z.value.country_counts),e=>(s(),l(`div`,{key:e.label,class:`report-bar-row`},[u(`div`,B,[u(`span`,V,o(e.label),1),u(`span`,H,o(e.count)+`(`+o(e.percent)+`%)`,1)]),u(`div`,U,[u(`div`,{class:`progress-bar`,style:c({width:`${e.percent}%`})},null,4)])]))),128)),n[5]||=u(`hr`,{class:`my-4 report-split-line`},null,-1),n[6]||=u(`h6`,{class:`report-section-title`},`地区分布(省份TOP6)`,-1),(s(!0),l(a,null,r($(Z.value.province_counts),e=>(s(),l(`div`,{key:e.label,class:`report-bar-row`},[u(`div`,W,[u(`span`,G,o(e.label),1),u(`span`,K,o(e.count)+`(`+o(e.percent)+`%)`,1)]),u(`div`,q,[u(`div`,{class:`progress-bar`,style:c({width:`${e.percent}%`})},null,4)])]))),128))])]),u(`div`,J,[u(`div`,oe,[n[8]||=u(`h6`,{class:`report-section-title`},`城市活跃度 TOP5`,-1),u(`div`,se,[u(`table`,ce,[n[7]||=u(`thead`,null,[u(`tr`,null,[u(`th`,null,`排名`),u(`th`,null,`城市`),u(`th`,null,`报名数`),u(`th`,null,`通过率`)])],-1),u(`tbody`,null,[(s(!0),l(a,null,r(Z.value.city_top,e=>(s(),l(`tr`,{key:e.rank},[u(`td`,null,o(e.rank),1),u(`td`,null,o(e.name),1),u(`td`,null,o(e.total),1),u(`td`,null,o(e.pass_rate),1)]))),128))])])])])])])]),u(`div`,le,[u(`div`,ue,[u(`div`,de,[u(`div`,fe,[n[10]||=u(`h6`,{class:`report-section-title mb-2`},`赛道评审均分排行`,-1),u(`div`,pe,[u(`table`,me,[n[9]||=u(`thead`,null,[u(`tr`,null,[u(`th`,null,`排名`),u(`th`,null,`赛道`),u(`th`,null,`均分`),u(`th`,null,`项目数`)])],-1),u(`tbody`,null,[(s(!0),l(a,null,r(Z.value.track_score_rank,e=>(s(),l(`tr`,{key:e.rank},[u(`td`,null,o(e.rank),1),u(`td`,null,o(e.track),1),u(`td`,null,o(e.avg.toFixed(2)),1),u(`td`,null,o(e.count),1)]))),128))])])])])])]),u(`div`,he,[u(`div`,ge,[u(`div`,_e,[u(`div`,Y,[(s(!0),l(a,null,r(Z.value.track_top_projects,e=>(s(),l(`div`,{key:e.track,class:`col-12 col-md-6`},[u(`div`,ve,[u(`div`,ye,o(e.track)+` TOP3`,1),u(`ul`,be,[(s(!0),l(a,null,r(e.items,e=>(s(),l(`li`,{key:e.rank,class:`top5-item-row`},[u(`span`,xe,o(e.rank),1),u(`span`,Se,o(e.name),1),u(`span`,Ce,o(e.avg.toFixed(2)),1)]))),128))])])]))),128))])])])])])],64)):e(``,!0)]))}});export{X as default}; \ No newline at end of file diff --git a/public/admin/assets/ManageLoginView-CCm4mhLJ.js b/public/admin/assets/ManageLoginView-DqZvJ9dh.js similarity index 97% rename from public/admin/assets/ManageLoginView-CCm4mhLJ.js rename to public/admin/assets/ManageLoginView-DqZvJ9dh.js index 73bd091..687b192 100644 --- a/public/admin/assets/ManageLoginView-CCm4mhLJ.js +++ b/public/admin/assets/ManageLoginView-DqZvJ9dh.js @@ -1,4 +1,4 @@ -import{$t as e,C as t,E as n,Et as r,G as i,W as a,_t as o,b as s,ct as c,d as l,in as u,k as d,m as f,q as p,w as m,x as h}from"./vue.runtime.esm-bundler-OsdSFvn7.js";import{m as g}from"./api-rQwE0AaH.js";import{l as _,n as v,u as y}from"./index-DAT5gpOZ.js";import{t as b}from"./auth-CW8ToWeP.js";/* empty css */import{i as x,r as S,t as C}from"./competitionBranding-DKFkcrfF.js";/* empty css */var w={class:`login-page-wls__wrap`},T={class:`login-page-wls__inner`},E={class:`login-page-wls__brand`,"aria-label":`赛事说明`},D={class:`login-page-wls__logo`,"aria-hidden":`true`},O=[`src`],ee={key:1,viewBox:`0 0 100 100`,width:`72`,height:`72`,xmlns:`http://www.w3.org/2000/svg`,"aria-hidden":`true`},te={key:0,class:`login-page-wls__mark`},ne=[`innerHTML`],re={key:1,class:`login-page-wls__title`},ie=[`innerHTML`],ae={class:`login-page-wls__panel`},oe={class:`login-page-wls__card`},se={class:`login-page-wls__card-title`},ce=[`disabled`],le={key:0,class:`login-page-wls__footer`},ue={class:`login-page-wls__copyright`},k=d({__name:`ManageLoginView`,setup(d){let k=_(),A=y(),j=v(),M=o(``),N=o(``),P=o(!1),F=o(!1),I=o(!1),L=o(``),R=o(`neutral`),z=s(()=>String(k.params.slug??``).trim()),B=o(``),V=o(S()),H=o(``),de=s(()=>R.value===`error`?`login-page-wls__hint login-page-wls__hint--error`:R.value===`success`?`login-page-wls__hint login-page-wls__hint--success`:`login-page-wls__hint`);function U(e){return e.replace(/&/g,`&`).replace(//g,`>`).replace(/"/g,`"`)}let fe=s(()=>{let e=V.value.login.markLine;return x(e)?U(e):``}),W=s(()=>{let e=V.value.login.headline;if(x(e))return U(e);let t=H.value.trim();return t?U(t):``}),G=s(()=>{if(B.value)return B.value;let e=V.value.login.slogan;return x(e)?e:``}),pe=s(()=>!!B.value),K=s(()=>x(V.value.login.cardWelcome)?V.value.login.cardWelcome.replace(/登陆/g,`登录`):`欢迎登录`),q=s(()=>x(V.value.login.footerCopyright)?V.value.login.footerCopyright:``),J=s(()=>x(V.value.login.logoUrl)?V.value.login.logoUrl:``),Y=null,X=null,Z=!1;function Q(e,t=`neutral`){L.value=e,R.value=t}function $(){L.value=``,R.value=`neutral`}function me(e){return e.replace(/[\u200B-\u200D\uFEFF]/gu,``).trim()}async function he(){B.value=``,V.value=S(),H.value=``;let e=z.value,t=typeof document<`u`?document.title:``;if(!e){B.value=`缺少赛事访问地址,请从正确入口进入`;return}try{let n=await fetch(`${g()}/api/v1/public/competitions/by-slug/${encodeURIComponent(e)}`,{headers:{Accept:`application/json`}});if(!n.ok){B.value=n.status===404?`赛事不存在或未发布,请核对访问地址`:`无法加载赛事信息`;return}let r=await n.json(),i=typeof r==`object`&&r&&`data`in r?r.data:r;H.value=String(i?.name??``),V.value=C(i?.branding_json??i?.branding??null);let a=V.value.documentTitle;typeof document<`u`&&(document.title=x(a)?`${me(a)} · 管理登录`:t||`管理登录`);let o=V.value.login.themePrimary;x(o)&&typeof document<`u`&&(Y===null&&(Y=document.body.style.getPropertyValue(`--primary`)||``),document.body.style.setProperty(`--primary`,o),document.body.style.setProperty(`--primary-soft`,`${o}14`));let s=V.value.login.faviconUrl;if(x(s)&&typeof document<`u`){let e=document.querySelector(`link[rel~="icon"]`);e||(e=document.createElement(`link`),e.rel=`icon`,document.head.appendChild(e)),X===null&&(X=e.getAttribute(`href`)||``),e.href=s}}catch{B.value=`网络错误,无法校验赛事链接`}}async function ge(){let e=M.value.trim(),t=N.value;if(P.value=!e,F.value=!t,!e){Q(`请填写账号`,`error`);return}if(!t){Q(`请填写密码`,`error`);return}if(!z.value){Q(`缺少赛事访问地址`,`error`);return}$(),I.value=!0,Q(`登录中…`,`neutral`);try{let n=await b({username:e,password:t});j.setSession(n.token,n.user&&typeof n.user.id==`number`?{id:n.user.id,username:n.user.username,name:n.user.name}:null),$();let r=typeof k.query.redirect==`string`?k.query.redirect:``;r&&r.includes(`/manage`)&&!r.includes(`/login`)?await A.replace(r):await A.replace({name:`manage-dashboard`,params:{slug:z.value}})}catch(e){Q(e instanceof Error?e.message:`登录失败`,`error`)}finally{I.value=!1}}return a(()=>{typeof document<`u`&&(document.documentElement.classList.add(`cxxfds-login-page`),Z=!0),document.body.classList.add(`login-page-wls`),he()}),i(()=>{if(typeof document<`u`&&Z&&(document.documentElement.classList.remove(`cxxfds-login-page`),Z=!1),document.body.classList.remove(`login-page-wls`),typeof document<`u`&&(Y!==null&&(Y===``?(document.body.style.removeProperty(`--primary`),document.body.style.removeProperty(`--primary-soft`)):document.body.style.setProperty(`--primary`,Y),Y=null),X!==null)){let e=document.querySelector(`link[rel~="icon"]`);e&&(X===``?e.removeAttribute(`href`):e.href=X),X=null}}),(i,a)=>(p(),m(`div`,w,[h(`div`,T,[h(`aside`,E,[h(`div`,D,[J.value?(p(),m(`img`,{key:0,src:J.value,alt:``,class:`login-page-wls__logo-img`,width:`72`,height:`72`},null,8,O)):(p(),m(`svg`,ee,[...a[4]||=[n(`String(k.params.slug??``).trim()),B=o(``),V=o(S()),H=o(``),de=s(()=>R.value===`error`?`login-page-wls__hint login-page-wls__hint--error`:R.value===`success`?`login-page-wls__hint login-page-wls__hint--success`:`login-page-wls__hint`);function U(e){return e.replace(/&/g,`&`).replace(//g,`>`).replace(/"/g,`"`)}let fe=s(()=>{let e=V.value.login.markLine;return x(e)?U(e):``}),W=s(()=>{let e=V.value.login.headline;if(x(e))return U(e);let t=H.value.trim();return t?U(t):``}),G=s(()=>{if(B.value)return B.value;let e=V.value.login.slogan;return x(e)?e:``}),pe=s(()=>!!B.value),K=s(()=>x(V.value.login.cardWelcome)?V.value.login.cardWelcome.replace(/登陆/g,`登录`):`欢迎登录`),q=s(()=>x(V.value.login.footerCopyright)?V.value.login.footerCopyright:``),J=s(()=>x(V.value.login.logoUrl)?V.value.login.logoUrl:``),Y=null,X=null,Z=!1;function Q(e,t=`neutral`){L.value=e,R.value=t}function $(){L.value=``,R.value=`neutral`}function me(e){return e.replace(/[\u200B-\u200D\uFEFF]/gu,``).trim()}async function he(){B.value=``,V.value=S(),H.value=``;let e=z.value,t=typeof document<`u`?document.title:``;if(!e){B.value=`缺少赛事访问地址,请从正确入口进入`;return}try{let n=await fetch(`${g()}/api/v1/public/competitions/by-slug/${encodeURIComponent(e)}`,{headers:{Accept:`application/json`}});if(!n.ok){B.value=n.status===404?`赛事不存在或未发布,请核对访问地址`:`无法加载赛事信息`;return}let r=await n.json(),i=typeof r==`object`&&r&&`data`in r?r.data:r;H.value=String(i?.name??``),V.value=C(i?.branding_json??i?.branding??null);let a=V.value.documentTitle;typeof document<`u`&&(document.title=x(a)?`${me(a)} · 管理登录`:t||`管理登录`);let o=V.value.login.themePrimary;x(o)&&typeof document<`u`&&(Y===null&&(Y=document.body.style.getPropertyValue(`--primary`)||``),document.body.style.setProperty(`--primary`,o),document.body.style.setProperty(`--primary-soft`,`${o}14`));let s=V.value.login.faviconUrl;if(x(s)&&typeof document<`u`){let e=document.querySelector(`link[rel~="icon"]`);e||(e=document.createElement(`link`),e.rel=`icon`,document.head.appendChild(e)),X===null&&(X=e.getAttribute(`href`)||``),e.href=s}}catch{B.value=`网络错误,无法校验赛事链接`}}async function ge(){let e=M.value.trim(),t=N.value;if(P.value=!e,F.value=!t,!e){Q(`请填写账号`,`error`);return}if(!t){Q(`请填写密码`,`error`);return}if(!z.value){Q(`缺少赛事访问地址`,`error`);return}$(),I.value=!0,Q(`登录中…`,`neutral`);try{let n=await b({username:e,password:t});j.setSession(n.token,n.user&&typeof n.user.id==`number`?{id:n.user.id,username:n.user.username,name:n.user.name}:null),$();let r=typeof k.query.redirect==`string`?k.query.redirect:``;r&&r.includes(`/manage`)&&!r.includes(`/login`)?await A.replace(r):await A.replace({name:`manage-dashboard`,params:{slug:z.value}})}catch(e){Q(e instanceof Error?e.message:`登录失败`,`error`)}finally{I.value=!1}}return a(()=>{typeof document<`u`&&(document.documentElement.classList.add(`cxxfds-login-page`),Z=!0),document.body.classList.add(`login-page-wls`),he()}),i(()=>{if(typeof document<`u`&&Z&&(document.documentElement.classList.remove(`cxxfds-login-page`),Z=!1),document.body.classList.remove(`login-page-wls`),typeof document<`u`&&(Y!==null&&(Y===``?(document.body.style.removeProperty(`--primary`),document.body.style.removeProperty(`--primary-soft`)):document.body.style.setProperty(`--primary`,Y),Y=null),X!==null)){let e=document.querySelector(`link[rel~="icon"]`);e&&(X===``?e.removeAttribute(`href`):e.href=X),X=null}}),(i,a)=>(p(),m(`div`,w,[h(`div`,T,[h(`aside`,E,[h(`div`,D,[J.value?(p(),m(`img`,{key:0,src:J.value,alt:``,class:`login-page-wls__logo-img`,width:`72`,height:`72`},null,8,O)):(p(),m(`svg`,ee,[...a[4]||=[n(`Number(h.params.id)),J=s(()=>G.value?.files.find(e=>e.kind===`plan`)??null),Y=s(()=>G.value?.files.filter(e=>e.kind===`supporting`)??[]),Ae=s(()=>{let e=ke.value.trim()||G.value?.competition?.name?.trim()||``;return e?`${e} 赛事承诺书`:`赛事承诺书`});function je(e){let t=(e??``).trim();if(!t)return`—`;let n=t.match(/^(\d{4})-(\d{1,2})-(\d{1,2})/);if(n)return`${parseInt(n[1],10)}年${parseInt(n[2],10)}月${parseInt(n[3],10)}日`;let r=new Date(t.includes(` `)?t.replace(/-/g,`/`):t);return Number.isNaN(r.getTime())?t:`${r.getFullYear()}年${r.getMonth()+1}月${r.getDate()}日`}let X=s(()=>je(G.value?.promise_signed_at??void 0)),Z=s(()=>{let e=G.value?.promise_signature;if(e==null||typeof e!=`string`)return``;let t=e.trim();return t===``?``:t.startsWith(`data:`)?t:`data:image/png;base64,${t}`});function Q(e){return e==null?`-`:e.toFixed(2)}async function Me(){let e=U.value;if(!(!e||!q.value)){W.value=!0;try{G.value=await ae(e,q.value)}finally{W.value=!1}}}function Ne(){let e=Oe.value;H.push({name:`manage-projects`,params:{slug:e},query:ce(le(`manage-projects`,e),h.query)})}async function $(e){let t=U.value,n=G.value;if(!(!t||!n)){if(ie()){m.warning(`附件正在下载中,请勿重复点击`);return}K.value=e.id;try{await oe(t,n.id,e.id,e.original_name||`附件`,{size:e.size})}catch(e){m.error(e instanceof Error?e.message:`下载附件失败`)}finally{K.value=null}}}return ee([U,q],()=>void Me(),{immediate:!0}),(i,o)=>(d(),f(`div`,ue,[p(`div`,{class:`d-flex justify-content-between align-items-center flex-wrap gap-2 mb-3`},[o[1]||=p(`h5`,{class:`mb-0 section-title`},`项目详情`,-1),p(`button`,{type:`button`,class:`btn btn-sm btn-outline-secondary`,onClick:Ne},`返回列表`)]),W.value?(d(),f(`div`,de,`加载中…`)):G.value?(d(),f(`div`,fe,[p(`div`,pe,[r(se,{detail:G.value},null,8,[`detail`]),p(`div`,g,[p(`div`,_,[o[2]||=p(`label`,{class:`form-label`},`评审进程`,-1),p(`input`,{class:`form-control`,value:G.value.review_progress,disabled:``},null,8,v)]),p(`div`,y,[o[3]||=p(`label`,{class:`form-label`},`总分`,-1),p(`input`,{class:`form-control`,value:G.value.review_fully_completed?Q(G.value.team_sum):`待评审`,disabled:``},null,8,b)]),p(`div`,x,[o[4]||=p(`label`,{class:`form-label`},`平均分`,-1),p(`input`,{class:`form-control`,value:G.value.review_fully_completed?Q(G.value.team_avg):`-`,disabled:``},null,8,S)]),p(`div`,C,[o[5]||=p(`label`,{class:`form-label`},`审核状态`,-1),p(`input`,{class:`form-control`,value:G.value.review_result===`passed`?`通过`:G.value.review_result===`rejected`?`未通过`:`待评定`,disabled:``},null,8,w)]),p(`div`,T,[o[6]||=p(`label`,{class:`form-label`},`是否参与评审`,-1),p(`input`,{class:`form-control`,value:G.value.review_eligible===!1?`否`:`是`,disabled:``},null,8,E)])]),p(`div`,D,[p(`div`,O,[o[7]||=p(`label`,{class:`form-label`},`商业计划书`,-1),J.value?(d(),f(`p`,k,[p(`a`,{role:`button`,href:`#`,class:e([`text-danger text-decoration-none`,{"pe-none opacity-75":K.value!=null}]),onClick:o[0]||=u(e=>$(J.value),[`prevent`])},l(K.value===J.value.id?`下载中… ${J.value.original_name}`:J.value.original_name),3)])):(d(),f(`p`,A,`—`))]),Y.value.length?(d(),f(`div`,j,[o[8]||=p(`label`,{class:`form-label`},`其他佐证材料`,-1),p(`ul`,M,[(d(!0),f(c,null,a(Y.value,t=>(d(),f(`li`,{key:t.id},[p(`a`,{role:`button`,href:`#`,class:e([`text-danger text-decoration-none`,{"pe-none opacity-75":K.value!=null}]),onClick:u(e=>$(t),[`prevent`])},l(K.value===t.id?`下载中… ${t.original_name}`:t.original_name),11,N)]))),128))])])):t(``,!0),p(`div`,P,[o[10]||=p(`label`,{class:`form-label`},`参赛承诺书`,-1),p(`p`,F,[G.value.promise_signed||G.value.promise_signed_at?(d(),f(c,{key:0},[o[9]||=p(`button`,{type:`button`,class:`btn btn-link btn-sm p-0 align-baseline text-danger`,"data-bs-toggle":`modal`,"data-bs-target":`#managePledgeModal`},` 已签署 · 查看承诺书与签名 `,-1),p(`span`,I,`日期:`+l(X.value),1)],64)):(d(),f(c,{key:1},[n(`未签署`)],64))])])]),G.value.review_scores?.length?(d(),f(`div`,L,[o[12]||=p(`h6`,{class:`report-section-title`},`评委打分`,-1),p(`table`,R,[o[11]||=p(`thead`,null,[p(`tr`,null,[p(`th`,null,`评委`),p(`th`,null,`项目得分`),p(`th`,null,`时间`)])],-1),p(`tbody`,null,[(d(!0),f(c,null,a(G.value.review_scores,e=>(d(),f(`tr`,{key:e.id},[p(`td`,null,l(e.reviewer_name||e.reviewer_id),1),p(`td`,null,l(e.line_total??`—`),1),p(`td`,null,l(e.updated_at||`—`),1)]))),128))])])])):t(``,!0),G.value.review_result_note?(d(),f(`div`,z,[o[13]||=p(`label`,{class:`form-label`},`审核意见`,-1),p(`textarea`,{class:`form-control`,rows:`4`,value:G.value.review_result_note,disabled:``},null,8,B)])):t(``,!0)])])):t(``,!0),p(`div`,me,[p(`div`,V,[p(`div`,he,[p(`div`,ge,[G.value?(d(),f(`div`,_e,[p(`h1`,ve,l(Ae.value),1),p(`div`,ye,[G.value.pledge_content_html?.trim()?(d(),f(`div`,{key:0,class:`promise-doc-body promise-doc-body--rich`,innerHTML:G.value.pledge_content_html},null,8,be)):(d(),f(`div`,xe,[...o[14]||=[p(`p`,{class:`text-secondary mb-0`},`本场赛事未配置承诺书正文。`,-1)]]))]),G.value.promise_signed||G.value.promise_signed_at?(d(),f(`div`,Se,[p(`div`,Ce,[o[15]||=p(`span`,{class:`promise-doc-signlabel`},`参赛人签名:`,-1),Z.value?(d(),f(`img`,{key:0,src:Z.value,alt:``,class:`manage-promise-sig-img`,loading:`lazy`},null,8,we)):(d(),f(`span`,Te,`暂无`))]),p(`div`,Ee,[p(`span`,De,[o[16]||=n(`日期:`,-1),p(`strong`,null,l(X.value),1)])])])):t(``,!0)])):t(``,!0),o[17]||=p(`div`,{class:`promise-sign-actions`},[p(`button`,{type:`button`,class:`btn btn-light notice-cancel-btn`,"data-bs-dismiss":`modal`},`关闭`)],-1)])])])])]))}}),[[`__scopeId`,`data-v-1a2ba7ac`]]);export{H as default}; \ No newline at end of file +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,g as c,in as l,k as te,m as u,q as d,w as f,x as p}from"./vue.runtime.esm-bundler-OsdSFvn7.js";import{f as m,l as ne,u as re}from"./index-t7bgup9e.js";import{t as h}from"./_plugin-vue_export-helper-CXTkFu_Z.js";import{n as ie}from"./downloadFeedback-CVNWp7w4.js";import{r as ae,t as oe}from"./applications-Dl5PbiPv.js";import{t as se}from"./ApplicationSignupDetailFields-DzsXhk8j.js";import{i as ce,t as le}from"./listPageState-9NPjbkq0.js";var ue={class:`container-fluid p-3 p-md-4`},de={key:0,class:`text-secondary py-4 text-center`},fe={key:1,class:`card`},pe={class:`card-body`},g={class:`row g-3 mt-1`},_={class:`col-md-4`},v=[`value`],y={class:`col-md-4`},b=[`value`],x={class:`col-md-4`},S=[`value`],C={class:`col-md-4`},w=[`value`],T={class:`col-md-4`},E=[`value`],D={class:`row g-3 mt-1`},O={class:`col-12`},k={key:0,class:`form-control-plaintext border rounded px-3 py-2 mb-0 bg-light small text-secondary`},A={key:1,class:`form-control-plaintext border rounded px-3 py-2 mb-0 bg-light small text-secondary`},j={key:0,class:`col-12`},M={class:`list-unstyled mb-0 border rounded px-3 py-2 bg-light small`},N=[`onClick`],P={class:`col-12`},F={class:`form-control-plaintext border rounded px-3 py-2 mb-0 bg-light small text-secondary`},I={class:`text-secondary ms-2`},L={key:0,class:`mt-4`},R={class:`table table-sm`},z={key:1,class:`mt-3`},B=[`value`],me={id:`managePledgeModal`,class:`modal fade`,tabindex:`-1`,"aria-labelledby":`managePledgeDocHeading`,"aria-hidden":`true`},V={class:`modal-dialog modal-dialog-centered modal-dialog-scrollable manage-detail-modal manage-detail-modal--pledge`},he={class:`modal-content promise-sign-sheet`},ge={class:`modal-body pt-2`},_e={key:0,class:`promise-doc-paper`},ve={id:`managePledgeDocHeading`,class:`promise-doc-heading text-center`},ye={class:`promise-doc-scroll`},be=[`innerHTML`],xe={key:1,class:`promise-doc-body promise-doc-body--rich`},Se={key:0,class:`promise-doc-signblock`},Ce={class:`manage-pledge-sig-row`},we=[`src`],Te={key:1,class:`small text-secondary`},Ee={class:`promise-doc-daterow`},De={class:`promise-doc-dateline`},H=h(te({__name:`ManageProjectDetailView`,setup(te){let h=ne(),H=re(),U=i(`manageCompetitionId`,o(null)),Oe=i(`manageCompetitionSlug`,o(``)),ke=i(`manageCompetitionName`,o(``)),W=o(!1),G=o(null),K=o(null),q=s(()=>Number(h.params.id)),J=s(()=>G.value?.files.find(e=>e.kind===`plan`)??null),Y=s(()=>G.value?.files.filter(e=>e.kind===`supporting`)??[]),Ae=s(()=>{let e=ke.value.trim()||G.value?.competition?.name?.trim()||``;return e?`${e} 赛事承诺书`:`赛事承诺书`});function je(e){let t=(e??``).trim();if(!t)return`—`;let n=t.match(/^(\d{4})-(\d{1,2})-(\d{1,2})/);if(n)return`${parseInt(n[1],10)}年${parseInt(n[2],10)}月${parseInt(n[3],10)}日`;let r=new Date(t.includes(` `)?t.replace(/-/g,`/`):t);return Number.isNaN(r.getTime())?t:`${r.getFullYear()}年${r.getMonth()+1}月${r.getDate()}日`}let X=s(()=>je(G.value?.promise_signed_at??void 0)),Z=s(()=>{let e=G.value?.promise_signature;if(e==null||typeof e!=`string`)return``;let t=e.trim();return t===``?``:t.startsWith(`data:`)?t:`data:image/png;base64,${t}`});function Q(e){return e==null?`-`:e.toFixed(2)}async function Me(){let e=U.value;if(!(!e||!q.value)){W.value=!0;try{G.value=await ae(e,q.value)}finally{W.value=!1}}}function Ne(){let e=Oe.value;H.push({name:`manage-projects`,params:{slug:e},query:ce(le(`manage-projects`,e),h.query)})}async function $(e){let t=U.value,n=G.value;if(!(!t||!n)){if(ie()){m.warning(`附件正在下载中,请勿重复点击`);return}K.value=e.id;try{await oe(t,n.id,e.id,e.original_name||`附件`,{size:e.size})}catch(e){m.error(e instanceof Error?e.message:`下载附件失败`)}finally{K.value=null}}}return ee([U,q],()=>void Me(),{immediate:!0}),(i,o)=>(d(),f(`div`,ue,[p(`div`,{class:`d-flex justify-content-between align-items-center flex-wrap gap-2 mb-3`},[o[1]||=p(`h5`,{class:`mb-0 section-title`},`项目详情`,-1),p(`button`,{type:`button`,class:`btn btn-sm btn-outline-secondary`,onClick:Ne},`返回列表`)]),W.value?(d(),f(`div`,de,`加载中…`)):G.value?(d(),f(`div`,fe,[p(`div`,pe,[r(se,{detail:G.value},null,8,[`detail`]),p(`div`,g,[p(`div`,_,[o[2]||=p(`label`,{class:`form-label`},`评审进程`,-1),p(`input`,{class:`form-control`,value:G.value.review_progress,disabled:``},null,8,v)]),p(`div`,y,[o[3]||=p(`label`,{class:`form-label`},`总分`,-1),p(`input`,{class:`form-control`,value:G.value.review_fully_completed?Q(G.value.team_sum):`待评审`,disabled:``},null,8,b)]),p(`div`,x,[o[4]||=p(`label`,{class:`form-label`},`平均分`,-1),p(`input`,{class:`form-control`,value:Q(G.value.team_avg),disabled:``},null,8,S)]),p(`div`,C,[o[5]||=p(`label`,{class:`form-label`},`审核状态`,-1),p(`input`,{class:`form-control`,value:G.value.review_result===`passed`?`通过`:G.value.review_result===`rejected`?`未通过`:`待评定`,disabled:``},null,8,w)]),p(`div`,T,[o[6]||=p(`label`,{class:`form-label`},`是否参与评审`,-1),p(`input`,{class:`form-control`,value:G.value.review_eligible===!1?`否`:`是`,disabled:``},null,8,E)])]),p(`div`,D,[p(`div`,O,[o[7]||=p(`label`,{class:`form-label`},`商业计划书`,-1),J.value?(d(),f(`p`,k,[p(`a`,{role:`button`,href:`#`,class:e([`text-danger text-decoration-none`,{"pe-none opacity-75":K.value!=null}]),onClick:o[0]||=u(e=>$(J.value),[`prevent`])},l(K.value===J.value.id?`下载中… ${J.value.original_name}`:J.value.original_name),3)])):(d(),f(`p`,A,`—`))]),Y.value.length?(d(),f(`div`,j,[o[8]||=p(`label`,{class:`form-label`},`其他佐证材料`,-1),p(`ul`,M,[(d(!0),f(c,null,a(Y.value,t=>(d(),f(`li`,{key:t.id},[p(`a`,{role:`button`,href:`#`,class:e([`text-danger text-decoration-none`,{"pe-none opacity-75":K.value!=null}]),onClick:u(e=>$(t),[`prevent`])},l(K.value===t.id?`下载中… ${t.original_name}`:t.original_name),11,N)]))),128))])])):t(``,!0),p(`div`,P,[o[10]||=p(`label`,{class:`form-label`},`参赛承诺书`,-1),p(`p`,F,[G.value.promise_signed||G.value.promise_signed_at?(d(),f(c,{key:0},[o[9]||=p(`button`,{type:`button`,class:`btn btn-link btn-sm p-0 align-baseline text-danger`,"data-bs-toggle":`modal`,"data-bs-target":`#managePledgeModal`},` 已签署 · 查看承诺书与签名 `,-1),p(`span`,I,`日期:`+l(X.value),1)],64)):(d(),f(c,{key:1},[n(`未签署`)],64))])])]),G.value.review_scores?.length?(d(),f(`div`,L,[o[12]||=p(`h6`,{class:`report-section-title`},`评委打分`,-1),p(`table`,R,[o[11]||=p(`thead`,null,[p(`tr`,null,[p(`th`,null,`评委`),p(`th`,null,`项目得分`),p(`th`,null,`时间`)])],-1),p(`tbody`,null,[(d(!0),f(c,null,a(G.value.review_scores,e=>(d(),f(`tr`,{key:e.id},[p(`td`,null,l(e.reviewer_name||e.reviewer_id),1),p(`td`,null,l(e.line_total??`—`),1),p(`td`,null,l(e.updated_at||`—`),1)]))),128))])])])):t(``,!0),G.value.review_result_note?(d(),f(`div`,z,[o[13]||=p(`label`,{class:`form-label`},`审核意见`,-1),p(`textarea`,{class:`form-control`,rows:`4`,value:G.value.review_result_note,disabled:``},null,8,B)])):t(``,!0)])])):t(``,!0),p(`div`,me,[p(`div`,V,[p(`div`,he,[p(`div`,ge,[G.value?(d(),f(`div`,_e,[p(`h1`,ve,l(Ae.value),1),p(`div`,ye,[G.value.pledge_content_html?.trim()?(d(),f(`div`,{key:0,class:`promise-doc-body promise-doc-body--rich`,innerHTML:G.value.pledge_content_html},null,8,be)):(d(),f(`div`,xe,[...o[14]||=[p(`p`,{class:`text-secondary mb-0`},`本场赛事未配置承诺书正文。`,-1)]]))]),G.value.promise_signed||G.value.promise_signed_at?(d(),f(`div`,Se,[p(`div`,Ce,[o[15]||=p(`span`,{class:`promise-doc-signlabel`},`参赛人签名:`,-1),Z.value?(d(),f(`img`,{key:0,src:Z.value,alt:``,class:`manage-promise-sig-img`,loading:`lazy`},null,8,we)):(d(),f(`span`,Te,`暂无`))]),p(`div`,Ee,[p(`span`,De,[o[16]||=n(`日期:`,-1),p(`strong`,null,l(X.value),1)])])])):t(``,!0)])):t(``,!0),o[17]||=p(`div`,{class:`promise-sign-actions`},[p(`button`,{type:`button`,class:`btn btn-light notice-cancel-btn`,"data-bs-dismiss":`modal`},`关闭`)],-1)])])])])]))}}),[[`__scopeId`,`data-v-8fadd682`]]);export{H as default}; \ No newline at end of file diff --git a/public/admin/assets/ManageProjectDetailView-B8Hb1J0O.css b/public/admin/assets/ManageProjectDetailView-BUKHgQzN.css similarity index 52% rename from public/admin/assets/ManageProjectDetailView-B8Hb1J0O.css rename to public/admin/assets/ManageProjectDetailView-BUKHgQzN.css index 3fca7d1..56a5080 100644 --- a/public/admin/assets/ManageProjectDetailView-B8Hb1J0O.css +++ b/public/admin/assets/ManageProjectDetailView-BUKHgQzN.css @@ -1 +1 @@ -.manage-pledge-sig-row[data-v-1a2ba7ac]{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:.35rem .65rem;display:flex}.manage-promise-sig-img[data-v-1a2ba7ac]{vertical-align:middle;object-fit:contain;width:auto;max-width:140px;height:auto;max-height:48px;display:inline-block}.promise-doc-body--rich[data-v-1a2ba7ac]{text-align:justify;font-size:.95rem;line-height:1.65}.promise-doc-body--rich[data-v-1a2ba7ac] p{margin-bottom:.75rem}#managePledgeModal .manage-detail-modal--pledge{--bs-modal-width:min(32rem, calc(100vw - 1.5rem));max-width:min(32rem,100vw - 1.5rem)}#managePledgeModal .promise-doc-scroll{max-height:min(38vh,100dvh - 15rem);overflow-y:auto} +.manage-pledge-sig-row[data-v-8fadd682]{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:.35rem .65rem;display:flex}.manage-promise-sig-img[data-v-8fadd682]{vertical-align:middle;object-fit:contain;width:auto;max-width:140px;height:auto;max-height:48px;display:inline-block}.promise-doc-body--rich[data-v-8fadd682]{text-align:justify;font-size:.95rem;line-height:1.65}.promise-doc-body--rich[data-v-8fadd682] p{margin-bottom:.75rem}#managePledgeModal .manage-detail-modal--pledge{--bs-modal-width:min(32rem, calc(100vw - 1.5rem));max-width:min(32rem,100vw - 1.5rem)}#managePledgeModal .promise-doc-scroll{max-height:min(38vh,100dvh - 15rem);overflow-y:auto} diff --git a/public/admin/assets/ManageProjectsView-D0-WoO2G.js b/public/admin/assets/ManageProjectsView-D0-WoO2G.js deleted file mode 100644 index f2f05e1..0000000 --- a/public/admin/assets/ManageProjectsView-D0-WoO2G.js +++ /dev/null @@ -1 +0,0 @@ -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-DAT5gpOZ.js";import{o as se}from"./competitions-BSJLYyM3.js";import{n as ce}from"./publicSourceChannels-COAaqE-_.js";import{r as le}from"./signupChannels-DsI7Cu8M.js";import{i as ue,n as de,o as fe}from"./applications-DrpsfVEd.js";import{a as pe,n as me,o as he,r as ge,t as _e}from"./listPageState-9NPjbkq0.js";import{n as ve,r as ye,t as y}from"./entryGroups-mdEgVvvl.js";async function be(e,t){let{data:n}=await v.post(`/competitions/${e}/applications/batch-review-result`,t);return n}var xe={class:`container-fluid p-3 p-md-4`},Se={class:`filter-panel mb-3`},Ce={class:`row g-2 align-items-center`},we={class:`col-12 d-flex flex-wrap align-items-center gap-3`},Te=[`id`,`value`],Ee=[`for`],De={class:`col-md-3`},Oe={class:`col-md-2`},ke=[`value`],Ae={class:`col-md-2`},je={class:`col-md-2`},Me={class:`col-md-2`},Ne=[`value`],Pe={class:`col-md-2`},Fe=[`value`],Ie={class:`col-12 col-md-auto d-flex gap-2`},Le={class:`selection-toolbar mt-2`},Re={class:`d-flex flex-wrap align-items-center gap-2`},ze={class:`btn-group btn-group-sm portal-selection-mode-group`,role:`group`},Be={key:0,class:`badge bg-light text-dark ms-1`},Ve={key:0,class:`badge bg-light text-dark ms-1`},He=[`disabled`],Ue=[`disabled`],We={key:1,class:`dropdown`},Ge={class:`dropdown-menu dropdown-menu-end`},Ke=[`disabled`],qe={class:`small text-secondary mb-0 mt-2`},Je={class:`portal-table-scroll table-panel`},Ye={class:`table table-hover align-middle mb-0 admin-list-table portal-data-table`},Xe={class:`text-center portal-sticky-left`,style:{width:`2.5rem`}},Ze=[`checked`],Qe={class:`portal-sticky-right-3`},$e={key:0},et={key:1},tt={class:`text-center portal-sticky-left`},nt=[`checked`,`disabled`,`onChange`],rt={class:`text-secondary`},it={class:`cell-wrap`},at={class:`cell-wrap`},ot={class:`cell-wrap`},st={class:`cell-wrap`},ct={class:`cell-wrap`},lt={class:`cell-wrap`},ut={class:`portal-sticky-right-4`},dt={class:`portal-sticky-right-3`},ft={class:`portal-sticky-right-2`},pt={key:0,class:`admin-manage-status-tag admin-manage-status-pass`},mt={key:1,class:`admin-manage-status-tag admin-manage-status-fail`},ht={key:2},gt={class:`portal-sticky-right-1`},_t=[`onClick`],vt={key:0,class:`modal fade show d-block`,tabindex:`-1`,style:{background:`rgba(0,0,0,.35)`}},yt={class:`modal-dialog modal-dialog-centered`},bt={class:`modal-content`},xt={class:`modal-header`},St={class:`modal-body`},Ct={class:`mb-0`},wt={class:`modal-footer`},Tt=[`disabled`],Et={key:1,class:`modal fade show d-block`,tabindex:`-1`,style:{background:`rgba(0,0,0,.35)`}},Dt={class:`modal-dialog modal-dialog-centered modal-lg`},Ot={class:`modal-content`},kt={class:`modal-body`},At={class:`modal-footer`},jt=[`disabled`],Mt={key:2,class:`modal fade show d-block`,tabindex:`-1`,style:{background:`rgba(0,0,0,.35)`}},Nt={class:`modal-dialog modal-dialog-centered modal-lg`},Pt={class:`modal-content`},Ft={class:`modal-body`},It={class:`modal-footer`},Lt=[`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 _e(`manage-projects`,S.value)}function D(){let e={};return P.keyword.trim()&&(e.keyword=P.keyword.trim()),P.track&&(e.track=P.track),P.entry_group&&(e.entry_group=P.entry_group),P.review_result&&(e.review_result=P.review_result),P.review_eligible&&(e.review_eligible=P.review_eligible),P.signup_channel_id!==``&&(e.signup_channel_id=String(P.signup_channel_id)),P.public_source_channel_id!==``&&(e.public_source_channel_id=String(P.public_source_channel_id)),F.value!==`desc`&&(e.sort_dir=F.value),e}function O(){return me({page:T.page,perPage:T.perPage,filters:D()})}function k(){let e=E();e.endsWith(`.`)||he(e,{page:T.page,perPage:T.perPage,filters:D()})}function Rt(){let e=pe(E(),v.query);T.page=e.page,T.perPage=e.perPage,P.keyword=e.filters.keyword??``,P.track=e.filters.track??``,e.filters.entry_group&&(P.entry_group=e.filters.entry_group),P.review_result=e.filters.review_result===`passed`||e.filters.review_result===`rejected`||e.filters.review_result===`pending`?e.filters.review_result:``,(e.filters.review_eligible===`1`||e.filters.review_eligible===`0`)&&(P.review_eligible=e.filters.review_eligible),P.signup_channel_id=e.filters.signup_channel_id?Number(e.filters.signup_channel_id):``,P.public_source_channel_id=e.filters.public_source_channel_id?Number(e.filters.public_source_channel_id):``,(e.filters.sort_dir===`asc`||e.filters.sort_dir===`desc`)&&(F.value=e.filters.sort_dir)}function A(){let e=O();ge(e,v.query)||b.replace({name:`manage-projects`,params:{slug:S.value},query:e})}let j=s([]),M=s([]),N=s([]),P=f({keyword:``,track:``,entry_group:y,review_result:``,review_eligible:`1`,signup_channel_id:``,public_source_channel_id:``}),zt=ve,F=s(`desc`),I=s(`audit`),L=s([]),R=s([]),z=s(!1),B=s(`xlsx`),V=s(!1),H=s(0),U=s(!1),W=s(!1),G=s(``),K=s(!1);function q(e){let t={page:e,per_page:T.perPage,status:`submitted`,sort_by:`team_avg`,sort_dir:F.value},n=P.keyword.trim();return n&&(t.keyword=n),P.track&&(t.track=P.track),P.entry_group&&(t.entry_group=P.entry_group),(P.review_result===`passed`||P.review_result===`rejected`||P.review_result===`pending`)&&(t.review_result=P.review_result),P.review_eligible===`1`&&(t.review_eligible=!0),P.review_eligible===`0`&&(t.review_eligible=!1),P.signup_channel_id!==``&&(t.signup_channel_id=Number(P.signup_channel_id)),P.public_source_channel_id!==``&&(t.public_source_channel_id=Number(P.public_source_channel_id)),t}function Bt(e){return e.signup_channel?.channel_name||e.signup_channel_code||`—`}function Vt(e){return e.public_source_channel?`${e.public_source_channel.source_name}(${e.public_source_channel.source_code})`:e.public_source_code||`—`}function Ht(e){return e.submitter_name?.trim()||e.submitter_mobile?.trim()||`—`}function Ut(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 Wt(e){return e==null||Number.isNaN(e)?`-`:e.toFixed(2)}function Gt(e){return e.review_fully_completed?e.team_sum==null?`-`:e.team_sum.toFixed(2):`待评审`}function Kt(e){return e.review_fully_completed?Wt(e.team_avg):`-`}function J(e){return I.value===`export`?!0:e.review_fully_completed}let Y=c(()=>I.value===`audit`?L.value:R.value);function X(e){I.value===`audit`?L.value=e:R.value=e}function Z(e){I.value=e}let qt=c(()=>I.value===`audit`?`当前勾选用于批量通过/未通过`:`当前勾选用于「导出表格 + 所选附件」,与审核勾选互不影响`);function Jt(e){return Y.value.includes(e)}let Yt=c(()=>{let e=w.value.filter(J),t=Y.value;return e.length>0&&e.every(e=>t.includes(e.id))});function Xt(e){let t=e.target.checked,n=w.value.filter(J).map(e=>e.id),r=Y.value;X(t?Array.from(new Set([...r,...n])):r.filter(e=>!n.includes(e)))}function Zt(e,t,n){if(!J(t)){n.target.checked=!1;return}let r=n.target.checked,i=[...Y.value];if(r)i.includes(e)||i.push(e);else{let t=i.indexOf(e);t>=0&&i.splice(t,1)}X(i)}function Qt(){F.value=F.value===`desc`?`asc`:`desc`,Q(1)}function $t(e){Q(e)}function en(e){T.perPage=e,Q(1)}async function tn(){let e=x.value;if(!e)return;let[t,n,r]=await Promise.all([se(e),le(e),ce()]);j.value=t,M.value=n,N.value=r}async function Q(e=T.page){let t=x.value;if(t){C.value=!0,T.page=e,k(),A();try{let n=await fe(t,q(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,k(),A())}finally{C.value=!1}}}function nn(){P.keyword=``,P.track=``,P.entry_group=y,P.review_result=``,P.review_eligible=`1`,P.signup_channel_id=``,P.public_source_channel_id=``,L.value=[],R.value=[],Q(1)}async function $(e){let t=x.value;if(t){if(e===`selected`&&R.value.length===0){ie.warning(`请切换到「导出选择」并勾选要导出附件的项目`);return}B.value=e,z.value=!0;try{H.value=(await ue(t,{mode:e,...q(T.page),application_ids:e===`selected`?R.value:void 0})).total}catch{H.value=T.total}}}async function rn(){let e=x.value;if(e){V.value=!0;try{await de(e,{mode:B.value,...q(T.page),application_ids:B.value===`selected`?R.value:void 0}),z.value=!1}finally{V.value=!1}}}async function an(e){let t=x.value;if(!(!t||L.value.length===0)){K.value=!0;try{await be(t,{application_ids:L.value,result:e,note:G.value.trim()||void 0}),U.value=!1,W.value=!1,G.value=``,L.value=[],await Q(T.page)}finally{K.value=!1}}}function on(e){k(),b.push({name:`manage-project-detail`,params:{slug:S.value,id:String(e.id)},query:O()})}return ee(x,async e=>{e&&(await tn(),Rt(),await Q(T.page))},{immediate:!0}),(a,s)=>(m(),g(`div`,xe,[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`,Se,[_(`div`,Ce,[_(`div`,we,[s[25]||=_(`span`,{class:`small text-secondary text-nowrap`},`参赛组别`,-1),(m(!0),g(d,null,o(r(zt),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=>P.entry_group=e,class:`form-check-input`,type:`radio`,name:`manage-entry-group`,value:e,onChange:s[1]||=e=>Q(1)},null,40,Te),[[ne,P.entry_group]]),_(`label`,{class:`form-check-label`,for:`manage-entry-group-${e}`},p(e),9,Ee)]))),128))]),_(`div`,De,[l(_(`input`,{"onUpdate:modelValue":s[2]||=e=>P.keyword=e,type:`search`,class:`form-control`,placeholder:`搜索项目、姓名、学校、手机号、推荐方`,onKeydown:s[3]||=re(e=>Q(1),[`enter`])},null,544),[[u,P.keyword]])]),_(`div`,Oe,[l(_(`select`,{"onUpdate:modelValue":s[4]||=e=>P.track=e,class:`form-select`},[s[26]||=_(`option`,{value:``},`全部赛道`,-1),(m(!0),g(d,null,o(j.value,e=>(m(),g(`option`,{key:e.track_code,value:e.track_code},p(e.title),9,ke))),128))],512),[[h,P.track]])]),_(`div`,Ae,[l(_(`select`,{"onUpdate:modelValue":s[5]||=e=>P.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,P.review_result]])]),_(`div`,je,[l(_(`select`,{"onUpdate:modelValue":s[6]||=e=>P.review_eligible=e,class:`form-select`},[...s[28]||=[_(`option`,{value:``},`全部(是否参与评审)`,-1),_(`option`,{value:`1`},`参与评审`,-1),_(`option`,{value:`0`},`不参与评审`,-1)]],512),[[h,P.review_eligible]])]),_(`div`,Me,[l(_(`select`,{"onUpdate:modelValue":s[7]||=e=>P.signup_channel_id=e,class:`form-select`},[s[29]||=_(`option`,{value:``},`全部报名渠道`,-1),(m(!0),g(d,null,o(M.value,e=>(m(),g(`option`,{key:e.id,value:e.id},p(e.channel_name),9,Ne))),128))],512),[[h,P.signup_channel_id]])]),_(`div`,Pe,[l(_(`select`,{"onUpdate:modelValue":s[8]||=e=>P.public_source_channel_id=e,class:`form-select`},[s[30]||=_(`option`,{value:``},`全部用户渠道`,-1),(m(!0),g(d,null,o(N.value,e=>(m(),g(`option`,{key:e.id,value:e.id},p(e.source_name),9,Fe))),128))],512),[[h,P.public_source_channel_id]])]),_(`div`,Ie,[_(`button`,{type:`button`,class:`btn btn-primary px-3`,onClick:s[9]||=e=>Q(1)},`查询`),_(`button`,{type:`button`,class:`btn btn-light border px-3`,onClick:nn},`重置`)])]),_(`div`,Le,[_(`div`,Re,[s[34]||=_(`span`,{class:`small text-secondary`},`勾选用途:`,-1),_(`div`,ze,[_(`button`,{type:`button`,class:e([`btn`,I.value===`audit`?`btn-primary`:`btn-outline-primary`]),onClick:s[10]||=e=>Z(`audit`)},[s[31]||=n(` 审核选择 `,-1),L.value.length?(m(),g(`span`,Be,p(L.value.length),1)):t(``,!0)],2),_(`button`,{type:`button`,class:e([`btn`,I.value===`export`?`btn-primary`:`btn-outline-primary`]),onClick:s[11]||=e=>Z(`export`)},[s[32]||=n(` 导出选择 `,-1),R.value.length?(m(),g(`span`,Ve,p(R.value.length),1)):t(``,!0)],2)]),I.value===`audit`?(m(),g(d,{key:0},[_(`button`,{type:`button`,class:`btn btn-sm btn-manage-pass`,disabled:L.value.length===0,onClick:s[12]||=e=>{U.value=!0,G.value=`同意参赛。`}},` 通过 `,8,He),_(`button`,{type:`button`,class:`btn btn-sm btn-manage-reject`,disabled:L.value.length===0,onClick:s[13]||=e=>{W.value=!0,G.value=``}},` 未通过 `,8,Ue)],64)):(m(),g(`div`,We,[s[33]||=_(`button`,{class:`btn btn-primary btn-sm dropdown-toggle`,type:`button`,"data-bs-toggle":`dropdown`},` 导出 `,-1),_(`ul`,Ge,[_(`li`,null,[_(`button`,{class:`dropdown-item`,type:`button`,onClick:s[14]||=e=>$(`xlsx`)},`仅导出表格`)]),_(`li`,null,[_(`button`,{class:`dropdown-item`,type:`button`,disabled:R.value.length===0,onClick:s[15]||=e=>$(`selected`)},` 导出表格 + 所选附件 `,8,Ke)]),_(`li`,null,[_(`button`,{class:`dropdown-item`,type:`button`,onClick:s[16]||=e=>$(`all`)},`导出表格 + 全部附件`)])])]))]),_(`p`,qe,p(qt.value),1)])]),_(`div`,Je,[_(`table`,Ye,[_(`thead`,null,[_(`tr`,null,[_(`th`,Xe,[(m(),g(`input`,{key:`select-all-${I.value}-${T.page}`,class:`form-check-input`,type:`checkbox`,checked:Yt.value,"aria-label":`全选本页`,onChange:Xt},null,40,Ze))]),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`,Qe,[_(`button`,{type:`button`,class:`btn btn-link btn-sm p-0 text-decoration-none`,onClick:Qt},` 平均分 `+p(F.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`,$e,[...s[55]||=[_(`td`,{colspan:`22`,class:`text-center py-4 text-secondary`},`加载中…`,-1)]])):w.value.length===0?(m(),g(`tr`,et,[...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`,tt,[(m(),g(`input`,{key:`${I.value}-${T.page}-${t.id}`,class:`form-check-input`,type:`checkbox`,checked:Jt(t.id),disabled:!J(t),onChange:e=>Zt(t.id,t,e)},null,40,nt))]),_(`td`,rt,p((T.page-1)*T.perPage+n+1),1),_(`td`,null,p(t.project_code),1),_(`td`,it,p(t.project_name),1),_(`td`,null,p(t.player_name),1),_(`td`,at,p(t.school||`—`),1),_(`td`,null,p(t.entry_group||`—`),1),_(`td`,ot,p(t.track_title),1),_(`td`,st,p(Bt(t)),1),_(`td`,ct,p(t.recommend||`—`),1),_(`td`,null,p(t.contact_mobile||`—`),1),_(`td`,null,p(Ht(t)),1),_(`td`,null,p(t.submitter_mobile||`—`),1),_(`td`,lt,p(Vt(t)),1),_(`td`,null,p(t.files_count),1),_(`td`,null,p(Ut(t.submitted_at)),1),_(`td`,{class:e([`portal-sticky-right-5`,{"admin-total-pending-text":!t.review_fully_completed}])},p(Gt(t)),3),_(`td`,ut,p(t.review_progress),1),_(`td`,dt,p(Kt(t)),1),_(`td`,ft,[t.review_result===`passed`?(m(),g(`span`,pt,`通过`)):t.review_result===`rejected`?(m(),g(`span`,mt,`未通过`)):(m(),g(`span`,ht,`-`))]),_(`td`,null,p(t.review_eligible===!1?`否`:`是`),1),_(`td`,gt,[_(`button`,{type:`button`,class:`btn btn-sm btn-outline-primary`,onClick:e=>on(t)},`查看`,8,_t)])]))),128))])])]),i(ye,{page:T.page,"per-page":T.perPage,total:T.total,"onUpdate:page":$t,"onUpdate:perPage":en},null,8,[`page`,`per-page`,`total`]),z.value?(m(),g(`div`,vt,[_(`div`,yt,[_(`div`,bt,[_(`div`,xt,[s[57]||=_(`h5`,{class:`modal-title`},`导出报名材料`,-1),_(`button`,{type:`button`,class:`btn-close`,onClick:s[17]||=e=>z.value=!1})]),_(`div`,St,[_(`p`,Ct,`共 `+p(H.value||T.total)+` 份数据,模式:`+p(B.value),1)]),_(`div`,wt,[_(`button`,{type:`button`,class:`btn btn-light`,onClick:s[18]||=e=>z.value=!1},`取消`),_(`button`,{type:`button`,class:`btn btn-primary`,disabled:V.value,onClick:rn},p(V.value?`导出中…`:`开始导出`),9,Tt)])])])])):t(``,!0),U.value?(m(),g(`div`,Et,[_(`div`,Dt,[_(`div`,Ot,[s[58]||=_(`div`,{class:`modal-header`},[_(`h5`,{class:`modal-title`},`审核意见`)],-1),_(`div`,kt,[l(_(`textarea`,{"onUpdate:modelValue":s[19]||=e=>G.value=e,class:`form-control`,rows:`6`},null,512),[[u,G.value]])]),_(`div`,At,[_(`button`,{type:`button`,class:`btn btn-secondary`,onClick:s[20]||=e=>U.value=!1},`取消`),_(`button`,{type:`button`,class:`btn btn-success`,disabled:K.value,onClick:s[21]||=e=>an(`passed`)},` 确认通过 `,8,jt)])])])])):t(``,!0),W.value?(m(),g(`div`,Mt,[_(`div`,Nt,[_(`div`,Pt,[s[59]||=_(`div`,{class:`modal-header`},[_(`h5`,{class:`modal-title`},`审核意见`)],-1),_(`div`,Ft,[l(_(`textarea`,{"onUpdate:modelValue":s[22]||=e=>G.value=e,class:`form-control`,rows:`8`},null,512),[[u,G.value]])]),_(`div`,It,[_(`button`,{type:`button`,class:`btn btn-secondary`,onClick:s[23]||=e=>W.value=!1},`取消`),_(`button`,{type:`button`,class:`btn btn-warning text-dark`,disabled:K.value,onClick:s[24]||=e=>an(`rejected`)},` 确认未通过 `,8,Lt)])])])])):t(``,!0)]))}});export{b as default}; \ No newline at end of file diff --git a/public/admin/assets/ManageProjectsView-DHJkJNz3.js b/public/admin/assets/ManageProjectsView-DHJkJNz3.js new file mode 100644 index 0000000..5fe2863 --- /dev/null +++ b/public/admin/assets/ManageProjectsView-DHJkJNz3.js @@ -0,0 +1 @@ +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-t7bgup9e.js";import{o as se}from"./competitions-DP_OWCTo.js";import{n as ce}from"./publicSourceChannels-DRre41RG.js";import{r as le}from"./signupChannels-CGEQ38uA.js";import{i as ue,n as de,o as fe}from"./applications-Dl5PbiPv.js";import{a as pe,n as me,o as he,r as ge,t as _e}from"./listPageState-9NPjbkq0.js";import{n as ve,r as ye,t as y}from"./entryGroups-mdEgVvvl.js";async function be(e,t){let{data:n}=await v.post(`/competitions/${e}/applications/batch-review-result`,t);return n}var xe={class:`container-fluid p-3 p-md-4`},Se={class:`filter-panel mb-3`},Ce={class:`row g-2 align-items-center`},we={class:`col-12 d-flex flex-wrap align-items-center gap-3`},Te=[`id`,`value`],Ee=[`for`],De={class:`col-md-3`},Oe={class:`col-md-2`},ke=[`value`],Ae={class:`col-md-2`},je={class:`col-md-2`},Me={class:`col-md-2`},Ne=[`value`],Pe={class:`col-md-2`},Fe=[`value`],Ie={class:`col-12 col-md-auto d-flex gap-2`},Le={class:`selection-toolbar mt-2`},Re={class:`d-flex flex-wrap align-items-center gap-2`},ze={class:`btn-group btn-group-sm portal-selection-mode-group`,role:`group`},Be={key:0,class:`badge bg-light text-dark ms-1`},Ve={key:0,class:`badge bg-light text-dark ms-1`},He=[`disabled`],Ue=[`disabled`],We={key:1,class:`dropdown`},Ge={class:`dropdown-menu dropdown-menu-end`},Ke=[`disabled`],qe={class:`small text-secondary mb-0 mt-2`},Je={class:`portal-table-scroll table-panel`},Ye={class:`table table-hover align-middle mb-0 admin-list-table portal-data-table`},Xe={class:`text-center portal-sticky-left`,style:{width:`2.5rem`}},Ze=[`checked`],Qe={class:`portal-sticky-right-3`},$e={key:0},et={key:1},tt={class:`text-center portal-sticky-left`},nt=[`checked`,`disabled`,`onChange`],rt={class:`text-secondary`},it={class:`cell-wrap`},at={class:`cell-wrap`},ot={class:`cell-wrap`},st={class:`cell-wrap`},ct={class:`cell-wrap`},lt={class:`cell-wrap`},ut={class:`portal-sticky-right-4`},dt={class:`portal-sticky-right-3`},ft={class:`portal-sticky-right-2`},pt={key:0,class:`admin-manage-status-tag admin-manage-status-pass`},mt={key:1,class:`admin-manage-status-tag admin-manage-status-fail`},ht={key:2},gt={class:`portal-sticky-right-1`},_t=[`onClick`],vt={key:0,class:`modal fade show d-block`,tabindex:`-1`,style:{background:`rgba(0,0,0,.35)`}},yt={class:`modal-dialog modal-dialog-centered`},bt={class:`modal-content`},xt={class:`modal-header`},St={class:`modal-body`},Ct={class:`mb-0`},wt={class:`modal-footer`},Tt=[`disabled`],Et={key:1,class:`modal fade show d-block`,tabindex:`-1`,style:{background:`rgba(0,0,0,.35)`}},Dt={class:`modal-dialog modal-dialog-centered modal-lg`},Ot={class:`modal-content`},kt={class:`modal-body`},At={class:`modal-footer`},jt=[`disabled`],Mt={key:2,class:`modal fade show d-block`,tabindex:`-1`,style:{background:`rgba(0,0,0,.35)`}},Nt={class:`modal-dialog modal-dialog-centered modal-lg`},Pt={class:`modal-content`},Ft={class:`modal-body`},It={class:`modal-footer`},Lt=[`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 _e(`manage-projects`,S.value)}function D(){let e={};return P.keyword.trim()&&(e.keyword=P.keyword.trim()),P.track&&(e.track=P.track),P.entry_group&&(e.entry_group=P.entry_group),P.review_result&&(e.review_result=P.review_result),P.review_eligible&&(e.review_eligible=P.review_eligible),P.signup_channel_id!==``&&(e.signup_channel_id=String(P.signup_channel_id)),P.public_source_channel_id!==``&&(e.public_source_channel_id=String(P.public_source_channel_id)),F.value!==`desc`&&(e.sort_dir=F.value),e}function O(){return me({page:T.page,perPage:T.perPage,filters:D()})}function k(){let e=E();e.endsWith(`.`)||he(e,{page:T.page,perPage:T.perPage,filters:D()})}function Rt(){let e=pe(E(),v.query);T.page=e.page,T.perPage=e.perPage,P.keyword=e.filters.keyword??``,P.track=e.filters.track??``,e.filters.entry_group&&(P.entry_group=e.filters.entry_group),P.review_result=e.filters.review_result===`passed`||e.filters.review_result===`rejected`||e.filters.review_result===`pending`?e.filters.review_result:``,(e.filters.review_eligible===`1`||e.filters.review_eligible===`0`)&&(P.review_eligible=e.filters.review_eligible),P.signup_channel_id=e.filters.signup_channel_id?Number(e.filters.signup_channel_id):``,P.public_source_channel_id=e.filters.public_source_channel_id?Number(e.filters.public_source_channel_id):``,(e.filters.sort_dir===`asc`||e.filters.sort_dir===`desc`)&&(F.value=e.filters.sort_dir)}function A(){let e=O();ge(e,v.query)||b.replace({name:`manage-projects`,params:{slug:S.value},query:e})}let j=s([]),M=s([]),N=s([]),P=f({keyword:``,track:``,entry_group:y,review_result:``,review_eligible:`1`,signup_channel_id:``,public_source_channel_id:``}),zt=ve,F=s(`desc`),I=s(`audit`),L=s([]),R=s([]),z=s(!1),B=s(`xlsx`),V=s(!1),H=s(0),U=s(!1),W=s(!1),G=s(``),K=s(!1);function q(e){let t={page:e,per_page:T.perPage,status:`submitted`,sort_by:`team_avg`,sort_dir:F.value},n=P.keyword.trim();return n&&(t.keyword=n),P.track&&(t.track=P.track),P.entry_group&&(t.entry_group=P.entry_group),(P.review_result===`passed`||P.review_result===`rejected`||P.review_result===`pending`)&&(t.review_result=P.review_result),P.review_eligible===`1`&&(t.review_eligible=!0),P.review_eligible===`0`&&(t.review_eligible=!1),P.signup_channel_id!==``&&(t.signup_channel_id=Number(P.signup_channel_id)),P.public_source_channel_id!==``&&(t.public_source_channel_id=Number(P.public_source_channel_id)),t}function Bt(e){return e.signup_channel?.channel_name||e.signup_channel_code||`—`}function Vt(e){return e.public_source_channel?`${e.public_source_channel.source_name}(${e.public_source_channel.source_code})`:e.public_source_code||`—`}function Ht(e){return e.submitter_name?.trim()||e.submitter_mobile?.trim()||`—`}function Ut(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 Wt(e){return e==null||Number.isNaN(e)?`-`:e.toFixed(2)}function Gt(e){return e.review_fully_completed?e.team_sum==null?`-`:e.team_sum.toFixed(2):`待评审`}function Kt(e){return Wt(e.team_avg)}function J(e){return I.value===`export`?!0:e.review_fully_completed}let Y=c(()=>I.value===`audit`?L.value:R.value);function X(e){I.value===`audit`?L.value=e:R.value=e}function Z(e){I.value=e}let qt=c(()=>I.value===`audit`?`当前勾选用于批量通过/未通过`:`当前勾选用于「导出表格 + 所选附件」,与审核勾选互不影响`);function Jt(e){return Y.value.includes(e)}let Yt=c(()=>{let e=w.value.filter(J),t=Y.value;return e.length>0&&e.every(e=>t.includes(e.id))});function Xt(e){let t=e.target.checked,n=w.value.filter(J).map(e=>e.id),r=Y.value;X(t?Array.from(new Set([...r,...n])):r.filter(e=>!n.includes(e)))}function Zt(e,t,n){if(!J(t)){n.target.checked=!1;return}let r=n.target.checked,i=[...Y.value];if(r)i.includes(e)||i.push(e);else{let t=i.indexOf(e);t>=0&&i.splice(t,1)}X(i)}function Qt(){F.value=F.value===`desc`?`asc`:`desc`,Q(1)}function $t(e){Q(e)}function en(e){T.perPage=e,Q(1)}async function tn(){let e=x.value;if(!e)return;let[t,n,r]=await Promise.all([se(e),le(e),ce()]);j.value=t,M.value=n,N.value=r}async function Q(e=T.page){let t=x.value;if(t){C.value=!0,T.page=e,k(),A();try{let n=await fe(t,q(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,k(),A())}finally{C.value=!1}}}function nn(){P.keyword=``,P.track=``,P.entry_group=y,P.review_result=``,P.review_eligible=`1`,P.signup_channel_id=``,P.public_source_channel_id=``,L.value=[],R.value=[],Q(1)}async function $(e){let t=x.value;if(t){if(e===`selected`&&R.value.length===0){ie.warning(`请切换到「导出选择」并勾选要导出附件的项目`);return}B.value=e,z.value=!0;try{H.value=(await ue(t,{mode:e,...q(T.page),application_ids:e===`selected`?R.value:void 0})).total}catch{H.value=T.total}}}async function rn(){let e=x.value;if(e){V.value=!0;try{await de(e,{mode:B.value,...q(T.page),application_ids:B.value===`selected`?R.value:void 0}),z.value=!1}finally{V.value=!1}}}async function an(e){let t=x.value;if(!(!t||L.value.length===0)){K.value=!0;try{await be(t,{application_ids:L.value,result:e,note:G.value.trim()||void 0}),U.value=!1,W.value=!1,G.value=``,L.value=[],await Q(T.page)}finally{K.value=!1}}}function on(e){k(),b.push({name:`manage-project-detail`,params:{slug:S.value,id:String(e.id)},query:O()})}return ee(x,async e=>{e&&(await tn(),Rt(),await Q(T.page))},{immediate:!0}),(a,s)=>(m(),g(`div`,xe,[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`,Se,[_(`div`,Ce,[_(`div`,we,[s[25]||=_(`span`,{class:`small text-secondary text-nowrap`},`参赛组别`,-1),(m(!0),g(d,null,o(r(zt),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=>P.entry_group=e,class:`form-check-input`,type:`radio`,name:`manage-entry-group`,value:e,onChange:s[1]||=e=>Q(1)},null,40,Te),[[ne,P.entry_group]]),_(`label`,{class:`form-check-label`,for:`manage-entry-group-${e}`},p(e),9,Ee)]))),128))]),_(`div`,De,[l(_(`input`,{"onUpdate:modelValue":s[2]||=e=>P.keyword=e,type:`search`,class:`form-control`,placeholder:`搜索项目、姓名、学校、手机号、推荐方`,onKeydown:s[3]||=re(e=>Q(1),[`enter`])},null,544),[[u,P.keyword]])]),_(`div`,Oe,[l(_(`select`,{"onUpdate:modelValue":s[4]||=e=>P.track=e,class:`form-select`},[s[26]||=_(`option`,{value:``},`全部赛道`,-1),(m(!0),g(d,null,o(j.value,e=>(m(),g(`option`,{key:e.track_code,value:e.track_code},p(e.title),9,ke))),128))],512),[[h,P.track]])]),_(`div`,Ae,[l(_(`select`,{"onUpdate:modelValue":s[5]||=e=>P.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,P.review_result]])]),_(`div`,je,[l(_(`select`,{"onUpdate:modelValue":s[6]||=e=>P.review_eligible=e,class:`form-select`},[...s[28]||=[_(`option`,{value:``},`全部(是否参与评审)`,-1),_(`option`,{value:`1`},`参与评审`,-1),_(`option`,{value:`0`},`不参与评审`,-1)]],512),[[h,P.review_eligible]])]),_(`div`,Me,[l(_(`select`,{"onUpdate:modelValue":s[7]||=e=>P.signup_channel_id=e,class:`form-select`},[s[29]||=_(`option`,{value:``},`全部报名渠道`,-1),(m(!0),g(d,null,o(M.value,e=>(m(),g(`option`,{key:e.id,value:e.id},p(e.channel_name),9,Ne))),128))],512),[[h,P.signup_channel_id]])]),_(`div`,Pe,[l(_(`select`,{"onUpdate:modelValue":s[8]||=e=>P.public_source_channel_id=e,class:`form-select`},[s[30]||=_(`option`,{value:``},`全部用户渠道`,-1),(m(!0),g(d,null,o(N.value,e=>(m(),g(`option`,{key:e.id,value:e.id},p(e.source_name),9,Fe))),128))],512),[[h,P.public_source_channel_id]])]),_(`div`,Ie,[_(`button`,{type:`button`,class:`btn btn-primary px-3`,onClick:s[9]||=e=>Q(1)},`查询`),_(`button`,{type:`button`,class:`btn btn-light border px-3`,onClick:nn},`重置`)])]),_(`div`,Le,[_(`div`,Re,[s[34]||=_(`span`,{class:`small text-secondary`},`勾选用途:`,-1),_(`div`,ze,[_(`button`,{type:`button`,class:e([`btn`,I.value===`audit`?`btn-primary`:`btn-outline-primary`]),onClick:s[10]||=e=>Z(`audit`)},[s[31]||=n(` 审核选择 `,-1),L.value.length?(m(),g(`span`,Be,p(L.value.length),1)):t(``,!0)],2),_(`button`,{type:`button`,class:e([`btn`,I.value===`export`?`btn-primary`:`btn-outline-primary`]),onClick:s[11]||=e=>Z(`export`)},[s[32]||=n(` 导出选择 `,-1),R.value.length?(m(),g(`span`,Ve,p(R.value.length),1)):t(``,!0)],2)]),I.value===`audit`?(m(),g(d,{key:0},[_(`button`,{type:`button`,class:`btn btn-sm btn-manage-pass`,disabled:L.value.length===0,onClick:s[12]||=e=>{U.value=!0,G.value=`同意参赛。`}},` 通过 `,8,He),_(`button`,{type:`button`,class:`btn btn-sm btn-manage-reject`,disabled:L.value.length===0,onClick:s[13]||=e=>{W.value=!0,G.value=``}},` 未通过 `,8,Ue)],64)):(m(),g(`div`,We,[s[33]||=_(`button`,{class:`btn btn-primary btn-sm dropdown-toggle`,type:`button`,"data-bs-toggle":`dropdown`},` 导出 `,-1),_(`ul`,Ge,[_(`li`,null,[_(`button`,{class:`dropdown-item`,type:`button`,onClick:s[14]||=e=>$(`xlsx`)},`仅导出表格`)]),_(`li`,null,[_(`button`,{class:`dropdown-item`,type:`button`,disabled:R.value.length===0,onClick:s[15]||=e=>$(`selected`)},` 导出表格 + 所选附件 `,8,Ke)]),_(`li`,null,[_(`button`,{class:`dropdown-item`,type:`button`,onClick:s[16]||=e=>$(`all`)},`导出表格 + 全部附件`)])])]))]),_(`p`,qe,p(qt.value),1)])]),_(`div`,Je,[_(`table`,Ye,[_(`thead`,null,[_(`tr`,null,[_(`th`,Xe,[(m(),g(`input`,{key:`select-all-${I.value}-${T.page}`,class:`form-check-input`,type:`checkbox`,checked:Yt.value,"aria-label":`全选本页`,onChange:Xt},null,40,Ze))]),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`,Qe,[_(`button`,{type:`button`,class:`btn btn-link btn-sm p-0 text-decoration-none`,onClick:Qt},` 平均分 `+p(F.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`,$e,[...s[55]||=[_(`td`,{colspan:`22`,class:`text-center py-4 text-secondary`},`加载中…`,-1)]])):w.value.length===0?(m(),g(`tr`,et,[...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`,tt,[(m(),g(`input`,{key:`${I.value}-${T.page}-${t.id}`,class:`form-check-input`,type:`checkbox`,checked:Jt(t.id),disabled:!J(t),onChange:e=>Zt(t.id,t,e)},null,40,nt))]),_(`td`,rt,p((T.page-1)*T.perPage+n+1),1),_(`td`,null,p(t.project_code),1),_(`td`,it,p(t.project_name),1),_(`td`,null,p(t.player_name),1),_(`td`,at,p(t.school||`—`),1),_(`td`,null,p(t.entry_group||`—`),1),_(`td`,ot,p(t.track_title),1),_(`td`,st,p(Bt(t)),1),_(`td`,ct,p(t.recommend||`—`),1),_(`td`,null,p(t.contact_mobile||`—`),1),_(`td`,null,p(Ht(t)),1),_(`td`,null,p(t.submitter_mobile||`—`),1),_(`td`,lt,p(Vt(t)),1),_(`td`,null,p(t.files_count),1),_(`td`,null,p(Ut(t.submitted_at)),1),_(`td`,{class:e([`portal-sticky-right-5`,{"admin-total-pending-text":!t.review_fully_completed}])},p(Gt(t)),3),_(`td`,ut,p(t.review_progress),1),_(`td`,dt,p(Kt(t)),1),_(`td`,ft,[t.review_result===`passed`?(m(),g(`span`,pt,`通过`)):t.review_result===`rejected`?(m(),g(`span`,mt,`未通过`)):(m(),g(`span`,ht,`-`))]),_(`td`,null,p(t.review_eligible===!1?`否`:`是`),1),_(`td`,gt,[_(`button`,{type:`button`,class:`btn btn-sm btn-outline-primary`,onClick:e=>on(t)},`查看`,8,_t)])]))),128))])])]),i(ye,{page:T.page,"per-page":T.perPage,total:T.total,"onUpdate:page":$t,"onUpdate:perPage":en},null,8,[`page`,`per-page`,`total`]),z.value?(m(),g(`div`,vt,[_(`div`,yt,[_(`div`,bt,[_(`div`,xt,[s[57]||=_(`h5`,{class:`modal-title`},`导出报名材料`,-1),_(`button`,{type:`button`,class:`btn-close`,onClick:s[17]||=e=>z.value=!1})]),_(`div`,St,[_(`p`,Ct,`共 `+p(H.value||T.total)+` 份数据,模式:`+p(B.value),1)]),_(`div`,wt,[_(`button`,{type:`button`,class:`btn btn-light`,onClick:s[18]||=e=>z.value=!1},`取消`),_(`button`,{type:`button`,class:`btn btn-primary`,disabled:V.value,onClick:rn},p(V.value?`导出中…`:`开始导出`),9,Tt)])])])])):t(``,!0),U.value?(m(),g(`div`,Et,[_(`div`,Dt,[_(`div`,Ot,[s[58]||=_(`div`,{class:`modal-header`},[_(`h5`,{class:`modal-title`},`审核意见`)],-1),_(`div`,kt,[l(_(`textarea`,{"onUpdate:modelValue":s[19]||=e=>G.value=e,class:`form-control`,rows:`6`},null,512),[[u,G.value]])]),_(`div`,At,[_(`button`,{type:`button`,class:`btn btn-secondary`,onClick:s[20]||=e=>U.value=!1},`取消`),_(`button`,{type:`button`,class:`btn btn-success`,disabled:K.value,onClick:s[21]||=e=>an(`passed`)},` 确认通过 `,8,jt)])])])])):t(``,!0),W.value?(m(),g(`div`,Mt,[_(`div`,Nt,[_(`div`,Pt,[s[59]||=_(`div`,{class:`modal-header`},[_(`h5`,{class:`modal-title`},`审核意见`)],-1),_(`div`,Ft,[l(_(`textarea`,{"onUpdate:modelValue":s[22]||=e=>G.value=e,class:`form-control`,rows:`8`},null,512),[[u,G.value]])]),_(`div`,It,[_(`button`,{type:`button`,class:`btn btn-secondary`,onClick:s[23]||=e=>W.value=!1},`取消`),_(`button`,{type:`button`,class:`btn btn-warning text-dark`,disabled:K.value,onClick:s[24]||=e=>an(`rejected`)},` 确认未通过 `,8,Lt)])])])])):t(``,!0)]))}});export{b as default}; \ No newline at end of file diff --git a/public/admin/assets/ManageReviewersView-KhNc4lcH.js b/public/admin/assets/ManageReviewersView-1PCsDj4N.js similarity index 69% rename from public/admin/assets/ManageReviewersView-KhNc4lcH.js rename to public/admin/assets/ManageReviewersView-1PCsDj4N.js index 5f151a0..1ec7e4c 100644 --- a/public/admin/assets/ManageReviewersView-KhNc4lcH.js +++ b/public/admin/assets/ManageReviewersView-1PCsDj4N.js @@ -1 +1 @@ -import{O as e,k as t,q as n,w as r}from"./vue.runtime.esm-bundler-OsdSFvn7.js";import{t as i}from"./_plugin-vue_export-helper-CXTkFu_Z.js";import{t as a}from"./ReviewerManageView-D2W38ovd.js";var o={class:`manage-reviewers-wrap`},s=i(t({__name:`ManageReviewersView`,setup(t){return(t,i)=>(n(),r(`div`,o,[e(a)]))}}),[[`__scopeId`,`data-v-d6e992f3`]]);export{s as default}; \ No newline at end of file +import{O as e,k as t,q as n,w as r}from"./vue.runtime.esm-bundler-OsdSFvn7.js";import{t as i}from"./_plugin-vue_export-helper-CXTkFu_Z.js";import{t as a}from"./ReviewerManageView-DQKBYPkH.js";var o={class:`manage-reviewers-wrap`},s=i(t({__name:`ManageReviewersView`,setup(t){return(t,i)=>(n(),r(`div`,o,[e(a)]))}}),[[`__scopeId`,`data-v-d6e992f3`]]);export{s as default}; \ No newline at end of file diff --git a/public/admin/assets/ParticipantImpersonateEntryView-B5jFxZk8.js b/public/admin/assets/ParticipantImpersonateEntryView-DKiE569p.js similarity index 91% rename from public/admin/assets/ParticipantImpersonateEntryView-B5jFxZk8.js rename to public/admin/assets/ParticipantImpersonateEntryView-DKiE569p.js index 56a101b..b425a41 100644 --- a/public/admin/assets/ParticipantImpersonateEntryView-B5jFxZk8.js +++ b/public/admin/assets/ParticipantImpersonateEntryView-DKiE569p.js @@ -1 +1 @@ -import{W as e,_t as t,in as n,k as r,q as i,w as a}from"./vue.runtime.esm-bundler-OsdSFvn7.js";import{a as o,d as s,n as c}from"./api-rQwE0AaH.js";import{l,u}from"./index-DAT5gpOZ.js";var d={class:`container py-5 text-center`},f={key:0,class:`text-danger`},p={key:1,class:`text-secondary`},m=r({__name:`ParticipantImpersonateEntryView`,setup(r){let m=l(),h=u(),g=t(``);return e(()=>{let e=String(m.params.slug??``).trim(),t=String(m.query.token??``).trim();if(!e||!t){g.value=`代登参数无效`;return}localStorage.setItem(s,t),localStorage.setItem(o,e),sessionStorage.setItem(c,`1`),h.replace({name:`participant-apply`,params:{slug:e}})}),(e,t)=>(i(),a(`div`,d,[g.value?(i(),a(`p`,f,n(g.value),1)):(i(),a(`p`,p,`正在进入选手端…`))]))}});export{m as default}; \ No newline at end of file +import{W as e,_t as t,in as n,k as r,q as i,w as a}from"./vue.runtime.esm-bundler-OsdSFvn7.js";import{a as o,d as s,n as c}from"./api-rQwE0AaH.js";import{l,u}from"./index-t7bgup9e.js";var d={class:`container py-5 text-center`},f={key:0,class:`text-danger`},p={key:1,class:`text-secondary`},m=r({__name:`ParticipantImpersonateEntryView`,setup(r){let m=l(),h=u(),g=t(``);return e(()=>{let e=String(m.params.slug??``).trim(),t=String(m.query.token??``).trim();if(!e||!t){g.value=`代登参数无效`;return}localStorage.setItem(s,t),localStorage.setItem(o,e),sessionStorage.setItem(c,`1`),h.replace({name:`participant-apply`,params:{slug:e}})}),(e,t)=>(i(),a(`div`,d,[g.value?(i(),a(`p`,f,n(g.value),1)):(i(),a(`p`,p,`正在进入选手端…`))]))}});export{m as default}; \ No newline at end of file diff --git a/public/admin/assets/ParticipantLandingView-DPqAhu6F.js b/public/admin/assets/ParticipantLandingView-Z99ohwU5.js similarity index 93% rename from public/admin/assets/ParticipantLandingView-DPqAhu6F.js rename to public/admin/assets/ParticipantLandingView-Z99ohwU5.js index c7cee22..140b6fc 100644 --- a/public/admin/assets/ParticipantLandingView-DPqAhu6F.js +++ b/public/admin/assets/ParticipantLandingView-Z99ohwU5.js @@ -1 +1 @@ -import{C as e,D as t,_t as n,ct as r,d as i,in as a,k as o,p as s,q as c,w as l,x as u}from"./vue.runtime.esm-bundler-OsdSFvn7.js";import{u as d}from"./index-DAT5gpOZ.js";/* empty css */var f={class:`min-vh-100 d-flex flex-column bg-light`},p={class:`container py-5 flex-grow-1`},m={class:`mx-auto card shadow-sm`,style:{"max-width":`420px`}},h={class:`card-body p-4`},g={key:0,class:`text-danger small mb-2`},_=o({__name:`ParticipantLandingView`,setup(o){let _=d(),v=n(``),y=n(``);function b(){let e=v.value.trim();if(y.value=``,!e){y.value=`请填写访问地址`;return}_.push({name:`participant-login`,params:{slug:e}})}return(n,o)=>(c(),l(`div`,f,[u(`div`,p,[u(`div`,m,[u(`div`,h,[o[1]||=u(`h1`,{class:`h5 mb-2`},`赛事报名入口`,-1),o[2]||=u(`p`,{class:`text-muted small mb-3`},[t(` 请输入主办方提供的`),u(`strong`,null,`访问地址`),t(`(与后台赛事「访问地址」一致,可为中文);也可直接使用完整链接 `),u(`code`,{class:`small`},`/c/您的访问地址/login`),t(`。 `)],-1),o[3]||=u(`label`,{class:`form-label small`},`访问地址(slug)`,-1),r(u(`input`,{"onUpdate:modelValue":o[0]||=e=>v.value=e,type:`text`,class:`form-control mb-2`,autocomplete:`off`,placeholder:`例如:新消费大赛-2026`,onKeyup:s(b,[`enter`])},null,544),[[i,v.value,void 0,{trim:!0}]]),y.value?(c(),l(`p`,g,a(y.value),1)):e(``,!0),u(`button`,{type:`button`,class:`btn btn-danger w-100`,onClick:b},`前往登录`)])])])]))}});export{_ as default}; \ No newline at end of file +import{C as e,D as t,_t as n,ct as r,d as i,in as a,k as o,p as s,q as c,w as l,x as u}from"./vue.runtime.esm-bundler-OsdSFvn7.js";import{u as d}from"./index-t7bgup9e.js";/* empty css */var f={class:`min-vh-100 d-flex flex-column bg-light`},p={class:`container py-5 flex-grow-1`},m={class:`mx-auto card shadow-sm`,style:{"max-width":`420px`}},h={class:`card-body p-4`},g={key:0,class:`text-danger small mb-2`},_=o({__name:`ParticipantLandingView`,setup(o){let _=d(),v=n(``),y=n(``);function b(){let e=v.value.trim();if(y.value=``,!e){y.value=`请填写访问地址`;return}_.push({name:`participant-login`,params:{slug:e}})}return(n,o)=>(c(),l(`div`,f,[u(`div`,p,[u(`div`,m,[u(`div`,h,[o[1]||=u(`h1`,{class:`h5 mb-2`},`赛事报名入口`,-1),o[2]||=u(`p`,{class:`text-muted small mb-3`},[t(` 请输入主办方提供的`),u(`strong`,null,`访问地址`),t(`(与后台赛事「访问地址」一致,可为中文);也可直接使用完整链接 `),u(`code`,{class:`small`},`/c/您的访问地址/login`),t(`。 `)],-1),o[3]||=u(`label`,{class:`form-label small`},`访问地址(slug)`,-1),r(u(`input`,{"onUpdate:modelValue":o[0]||=e=>v.value=e,type:`text`,class:`form-control mb-2`,autocomplete:`off`,placeholder:`例如:新消费大赛-2026`,onKeyup:s(b,[`enter`])},null,544),[[i,v.value,void 0,{trim:!0}]]),y.value?(c(),l(`p`,g,a(y.value),1)):e(``,!0),u(`button`,{type:`button`,class:`btn btn-danger w-100`,onClick:b},`前往登录`)])])])]))}});export{_ as default}; \ No newline at end of file diff --git a/public/admin/assets/PublicSourceChannelManageView-BxfNT_cP.js b/public/admin/assets/PublicSourceChannelManageView-B1RkKHAq.js similarity index 99% rename from public/admin/assets/PublicSourceChannelManageView-BxfNT_cP.js rename to public/admin/assets/PublicSourceChannelManageView-B1RkKHAq.js index cd9b136..32acd1d 100644 --- a/public/admin/assets/PublicSourceChannelManageView-BxfNT_cP.js +++ b/public/admin/assets/PublicSourceChannelManageView-B1RkKHAq.js @@ -1,4 +1,4 @@ -import{t as e}from"./rolldown-runtime-BYbx6iT9.js";import{C as t,D as n,Et as r,O as i,Q as a,R as o,S as s,W as c,Z as l,_t as u,b as d,ct as f,ht as p,in as m,k as h,m as g,q as _,st as v,w as y,x as b}from"./vue.runtime.esm-bundler-OsdSFvn7.js";import{_ as x,d as S,f as C,g as ee,h as te,m as w,p as T,v as ne}from"./index-DAT5gpOZ.js";import{t as E}from"./_plugin-vue_export-helper-CXTkFu_Z.js";import{n as D,r as O,t as k}from"./publicSourceChannels-COAaqE-_.js";var A=e(((e,t)=>{t.exports=function(){return typeof Promise==`function`&&Promise.prototype&&Promise.prototype.then}})),j=e((e=>{var t,n=[0,26,44,70,100,134,172,196,242,292,346,404,466,532,581,655,733,815,901,991,1085,1156,1258,1364,1474,1588,1706,1828,1921,2051,2185,2323,2465,2611,2761,2876,3034,3196,3362,3532,3706];e.getSymbolSize=function(e){if(!e)throw Error(`"version" cannot be null or undefined`);if(e<1||e>40)throw Error(`"version" should be in range from 1 to 40`);return e*4+17},e.getSymbolTotalCodewords=function(e){return n[e]},e.getBCHDigit=function(e){let t=0;for(;e!==0;)t++,e>>>=1;return t},e.setToSJISFunction=function(e){if(typeof e!=`function`)throw Error(`"toSJISFunc" is not a valid function.`);t=e},e.isKanjiModeEnabled=function(){return t!==void 0},e.toSJIS=function(e){return t(e)}})),M=e((e=>{e.L={bit:1},e.M={bit:0},e.Q={bit:3},e.H={bit:2};function t(t){if(typeof t!=`string`)throw Error(`Param is not a string`);switch(t.toLowerCase()){case`l`:case`low`:return e.L;case`m`:case`medium`:return e.M;case`q`:case`quartile`:return e.Q;case`h`:case`high`:return e.H;default:throw Error(`Unknown EC Level: `+t)}}e.isValid=function(e){return e&&e.bit!==void 0&&e.bit>=0&&e.bit<4},e.from=function(n,r){if(e.isValid(n))return n;try{return t(n)}catch{return r}}})),N=e(((e,t)=>{function n(){this.buffer=[],this.length=0}n.prototype={get:function(e){let t=Math.floor(e/8);return(this.buffer[t]>>>7-e%8&1)==1},put:function(e,t){for(let n=0;n>>t-n-1&1)==1)},getLengthInBits:function(){return this.length},putBit:function(e){let t=Math.floor(this.length/8);this.buffer.length<=t&&this.buffer.push(0),e&&(this.buffer[t]|=128>>>this.length%8),this.length++}},t.exports=n})),P=e(((e,t)=>{function n(e){if(!e||e<1)throw Error(`BitMatrix size must be defined and greater than 0`);this.size=e,this.data=new Uint8Array(e*e),this.reservedBit=new Uint8Array(e*e)}n.prototype.set=function(e,t,n,r){let i=e*this.size+t;this.data[i]=n,r&&(this.reservedBit[i]=!0)},n.prototype.get=function(e,t){return this.data[e*this.size+t]},n.prototype.xor=function(e,t,n){this.data[e*this.size+t]^=n},n.prototype.isReserved=function(e,t){return this.reservedBit[e*this.size+t]},t.exports=n})),F=e((e=>{var t=j().getSymbolSize;e.getRowColCoords=function(e){if(e===1)return[];let n=Math.floor(e/7)+2,r=t(e),i=r===145?26:Math.ceil((r-13)/(2*n-2))*2,a=[r-7];for(let e=1;e{var t=j().getSymbolSize,n=7;e.getPositions=function(e){let r=t(e);return[[0,0],[r-n,0],[0,r-n]]}})),L=e((e=>{e.Patterns={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7};var t={N1:3,N2:3,N3:40,N4:10};e.isValid=function(e){return e!=null&&e!==``&&!isNaN(e)&&e>=0&&e<=7},e.from=function(t){return e.isValid(t)?parseInt(t,10):void 0},e.getPenaltyN1=function(e){let n=e.size,r=0,i=0,a=0,o=null,s=null;for(let c=0;c=5&&(r+=t.N1+(i-5)),o=n,i=1),n=e.get(l,c),n===s?a++:(a>=5&&(r+=t.N1+(a-5)),s=n,a=1)}i>=5&&(r+=t.N1+(i-5)),a>=5&&(r+=t.N1+(a-5))}return r},e.getPenaltyN2=function(e){let n=e.size,r=0;for(let t=0;t=10&&(i===1488||i===93)&&r++,a=a<<1&2047|e.get(o,t),o>=10&&(a===1488||a===93)&&r++}return r*t.N3},e.getPenaltyN4=function(e){let n=0,r=e.data.length;for(let t=0;t{var t=M(),n=[1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,4,1,2,4,4,2,4,4,4,2,4,6,5,2,4,6,6,2,5,8,8,4,5,8,8,4,5,8,11,4,8,10,11,4,9,12,16,4,9,16,16,6,10,12,18,6,10,17,16,6,11,16,19,6,13,18,21,7,14,21,25,8,16,20,25,8,17,23,25,9,17,23,34,9,18,25,30,10,20,27,32,12,21,29,35,12,23,34,37,12,25,34,40,13,26,35,42,14,28,38,45,15,29,40,48,16,31,43,51,17,33,45,54,18,35,48,57,19,37,51,60,19,38,53,63,20,40,56,66,21,43,59,70,22,45,62,74,24,47,65,77,25,49,68,81],r=[7,10,13,17,10,16,22,28,15,26,36,44,20,36,52,64,26,48,72,88,36,64,96,112,40,72,108,130,48,88,132,156,60,110,160,192,72,130,192,224,80,150,224,264,96,176,260,308,104,198,288,352,120,216,320,384,132,240,360,432,144,280,408,480,168,308,448,532,180,338,504,588,196,364,546,650,224,416,600,700,224,442,644,750,252,476,690,816,270,504,750,900,300,560,810,960,312,588,870,1050,336,644,952,1110,360,700,1020,1200,390,728,1050,1260,420,784,1140,1350,450,812,1200,1440,480,868,1290,1530,510,924,1350,1620,540,980,1440,1710,570,1036,1530,1800,570,1064,1590,1890,600,1120,1680,1980,630,1204,1770,2100,660,1260,1860,2220,720,1316,1950,2310,750,1372,2040,2430];e.getBlocksCount=function(e,r){switch(r){case t.L:return n[(e-1)*4+0];case t.M:return n[(e-1)*4+1];case t.Q:return n[(e-1)*4+2];case t.H:return n[(e-1)*4+3];default:return}},e.getTotalCodewordsCount=function(e,n){switch(n){case t.L:return r[(e-1)*4+0];case t.M:return r[(e-1)*4+1];case t.Q:return r[(e-1)*4+2];case t.H:return r[(e-1)*4+3];default:return}}})),z=e((e=>{var t=new Uint8Array(512),n=new Uint8Array(256);(function(){let e=1;for(let r=0;r<255;r++)t[r]=e,n[e]=r,e<<=1,e&256&&(e^=285);for(let e=255;e<512;e++)t[e]=t[e-255]})(),e.log=function(e){if(e<1)throw Error(`log(`+e+`)`);return n[e]},e.exp=function(e){return t[e]},e.mul=function(e,r){return e===0||r===0?0:t[n[e]+n[r]]}})),B=e((e=>{var t=z();e.mul=function(e,n){let r=new Uint8Array(e.length+n.length-1);for(let i=0;i=0;){let e=r[0];for(let i=0;i{var n=B();function r(e){this.genPoly=void 0,this.degree=e,this.degree&&this.initialize(this.degree)}r.prototype.initialize=function(e){this.degree=e,this.genPoly=n.generateECPolynomial(this.degree)},r.prototype.encode=function(e){if(!this.genPoly)throw Error(`Encoder not initialized`);let t=new Uint8Array(e.length+this.degree);t.set(e);let r=n.mod(t,this.genPoly),i=this.degree-r.length;if(i>0){let e=new Uint8Array(this.degree);return e.set(r,i),e}return r},t.exports=r})),H=e((e=>{e.isValid=function(e){return!isNaN(e)&&e>=1&&e<=40}})),U=e((e=>{var t=`[0-9]+`,n=`[A-Z $%*+\\-./:]+`,r=`(?:[u3000-u303F]|[u3040-u309F]|[u30A0-u30FF]|[uFF00-uFFEF]|[u4E00-u9FAF]|[u2605-u2606]|[u2190-u2195]|u203B|[u2010u2015u2018u2019u2025u2026u201Cu201Du2225u2260]|[u0391-u0451]|[u00A7u00A8u00B1u00B4u00D7u00F7])+`;r=r.replace(/u/g,`\\u`);var i=`(?:(?![A-Z0-9 $%*+\\-./:]|`+r+`)(?:.|[\r +import{t as e}from"./rolldown-runtime-BYbx6iT9.js";import{C as t,D as n,Et as r,O as i,Q as a,R as o,S as s,W as c,Z as l,_t as u,b as d,ct as f,ht as p,in as m,k as h,m as g,q as _,st as v,w as y,x as b}from"./vue.runtime.esm-bundler-OsdSFvn7.js";import{_ as x,d as S,f as C,g as ee,h as te,m as w,p as T,v as ne}from"./index-t7bgup9e.js";import{t as E}from"./_plugin-vue_export-helper-CXTkFu_Z.js";import{n as D,r as O,t as k}from"./publicSourceChannels-DRre41RG.js";var A=e(((e,t)=>{t.exports=function(){return typeof Promise==`function`&&Promise.prototype&&Promise.prototype.then}})),j=e((e=>{var t,n=[0,26,44,70,100,134,172,196,242,292,346,404,466,532,581,655,733,815,901,991,1085,1156,1258,1364,1474,1588,1706,1828,1921,2051,2185,2323,2465,2611,2761,2876,3034,3196,3362,3532,3706];e.getSymbolSize=function(e){if(!e)throw Error(`"version" cannot be null or undefined`);if(e<1||e>40)throw Error(`"version" should be in range from 1 to 40`);return e*4+17},e.getSymbolTotalCodewords=function(e){return n[e]},e.getBCHDigit=function(e){let t=0;for(;e!==0;)t++,e>>>=1;return t},e.setToSJISFunction=function(e){if(typeof e!=`function`)throw Error(`"toSJISFunc" is not a valid function.`);t=e},e.isKanjiModeEnabled=function(){return t!==void 0},e.toSJIS=function(e){return t(e)}})),M=e((e=>{e.L={bit:1},e.M={bit:0},e.Q={bit:3},e.H={bit:2};function t(t){if(typeof t!=`string`)throw Error(`Param is not a string`);switch(t.toLowerCase()){case`l`:case`low`:return e.L;case`m`:case`medium`:return e.M;case`q`:case`quartile`:return e.Q;case`h`:case`high`:return e.H;default:throw Error(`Unknown EC Level: `+t)}}e.isValid=function(e){return e&&e.bit!==void 0&&e.bit>=0&&e.bit<4},e.from=function(n,r){if(e.isValid(n))return n;try{return t(n)}catch{return r}}})),N=e(((e,t)=>{function n(){this.buffer=[],this.length=0}n.prototype={get:function(e){let t=Math.floor(e/8);return(this.buffer[t]>>>7-e%8&1)==1},put:function(e,t){for(let n=0;n>>t-n-1&1)==1)},getLengthInBits:function(){return this.length},putBit:function(e){let t=Math.floor(this.length/8);this.buffer.length<=t&&this.buffer.push(0),e&&(this.buffer[t]|=128>>>this.length%8),this.length++}},t.exports=n})),P=e(((e,t)=>{function n(e){if(!e||e<1)throw Error(`BitMatrix size must be defined and greater than 0`);this.size=e,this.data=new Uint8Array(e*e),this.reservedBit=new Uint8Array(e*e)}n.prototype.set=function(e,t,n,r){let i=e*this.size+t;this.data[i]=n,r&&(this.reservedBit[i]=!0)},n.prototype.get=function(e,t){return this.data[e*this.size+t]},n.prototype.xor=function(e,t,n){this.data[e*this.size+t]^=n},n.prototype.isReserved=function(e,t){return this.reservedBit[e*this.size+t]},t.exports=n})),F=e((e=>{var t=j().getSymbolSize;e.getRowColCoords=function(e){if(e===1)return[];let n=Math.floor(e/7)+2,r=t(e),i=r===145?26:Math.ceil((r-13)/(2*n-2))*2,a=[r-7];for(let e=1;e{var t=j().getSymbolSize,n=7;e.getPositions=function(e){let r=t(e);return[[0,0],[r-n,0],[0,r-n]]}})),L=e((e=>{e.Patterns={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7};var t={N1:3,N2:3,N3:40,N4:10};e.isValid=function(e){return e!=null&&e!==``&&!isNaN(e)&&e>=0&&e<=7},e.from=function(t){return e.isValid(t)?parseInt(t,10):void 0},e.getPenaltyN1=function(e){let n=e.size,r=0,i=0,a=0,o=null,s=null;for(let c=0;c=5&&(r+=t.N1+(i-5)),o=n,i=1),n=e.get(l,c),n===s?a++:(a>=5&&(r+=t.N1+(a-5)),s=n,a=1)}i>=5&&(r+=t.N1+(i-5)),a>=5&&(r+=t.N1+(a-5))}return r},e.getPenaltyN2=function(e){let n=e.size,r=0;for(let t=0;t=10&&(i===1488||i===93)&&r++,a=a<<1&2047|e.get(o,t),o>=10&&(a===1488||a===93)&&r++}return r*t.N3},e.getPenaltyN4=function(e){let n=0,r=e.data.length;for(let t=0;t{var t=M(),n=[1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,4,1,2,4,4,2,4,4,4,2,4,6,5,2,4,6,6,2,5,8,8,4,5,8,8,4,5,8,11,4,8,10,11,4,9,12,16,4,9,16,16,6,10,12,18,6,10,17,16,6,11,16,19,6,13,18,21,7,14,21,25,8,16,20,25,8,17,23,25,9,17,23,34,9,18,25,30,10,20,27,32,12,21,29,35,12,23,34,37,12,25,34,40,13,26,35,42,14,28,38,45,15,29,40,48,16,31,43,51,17,33,45,54,18,35,48,57,19,37,51,60,19,38,53,63,20,40,56,66,21,43,59,70,22,45,62,74,24,47,65,77,25,49,68,81],r=[7,10,13,17,10,16,22,28,15,26,36,44,20,36,52,64,26,48,72,88,36,64,96,112,40,72,108,130,48,88,132,156,60,110,160,192,72,130,192,224,80,150,224,264,96,176,260,308,104,198,288,352,120,216,320,384,132,240,360,432,144,280,408,480,168,308,448,532,180,338,504,588,196,364,546,650,224,416,600,700,224,442,644,750,252,476,690,816,270,504,750,900,300,560,810,960,312,588,870,1050,336,644,952,1110,360,700,1020,1200,390,728,1050,1260,420,784,1140,1350,450,812,1200,1440,480,868,1290,1530,510,924,1350,1620,540,980,1440,1710,570,1036,1530,1800,570,1064,1590,1890,600,1120,1680,1980,630,1204,1770,2100,660,1260,1860,2220,720,1316,1950,2310,750,1372,2040,2430];e.getBlocksCount=function(e,r){switch(r){case t.L:return n[(e-1)*4+0];case t.M:return n[(e-1)*4+1];case t.Q:return n[(e-1)*4+2];case t.H:return n[(e-1)*4+3];default:return}},e.getTotalCodewordsCount=function(e,n){switch(n){case t.L:return r[(e-1)*4+0];case t.M:return r[(e-1)*4+1];case t.Q:return r[(e-1)*4+2];case t.H:return r[(e-1)*4+3];default:return}}})),z=e((e=>{var t=new Uint8Array(512),n=new Uint8Array(256);(function(){let e=1;for(let r=0;r<255;r++)t[r]=e,n[e]=r,e<<=1,e&256&&(e^=285);for(let e=255;e<512;e++)t[e]=t[e-255]})(),e.log=function(e){if(e<1)throw Error(`log(`+e+`)`);return n[e]},e.exp=function(e){return t[e]},e.mul=function(e,r){return e===0||r===0?0:t[n[e]+n[r]]}})),B=e((e=>{var t=z();e.mul=function(e,n){let r=new Uint8Array(e.length+n.length-1);for(let i=0;i=0;){let e=r[0];for(let i=0;i{var n=B();function r(e){this.genPoly=void 0,this.degree=e,this.degree&&this.initialize(this.degree)}r.prototype.initialize=function(e){this.degree=e,this.genPoly=n.generateECPolynomial(this.degree)},r.prototype.encode=function(e){if(!this.genPoly)throw Error(`Encoder not initialized`);let t=new Uint8Array(e.length+this.degree);t.set(e);let r=n.mod(t,this.genPoly),i=this.degree-r.length;if(i>0){let e=new Uint8Array(this.degree);return e.set(r,i),e}return r},t.exports=r})),H=e((e=>{e.isValid=function(e){return!isNaN(e)&&e>=1&&e<=40}})),U=e((e=>{var t=`[0-9]+`,n=`[A-Z $%*+\\-./:]+`,r=`(?:[u3000-u303F]|[u3040-u309F]|[u30A0-u30FF]|[uFF00-uFFEF]|[u4E00-u9FAF]|[u2605-u2606]|[u2190-u2195]|u203B|[u2010u2015u2018u2019u2025u2026u201Cu201Du2225u2260]|[u0391-u0451]|[u00A7u00A8u00B1u00B4u00D7u00F7])+`;r=r.replace(/u/g,`\\u`);var i=`(?:(?![A-Z0-9 $%*+\\-./:]|`+r+`)(?:.|[\r ]))+`;e.KANJI=new RegExp(r,`g`),e.BYTE_KANJI=RegExp(`[^A-Z0-9 $%*+\\-./:]+`,`g`),e.BYTE=new RegExp(i,`g`),e.NUMERIC=new RegExp(t,`g`),e.ALPHANUMERIC=new RegExp(n,`g`);var a=RegExp(`^`+r+`$`),o=RegExp(`^`+t+`$`),s=RegExp(`^[A-Z0-9 $%*+\\-./:]+$`);e.testKanji=function(e){return a.test(e)},e.testNumeric=function(e){return o.test(e)},e.testAlphanumeric=function(e){return s.test(e)}})),W=e((e=>{var t=H(),n=U();e.NUMERIC={id:`Numeric`,bit:1,ccBits:[10,12,14]},e.ALPHANUMERIC={id:`Alphanumeric`,bit:2,ccBits:[9,11,13]},e.BYTE={id:`Byte`,bit:4,ccBits:[8,16,16]},e.KANJI={id:`Kanji`,bit:8,ccBits:[8,10,12]},e.MIXED={bit:-1},e.getCharCountIndicator=function(e,n){if(!e.ccBits)throw Error(`Invalid mode: `+e);if(!t.isValid(n))throw Error(`Invalid version: `+n);return n>=1&&n<10?e.ccBits[0]:n<27?e.ccBits[1]:e.ccBits[2]},e.getBestModeForData=function(t){return n.testNumeric(t)?e.NUMERIC:n.testAlphanumeric(t)?e.ALPHANUMERIC:n.testKanji(t)?e.KANJI:e.BYTE},e.toString=function(e){if(e&&e.id)return e.id;throw Error(`Invalid mode`)},e.isValid=function(e){return e&&e.bit&&e.ccBits};function r(t){if(typeof t!=`string`)throw Error(`Param is not a string`);switch(t.toLowerCase()){case`numeric`:return e.NUMERIC;case`alphanumeric`:return e.ALPHANUMERIC;case`kanji`:return e.KANJI;case`byte`:return e.BYTE;default:throw Error(`Unknown mode: `+t)}}e.from=function(t,n){if(e.isValid(t))return t;try{return r(t)}catch{return n}}})),G=e((e=>{var t=j(),n=R(),r=M(),i=W(),a=H(),o=7973,s=t.getBCHDigit(o);function c(t,n,r){for(let i=1;i<=40;i++)if(n<=e.getCapacity(i,r,t))return i}function l(e,t){return i.getCharCountIndicator(e,t)+4}function u(e,t){let n=0;return e.forEach(function(e){let r=l(e.mode,t);n+=r+e.getBitsLength()}),n}function d(t,n){for(let r=1;r<=40;r++)if(u(t,r)<=e.getCapacity(r,n,i.MIXED))return r}e.from=function(e,t){return a.isValid(e)?parseInt(e,10):t},e.getCapacity=function(e,r,o){if(!a.isValid(e))throw Error(`Invalid QR Code version`);o===void 0&&(o=i.BYTE);let s=(t.getSymbolTotalCodewords(e)-n.getTotalCodewordsCount(e,r))*8;if(o===i.MIXED)return s;let c=s-l(o,e);switch(o){case i.NUMERIC:return Math.floor(c/10*3);case i.ALPHANUMERIC:return Math.floor(c/11*2);case i.KANJI:return Math.floor(c/13);case i.BYTE:default:return Math.floor(c/8)}},e.getBestVersionForData=function(e,t){let n,i=r.from(t,r.M);if(Array.isArray(e)){if(e.length>1)return d(e,i);if(e.length===0)return 1;n=e[0]}else n=e;return c(n.mode,n.getLength(),i)},e.getEncodedBits=function(e){if(!a.isValid(e)||e<7)throw Error(`Invalid QR Code version`);let n=e<<12;for(;t.getBCHDigit(n)-s>=0;)n^=o<{var t=j(),n=1335,r=21522,i=t.getBCHDigit(n);e.getEncodedBits=function(e,a){let o=e.bit<<3|a,s=o<<10;for(;t.getBCHDigit(s)-i>=0;)s^=n<{var n=W();function r(e){this.mode=n.NUMERIC,this.data=e.toString()}r.getBitsLength=function(e){return 10*Math.floor(e/3)+(e%3?e%3*3+1:0)},r.prototype.getLength=function(){return this.data.length},r.prototype.getBitsLength=function(){return r.getBitsLength(this.data.length)},r.prototype.write=function(e){let t,n,r;for(t=0;t+3<=this.data.length;t+=3)n=this.data.substr(t,3),r=parseInt(n,10),e.put(r,10);let i=this.data.length-t;i>0&&(n=this.data.substr(t),r=parseInt(n,10),e.put(r,i*3+1))},t.exports=r})),J=e(((e,t)=>{var n=W(),r=`0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./:`.split(``);function i(e){this.mode=n.ALPHANUMERIC,this.data=e}i.getBitsLength=function(e){return 11*Math.floor(e/2)+e%2*6},i.prototype.getLength=function(){return this.data.length},i.prototype.getBitsLength=function(){return i.getBitsLength(this.data.length)},i.prototype.write=function(e){let t;for(t=0;t+2<=this.data.length;t+=2){let n=r.indexOf(this.data[t])*45;n+=r.indexOf(this.data[t+1]),e.put(n,11)}this.data.length%2&&e.put(r.indexOf(this.data[t]),6)},t.exports=i})),Y=e(((e,t)=>{var n=W();function r(e){this.mode=n.BYTE,typeof e==`string`?this.data=new TextEncoder().encode(e):this.data=new Uint8Array(e)}r.getBitsLength=function(e){return e*8},r.prototype.getLength=function(){return this.data.length},r.prototype.getBitsLength=function(){return r.getBitsLength(this.data.length)},r.prototype.write=function(e){for(let t=0,n=this.data.length;t{var n=W(),r=j();function i(e){this.mode=n.KANJI,this.data=e}i.getBitsLength=function(e){return e*13},i.prototype.getLength=function(){return this.data.length},i.prototype.getBitsLength=function(){return i.getBitsLength(this.data.length)},i.prototype.write=function(e){let t;for(t=0;t=33088&&n<=40956)n-=33088;else if(n>=57408&&n<=60351)n-=49472;else throw Error(`Invalid SJIS character: `+this.data[t]+` Make sure your charset is UTF-8`);n=(n>>>8&255)*192+(n&255),e.put(n,13)}},t.exports=i})),Z=e(((e,t)=>{var n={single_source_shortest_paths:function(e,t,r){var i={},a={};a[t]=0;var o=n.PriorityQueue.make();o.push(t,0);for(var s,c,l,u,d,f,p,m,h;!o.empty();)for(l in s=o.pop(),c=s.value,u=s.cost,d=e[c]||{},d)d.hasOwnProperty(l)&&(f=d[l],p=u+f,m=a[l],h=a[l]===void 0,(h||m>p)&&(a[l]=p,o.push(l,p),i[l]=c));if(r!==void 0&&a[r]===void 0){var g=[`Could not find a path from `,t,` to `,r,`.`].join(``);throw Error(g)}return i},extract_shortest_path_from_predecessor_list:function(e,t){for(var n=[],r=t;r;)n.push(r),e[r],r=e[r];return n.reverse(),n},find_path:function(e,t,r){var i=n.single_source_shortest_paths(e,t,r);return n.extract_shortest_path_from_predecessor_list(i,r)},PriorityQueue:{make:function(e){var t=n.PriorityQueue,r={},i;for(i in e||={},t)t.hasOwnProperty(i)&&(r[i]=t[i]);return r.queue=[],r.sorter=e.sorter||t.default_sorter,r},default_sorter:function(e,t){return e.cost-t.cost},push:function(e,t){var n={value:e,cost:t};this.queue.push(n),this.queue.sort(this.sorter)},pop:function(){return this.queue.shift()},empty:function(){return this.queue.length===0}}};t!==void 0&&(t.exports=n)})),re=e((e=>{var t=W(),n=q(),r=J(),i=Y(),a=X(),o=U(),s=j(),c=Z();function l(e){return unescape(encodeURIComponent(e)).length}function u(e,t,n){let r=[],i;for(;(i=e.exec(n))!==null;)r.push({data:i[0],index:i.index,mode:t,length:i[0].length});return r}function d(e){let n=u(o.NUMERIC,t.NUMERIC,e),r=u(o.ALPHANUMERIC,t.ALPHANUMERIC,e),i,a;return s.isKanjiModeEnabled()?(i=u(o.BYTE,t.BYTE,e),a=u(o.KANJI,t.KANJI,e)):(i=u(o.BYTE_KANJI,t.BYTE,e),a=[]),n.concat(r,i,a).sort(function(e,t){return e.index-t.index}).map(function(e){return{data:e.data,mode:e.mode,length:e.length}})}function f(e,o){switch(o){case t.NUMERIC:return n.getBitsLength(e);case t.ALPHANUMERIC:return r.getBitsLength(e);case t.KANJI:return a.getBitsLength(e);case t.BYTE:return i.getBitsLength(e)}}function p(e){return e.reduce(function(e,t){let n=e.length-1>=0?e[e.length-1]:null;return n&&n.mode===t.mode?(e[e.length-1].data+=t.data,e):(e.push(t),e)},[])}function m(e){let n=[];for(let r=0;r{var t=j(),n=M(),r=N(),i=P(),a=F(),o=I(),s=L(),c=R(),l=V(),u=G(),d=K(),f=W(),p=re();function m(e,t){let n=e.size,r=o.getPositions(t);for(let t=0;t=0&&t<=6&&(r===0||r===6)||r>=0&&r<=6&&(t===0||t===6)||t>=2&&t<=4&&r>=2&&r<=4?e.set(i+t,a+r,!0,!0):e.set(i+t,a+r,!1,!0))}}function h(e){let t=e.size;for(let n=8;n>t&1)==1,e.set(i,a,o,!0),e.set(a,i,o,!0)}function v(e,t,n){let r=e.size,i=d.getEncodedBits(t,n),a,o;for(a=0;a<15;a++)o=(i>>a&1)==1,a<6?e.set(a,8,o,!0):a<8?e.set(a+1,8,o,!0):e.set(r-15+a,8,o,!0),a<8?e.set(8,r-a-1,o,!0):a<9?e.set(8,15-a-1+1,o,!0):e.set(8,15-a-1,o,!0);e.set(r-8,8,1,!0)}function y(e,t){let n=e.size,r=-1,i=n-1,a=7,o=0;for(let s=n-1;s>0;s-=2)for(s===6&&s--;;){for(let n=0;n<2;n++)if(!e.isReserved(i,s-n)){let r=!1;o>>a&1)==1),e.set(i,s-n,r),a--,a===-1&&(o++,a=7)}if(i+=r,i<0||n<=i){i-=r,r=-r;break}}}function b(e,n,i){let a=new r;i.forEach(function(t){a.put(t.mode.bit,4),a.put(t.getLength(),f.getCharCountIndicator(t.mode,e)),t.write(a)});let o=(t.getSymbolTotalCodewords(e)-c.getTotalCodewordsCount(e,n))*8;for(a.getLengthInBits()+4<=o&&a.put(0,4);a.getLengthInBits()%8!=0;)a.putBit(0);let s=(o-a.getLengthInBits())/8;for(let e=0;e(void 0)?.trim()?(void 0).trim().replace(/\/$/,``):window.location.origin),b=a(()=>`/admin/`.endsWith(`/`)?`/admin/`.slice(0,-1):`/admin/`),x=a(()=>{let e=v.value?.slug;return e?`${b.value}/c/${encodeURIComponent(e)}/review`:``}),S=a(()=>`${y.value}${x.value}`);async function C(e){try{await navigator.clipboard.writeText(e),p.success(`已复制`)}catch{p.error(`复制失败,请手动选择文本`)}}return(a,s)=>{let f=i(`el-alert`),p=i(`el-descriptions-item`),h=i(`el-button`),y=i(`el-descriptions`),b=i(`el-card`);return c(),u(`div`,null,[s[5]||=d(`h2`,{class:`page-title`},`评审端入口说明`,-1),s[6]||=d(`p`,{class:`lead`},[e(` 评审员`),d(`strong`,null,`不使用本管理后台`),e(`登录;请在赛事前台域名下访问评审工作台(见《需求规格说明书》FR-R-03、FR-V 系列)。以下链接按当前「赛事切换器」中选中的场次生成。 `)],-1),t(m)?(c(),r(y,{key:1,border:``,column:1,title:`本场评审访问地址`},{default:l(()=>[n(p,{label:`赛事名称`},{default:l(()=>[e(o(t(v)?.name),1)]),_:1}),n(p,{label:`slug`},{default:l(()=>[e(o(t(v)?.slug),1)]),_:1}),n(p,{label:`建议完整 URL`},{default:l(()=>[d(`code`,g,o(S.value),1),n(h,{type:`primary`,link:``,onClick:s[0]||=e=>C(S.value)},{default:l(()=>[...s[2]||=[e(`复制`,-1)]]),_:1})]),_:1}),n(p,{label:`同源相对路径`},{default:l(()=>[d(`code`,_,o(x.value),1),n(h,{type:`primary`,link:``,onClick:s[1]||=e=>C(x.value)},{default:l(()=>[...s[3]||=[e(`复制`,-1)]]),_:1})]),_:1})]),_:1})):(c(),r(f,{key:0,type:`warning`,"show-icon":``,closable:!1,title:`请先在顶栏选择一个赛事。`,style:{"margin-bottom":`16px`}})),n(b,{shadow:`never`,class:`hints`,header:`接入说明`},{default:l(()=>[...s[4]||=[d(`ul`,{class:`bullet`},[d(`li`,null,[e(` 若评审端与选手端部署在同一前端工程,路径一般为 `),d(`code`,null,`/c/{slug}/review`),e(`;品牌化文案读取当前赛事 `),d(`code`,null,`branding.review`),e(`。 `)]),d(`li`,null,[e(` 若域名与后台不同,可在环境变量 `),d(`code`,null,`VITE_PARTICIPANT_PUBLIC_ORIGIN`),e(` 中配置选手端/评审端的公开站点域名,便于后台展示可复制的完整 URL。 `)]),d(`li`,null,[e(`评审列表数据须按后台配置的 `),d(`code`,null,`reviewer_scopes`),e(`(赛事 × track_code)由后端过滤。`)])],-1)]]),_:1})])}}}),[[`__scopeId`,`data-v-0e77d9b5`]]);export{v as default}; \ No newline at end of file +import{D as e,Et as t,O as n,S as r,Z as i,b as a,in as o,k as s,q as c,st as l,w as u,x as d}from"./vue.runtime.esm-bundler-OsdSFvn7.js";import{b as f,f as p}from"./index-t7bgup9e.js";import{t as m}from"./_plugin-vue_export-helper-CXTkFu_Z.js";import{t as h}from"./adminCompetition-DfRlbUCX.js";var g={class:`url`},_={class:`url`},v=m(s({__name:`ReviewPortalView`,setup(s){let{selectedCompetitionId:m,selectedCompetition:v}=f(h()),y=a(()=>(void 0)?.trim()?(void 0).trim().replace(/\/$/,``):window.location.origin),b=a(()=>`/admin/`.endsWith(`/`)?`/admin/`.slice(0,-1):`/admin/`),x=a(()=>{let e=v.value?.slug;return e?`${b.value}/c/${encodeURIComponent(e)}/review`:``}),S=a(()=>`${y.value}${x.value}`);async function C(e){try{await navigator.clipboard.writeText(e),p.success(`已复制`)}catch{p.error(`复制失败,请手动选择文本`)}}return(a,s)=>{let f=i(`el-alert`),p=i(`el-descriptions-item`),h=i(`el-button`),y=i(`el-descriptions`),b=i(`el-card`);return c(),u(`div`,null,[s[5]||=d(`h2`,{class:`page-title`},`评审端入口说明`,-1),s[6]||=d(`p`,{class:`lead`},[e(` 评审员`),d(`strong`,null,`不使用本管理后台`),e(`登录;请在赛事前台域名下访问评审工作台(见《需求规格说明书》FR-R-03、FR-V 系列)。以下链接按当前「赛事切换器」中选中的场次生成。 `)],-1),t(m)?(c(),r(y,{key:1,border:``,column:1,title:`本场评审访问地址`},{default:l(()=>[n(p,{label:`赛事名称`},{default:l(()=>[e(o(t(v)?.name),1)]),_:1}),n(p,{label:`slug`},{default:l(()=>[e(o(t(v)?.slug),1)]),_:1}),n(p,{label:`建议完整 URL`},{default:l(()=>[d(`code`,g,o(S.value),1),n(h,{type:`primary`,link:``,onClick:s[0]||=e=>C(S.value)},{default:l(()=>[...s[2]||=[e(`复制`,-1)]]),_:1})]),_:1}),n(p,{label:`同源相对路径`},{default:l(()=>[d(`code`,_,o(x.value),1),n(h,{type:`primary`,link:``,onClick:s[1]||=e=>C(x.value)},{default:l(()=>[...s[3]||=[e(`复制`,-1)]]),_:1})]),_:1})]),_:1})):(c(),r(f,{key:0,type:`warning`,"show-icon":``,closable:!1,title:`请先在顶栏选择一个赛事。`,style:{"margin-bottom":`16px`}})),n(b,{shadow:`never`,class:`hints`,header:`接入说明`},{default:l(()=>[...s[4]||=[d(`ul`,{class:`bullet`},[d(`li`,null,[e(` 若评审端与选手端部署在同一前端工程,路径一般为 `),d(`code`,null,`/c/{slug}/review`),e(`;品牌化文案读取当前赛事 `),d(`code`,null,`branding.review`),e(`。 `)]),d(`li`,null,[e(` 若域名与后台不同,可在环境变量 `),d(`code`,null,`VITE_PARTICIPANT_PUBLIC_ORIGIN`),e(` 中配置选手端/评审端的公开站点域名,便于后台展示可复制的完整 URL。 `)]),d(`li`,null,[e(`评审列表数据须按后台配置的 `),d(`code`,null,`reviewer_scopes`),e(`(赛事 × track_code)由后端过滤。`)])],-1)]]),_:1})])}}}),[[`__scopeId`,`data-v-0e77d9b5`]]);export{v as default}; \ No newline at end of file diff --git a/public/admin/assets/ReviewerApplicationDetailView-C_C2VT7j.js b/public/admin/assets/ReviewerApplicationDetailView-CmzDBsR6.js similarity index 98% rename from public/admin/assets/ReviewerApplicationDetailView-C_C2VT7j.js rename to public/admin/assets/ReviewerApplicationDetailView-CmzDBsR6.js index 23e829f..6527439 100644 --- a/public/admin/assets/ReviewerApplicationDetailView-C_C2VT7j.js +++ b/public/admin/assets/ReviewerApplicationDetailView-CmzDBsR6.js @@ -1 +1 @@ -import{$t as e,C as t,D as n,O as r,P as i,W as a,Y as o,_t as s,at as c,b as l,ct as ee,d as te,g as u,in as d,k as ne,m as f,p as re,q as p,w as m,x as h}from"./vue.runtime.esm-bundler-OsdSFvn7.js";import{C as ie,S as ae,w as oe,x as g}from"./api-rQwE0AaH.js";import{S as _,f as v,l as se,u as ce}from"./index-DAT5gpOZ.js";import{t as y}from"./_plugin-vue_export-helper-CXTkFu_Z.js";import{r as le,t as ue}from"./downloadFeedback-aIJlOgpJ.js";import{t as de}from"./ApplicationSignupDetailFields-DzsXhk8j.js";import{i as fe,t as pe}from"./listPageState-9NPjbkq0.js";var me={class:`container-fluid p-3 p-md-4 reviewer-detail-page`},he={class:`d-flex justify-content-between align-items-center flex-wrap gap-2 mb-3`},ge={class:`d-flex align-items-center gap-2 flex-wrap`},_e={key:0,class:`alert alert-warning py-2 small`,role:`alert`},ve={key:1,class:`small text-secondary`},ye={key:2,class:`card mb-4 border-0 shadow-sm`},be={class:`card-body pb-4`},xe={class:`row g-3 mt-1`},Se={class:`col-12`},Ce={key:0,class:`form-control-plaintext border rounded px-3 py-2 mb-0 bg-light small text-secondary`},we={key:1,class:`form-control-plaintext border rounded px-3 py-2 mb-0 bg-light small text-secondary`},Te={class:`col-12`},Ee={key:0,class:`list-unstyled mb-0 border rounded px-3 py-2 bg-light small`},De=[`onClick`],Oe={key:1,class:`form-control-plaintext border rounded px-3 py-2 mb-0 bg-light small text-secondary`},ke={class:`col-12`},b={class:`form-control-plaintext border rounded px-3 py-2 mb-0 bg-light small text-secondary`},x={class:`text-secondary ms-2`},S={class:`col-12 pt-3 mt-2 border-top d-flex flex-wrap gap-2 align-items-center reviewer-score-action-bar`},C=[`disabled`],w={key:0,class:`small text-danger`},Ae={key:1,class:`small text-secondary`},je={id:`reviewerPledgeModal`,class:`modal fade`,tabindex:`-1`,"aria-labelledby":`reviewerPledgeDocHeading`,"aria-hidden":`true`},Me={class:`modal-dialog modal-dialog-centered modal-dialog-scrollable reviewer-detail-modal reviewer-detail-modal--pledge`},Ne={class:`modal-content promise-sign-sheet`},Pe={class:`modal-body pt-2`},Fe={key:0,class:`promise-doc-paper`},Ie={id:`reviewerPledgeDocHeading`,class:`promise-doc-heading text-center`},Le={class:`promise-doc-scroll`},Re=[`innerHTML`],ze={key:1,class:`promise-doc-body promise-doc-body--rich`},Be={key:0,class:`promise-doc-signblock`},Ve={class:`reviewer-pledge-sig-row`},He=[`src`],Ue={key:1,class:`small text-secondary`},We={class:`promise-doc-daterow`},Ge={class:`promise-doc-dateline`},Ke={id:`reviewerScoreModal`,class:`modal fade`,tabindex:`-1`,"aria-labelledby":`reviewerScoreModalLabel`,"aria-hidden":`true`},qe={class:`modal-dialog modal-dialog-centered modal-dialog-scrollable reviewer-detail-modal reviewer-detail-modal--score`},Je={class:`modal-content`},Ye={class:`modal-header scoring-modal-header`},Xe={id:`reviewerScoreModalLabel`,class:`modal-title scoring-modal-title w-100 text-center`},Ze={class:`modal-body`},Qe={key:0,class:`small text-danger mb-2 text-center`,role:`alert`},$e={class:`table-responsive scoring-sheet-wrap`},et={class:`table table-bordered align-middle mb-0 scoring-sheet-table`},tt={class:`text-center text-secondary`},nt=[`rowspan`],rt={class:`text-center fw-semibold scoring-indicator`},it={class:`small text-secondary scoring-criteria`},at={class:`text-center`},ot={class:`scoring-total-block`},st={class:`scoring-total-row-inner`},ct=[`onKeydown`],lt={class:`scoring-total-full small text-secondary`},T={key:0,class:`invalid-feedback d-block`},ut={class:`modal-footer flex-wrap gap-2`},dt=[`disabled`],ft=100,E=2,D=y(ne({__name:`ReviewerApplicationDetailView`,setup(ne){let y=se(),D=ce(),O=l(()=>String(y.params.slug??``).trim()),k=l(()=>String(y.params.id??``).trim()),pt=i(`reviewerCompetitionName`,s(``)),mt=l(()=>{let e=pt.value.trim();return e?`${e} 赛事承诺书`:`赛事承诺书`});function ht(e){let t=(e??``).trim();if(!t)return`—`;let n=t.match(/^(\d{4})-(\d{1,2})-(\d{1,2})/);if(n)return`${parseInt(n[1],10)}年${parseInt(n[2],10)}月${parseInt(n[3],10)}日`;let r=new Date(t.includes(` `)?t.replace(/-/g,`/`):t);return Number.isNaN(r.getTime())?t:`${r.getFullYear()}年${r.getMonth()+1}月${r.getDate()}日`}let A=s(null),j=s(!1),M=s(``),N=l(()=>ht(A.value?.promise_signed_at)),P=s(``),F=s(!1),I=s(!1),L=s(!1),gt=l(()=>Number(A.value?.scoring_sheet?.full_score??100)||100);function R(){return String(P.value??``).trim()}let z=l({get:()=>P.value,set:e=>{let t=(e==null?``:String(e)).replace(/[^\d.-]/g,``);t=t.replace(/(?!^)-/g,``),t=t.replace(/(\..*)\./g,`$1`),P.value=t}});function B(){let e=A.value;if(!e?.scoring_sheet?.items?.length){P.value=``,I.value=!1,L.value=!1;return}let t=e.my_review_score?.line_total,n=e.my_review_score?.payload_json?.line_total,r=t!=null&&String(t).trim()!==``?String(t):n!=null&&String(n).trim()!==``?String(n):``;if(r===``)P.value=``;else{let e=Number(r);P.value=Number.isFinite(e)?V(e.toFixed(E)):``}I.value=!1,L.value=!1}c(A,()=>B(),{deep:!0});function V(e){return e.replace(/\.?0+$/,``)}function H(e){return V(Number(e).toFixed(E))}function _t(e){return/\.\d{3,}/.test(e)}let U=l(()=>A.value?.scoring_sheet?.items??[]),vt=l(()=>{let e=U.value,t=[],n=0;for(;nft?`项目总分不能大于 100`:null:`须为数字`}function yt(){I.value=!0}let bt=l(()=>!A.value?.scoring_allowed||!U.value.length?!1:W()===null&&R()!==``),G=l(()=>{if(!U.value.length)return``;let e=W();return e&&(L.value||I.value||R()!==``)?e:``}),xt=l(()=>{let e=A.value;return e?`项目编号:${e.project_code} · ${e.score_display}`:``}),K=l(()=>A.value?.files.find(e=>e.kind===`plan`)??null),q=l(()=>A.value?.files.filter(e=>e.kind===`supporting`)??[]),J=l(()=>{let e=A.value?.promise_signature;if(e==null||typeof e!=`string`)return``;let t=e.trim();return t===``?``:t.startsWith(`data:`)?t:`data:image/png;base64,${t}`});async function Y(){let e=k.value,t=O.value,{token:n}=g();if(!/^\d+$/.test(e)||!t||!n){M.value=`参数无效或未登录`,A.value=null;return}j.value=!0,M.value=``;try{let r=ae(parseInt(e,10),t),i=await fetch(r,{headers:{Authorization:`Bearer ${n}`,Accept:`application/json`}});if(!i.ok){let e=await i.json().catch(()=>({}));M.value=(typeof e==`object`&&e&&`message`in e?String(e.message??``):``)||`加载失败(${i.status})`,A.value=null;return}A.value=(await i.json()).data??null}catch{M.value=`网络错误`,A.value=null}finally{j.value=!1}}c([k,O],()=>void Y()),a(()=>void Y());function St(){let e=O.value;if(!e){D.push(`/c`);return}D.push({name:`reviewer-projects`,params:{slug:e},query:fe(pe(`reviewer-projects`,e),y.query)})}let X=s(null);async function Z(e){if(X.value!=null){v.warning(`附件正在下载中,请勿重复点击`);return}let t=k.value,n=O.value,{token:r}=g();if(!/^\d+$/.test(t)||!n||!r){v.warning(`未登录或参数无效`);return}let i=e.original_name?.trim()||`附件`,a=ue(i,e.size);if(!a)return;X.value=e.id;let o=ie(parseInt(t,10),e.id,n);try{let e=await fetch(o,{headers:{Authorization:`Bearer ${r}`,Accept:`application/json,*/*`}});if(!e.ok){let t=`下载附件失败`;try{let n=await e.json();typeof n.message==`string`&&n.message.trim()&&(t=n.message.trim())}catch{}v.error(t);return}a.setText(`正在保存「${i}」…`);let t=await e.blob(),n=URL.createObjectURL(t),s=document.createElement(`a`);s.href=n,s.download=i===`附件`?`download`:i,s.rel=`noopener`,document.body.appendChild(s),s.click(),s.remove(),URL.revokeObjectURL(n),le()}catch{v.error(`网络错误,无法下载`)}finally{a.close(),X.value=null}}function Ct(){return{line_total:Number(R())}}function Q(){typeof document>`u`||(document.querySelectorAll(`.modal-backdrop`).forEach(e=>e.remove()),document.body.classList.remove(`modal-open`),document.body.style.removeProperty(`overflow`),document.body.style.removeProperty(`padding-right`))}function wt(){return new Promise(e=>{if(typeof document>`u`){e();return}let t=document.getElementById(`reviewerScoreModal`);if(!t){Q(),e();return}let n=!1,r=()=>{n||(n=!0,t.removeEventListener(`hidden.bs.modal`,i),Q(),e())},i=()=>r();t.addEventListener(`hidden.bs.modal`,i),(_.getInstance(t)??_.getOrCreateInstance(t)).hide(),window.setTimeout(r,450)})}function Tt(){if(!A.value?.scoring_allowed){v.warning(A.value?.scoring_blocked_reason||`该赛道未配置打分表,暂不可评审`);return}if(L.value=!1,I.value=!1,Q(),typeof document>`u`)return;let e=document.getElementById(`reviewerScoreModal`);e&&_.getOrCreateInstance(e).show()}async function $(){let e=k.value,t=O.value,{token:n}=g();if(!/^\d+$/.test(e)||!t||!n){v.warning(`未登录或参数无效`);return}if(!A.value?.scoring_allowed||!U.value.length){v.warning(A.value?.scoring_blocked_reason||`该赛道未配置打分表,暂不可评审`);return}if(!bt.value){L.value=!0,v.warning(W()||`请填写 0~100 之间的项目总分`);return}F.value=!0;try{let r=Ct(),i=oe(parseInt(e,10)),a=await fetch(i,{method:`POST`,headers:{Authorization:`Bearer ${n}`,Accept:`application/json`,"Content-Type":`application/json`},body:JSON.stringify({competition_slug:t,payload:r})}),o=await a.json().catch(()=>({}));if(!a.ok){let e=o,t=e.errors?.payload?.[0],n=typeof t==`string`&&t?t:typeof e.message==`string`?e.message:`提交失败(${a.status})`;v.error(n);return}await wt();let s=o.data;A.value&&s&&(s.my_review_score!==void 0&&(A.value.my_review_score=s.my_review_score),typeof s.score_display==`string`&&(A.value.score_display=s.score_display),typeof s.score_is_pending==`boolean`&&(A.value.score_is_pending=s.score_is_pending)),B(),v.success(typeof o.message==`string`?String(o.message):`提交成功`)}catch{v.error(`网络错误,提交失败`)}finally{F.value=!1}}return(i,a)=>(p(),m(`div`,me,[h(`div`,he,[a[2]||=h(`h5`,{class:`mb-0 section-title`},`项目详情`,-1),h(`div`,ge,[A.value?(p(),m(`span`,{key:0,class:e([`status-pill`,A.value.score_is_pending?`status-pending`:`status-pass`])},d(xt.value),3)):t(``,!0),h(`button`,{type:`button`,class:`btn btn-sm btn-outline-secondary event-back-btn`,onClick:St},` 返回列表 `)])]),M.value?(p(),m(`p`,_e,d(M.value),1)):j.value?(p(),m(`p`,ve,`加载中…`)):A.value?(p(),m(`div`,ye,[h(`div`,be,[r(de,{detail:A.value,"show-recommend":!1},null,8,[`detail`]),h(`div`,xe,[h(`div`,Se,[a[3]||=h(`label`,{class:`form-label`},`商业计划书`,-1),K.value?(p(),m(`p`,Ce,[h(`a`,{role:`button`,href:`#`,class:e([`text-danger text-decoration-none`,{"pe-none opacity-75":X.value!=null}]),onClick:a[0]||=f(e=>Z(K.value),[`prevent`])},d(X.value===K.value.id?`下载中… ${K.value.original_name}`:K.value.original_name),3)])):(p(),m(`p`,we,`—`))]),h(`div`,Te,[a[4]||=h(`label`,{class:`form-label`},`其他佐证材料`,-1),q.value.length?(p(),m(`ul`,Ee,[(p(!0),m(u,null,o(q.value,t=>(p(),m(`li`,{key:t.id},[h(`a`,{role:`button`,href:`#`,class:e([`text-danger text-decoration-none`,{"pe-none opacity-75":X.value!=null}]),onClick:f(e=>Z(t),[`prevent`])},d(X.value===t.id?`下载中… ${t.original_name}`:t.original_name),11,De)]))),128))])):(p(),m(`p`,Oe,`—`))]),h(`div`,ke,[a[6]||=h(`label`,{class:`form-label`},`参赛承诺书`,-1),h(`p`,b,[A.value.promise_signed?(p(),m(u,{key:0},[a[5]||=h(`button`,{type:`button`,class:`btn btn-link btn-sm p-0 align-baseline text-danger`,"data-bs-toggle":`modal`,"data-bs-target":`#reviewerPledgeModal`},` 已签署 · 查看承诺书与签名 `,-1),h(`span`,x,`日期:`+d(N.value),1)],64)):(p(),m(u,{key:1},[n(`未签署`)],64))])]),h(`div`,S,[h(`button`,{type:`button`,class:`btn btn-primary px-4`,style:{"background-color":`var(--primary, #052d62)`,"border-color":`var(--primary, #052d62)`},disabled:!A.value.scoring_allowed,onClick:Tt},d(A.value.score_is_pending?`项目评分`:`修改项目评分`),9,C),A.value.scoring_allowed?A.value.my_review_score?(p(),m(`span`,Ae,`最近保存:`+d(A.value.my_review_score.updated_at)+` · 项目得分 `+d(V(Number(A.value.my_review_score.line_total).toFixed(2)))+` 分`,1)):t(``,!0):(p(),m(`span`,w,d(A.value.scoring_blocked_reason||`该赛道未配置打分表,暂不可评审`),1))])])])])):t(``,!0),h(`div`,je,[h(`div`,Me,[h(`div`,Ne,[h(`div`,Pe,[A.value?(p(),m(`div`,Fe,[h(`h1`,Ie,d(mt.value),1),h(`div`,Le,[A.value.pledge_content_html?.trim()?(p(),m(`div`,{key:0,class:`promise-doc-body promise-doc-body--rich`,innerHTML:A.value.pledge_content_html},null,8,Re)):(p(),m(`div`,ze,[...a[7]||=[h(`p`,{class:`text-secondary mb-0`},`本场赛事未配置承诺书正文(可在管理端赛事中心维护)。`,-1)]]))]),A.value.promise_signed?(p(),m(`div`,Be,[h(`div`,Ve,[a[8]||=h(`span`,{class:`promise-doc-signlabel`},`参赛人签名:`,-1),J.value?(p(),m(`img`,{key:0,src:J.value,alt:``,class:`reviewer-promise-sig-img`,loading:`lazy`},null,8,He)):(p(),m(`span`,Ue,`暂无`))]),h(`div`,We,[h(`span`,Ge,[a[9]||=n(`日期:`,-1),h(`strong`,null,d(N.value),1)])])])):t(``,!0)])):t(``,!0),a[10]||=h(`div`,{class:`promise-sign-actions`},[h(`button`,{type:`button`,class:`btn btn-light notice-cancel-btn`,"data-bs-dismiss":`modal`},`关闭`)],-1)])])])]),h(`div`,Ke,[h(`div`,qe,[h(`div`,Je,[h(`div`,Ye,[h(`h5`,Xe,d(A.value?.scoring_sheet?.title||`项目评分`),1),a[11]||=h(`button`,{type:`button`,class:`btn-close scoring-modal-close`,"data-bs-dismiss":`modal`,"aria-label":`关闭`},null,-1)]),h(`div`,Ze,[a[15]||=h(`p`,{class:`small text-secondary mb-2 text-center scoring-modal-hint`},` 下表为评审参考;请在底部填写项目总分(0~100,最多两位小数,可为 0)。 `,-1),G.value?(p(),m(`p`,Qe,d(G.value),1)):t(``,!0),h(`div`,$e,[h(`table`,et,[a[12]||=h(`colgroup`,null,[h(`col`,{class:`col-seq`}),h(`col`,{class:`col-category`}),h(`col`,{class:`col-indicator`}),h(`col`,{class:`col-criteria`}),h(`col`,{class:`col-max`})],-1),a[13]||=h(`thead`,null,[h(`tr`,null,[h(`th`,{class:`text-nowrap text-center`},`序号`),h(`th`,{class:`text-nowrap text-center`},`指标分类`),h(`th`,{class:`text-nowrap text-center`},`评审指标`),h(`th`,{class:`text-center`},`核心评审要素(评委打分依据)`),h(`th`,{class:`text-nowrap text-center`},`分值`)])],-1),h(`tbody`,null,[(p(!0),m(u,null,o(vt.value,e=>(p(),m(`tr`,{key:e.item.key},[h(`td`,tt,d(e.item.sort||e.idx+1),1),e.categoryRowspan>0?(p(),m(`td`,{key:0,rowspan:e.categoryRowspan,class:`text-center scoring-category`},d(e.item.category),9,nt)):t(``,!0),h(`td`,rt,d(e.item.title),1),h(`td`,it,d(e.item.criteria||`—`),1),h(`td`,at,d(H(e.item.max_score)),1)]))),128))])])]),h(`div`,ot,[a[14]||=h(`label`,{class:`form-label mb-1 fw-semibold`,for:`reviewer-total-score-input`},`项目总分`,-1),h(`div`,st,[ee(h(`input`,{id:`reviewer-total-score-input`,"onUpdate:modelValue":a[1]||=e=>z.value=e,class:e([`form-control scoring-total-input text-center`,{"is-invalid":!!W()}]),type:`text`,inputmode:`decimal`,autocomplete:`off`,placeholder:`请输入总分`,"aria-label":`项目总分`,onBlur:yt,onKeydown:re(f($,[`prevent`]),[`enter`])},null,42,ct),[[te,z.value]]),h(`span`,lt,`满分 `+d(H(gt.value)),1)]),W()?(p(),m(`div`,T,d(W()),1)):t(``,!0)])]),h(`div`,ut,[a[16]||=h(`button`,{type:`button`,class:`btn btn-secondary`,"data-bs-dismiss":`modal`},`取消`,-1),h(`button`,{type:`button`,class:`btn btn-primary`,style:{"background-color":`var(--primary, #052d62)`,"border-color":`var(--primary, #052d62)`},disabled:F.value,onClick:$},d(F.value?`提交中…`:`确认提交`),9,dt)])])])])]))}}),[[`__scopeId`,`data-v-5584ff7a`]]);export{D as default}; \ No newline at end of file +import{$t as e,C as t,D as n,O as r,P as i,W as a,Y as o,_t as s,at as c,b as l,ct as ee,d as te,g as u,in as d,k as ne,m as f,p as re,q as p,w as m,x as h}from"./vue.runtime.esm-bundler-OsdSFvn7.js";import{C as ie,S as ae,w as oe,x as g}from"./api-rQwE0AaH.js";import{S as _,f as v,l as se,u as ce}from"./index-t7bgup9e.js";import{t as y}from"./_plugin-vue_export-helper-CXTkFu_Z.js";import{r as le,t as ue}from"./downloadFeedback-CVNWp7w4.js";import{t as de}from"./ApplicationSignupDetailFields-DzsXhk8j.js";import{i as fe,t as pe}from"./listPageState-9NPjbkq0.js";var me={class:`container-fluid p-3 p-md-4 reviewer-detail-page`},he={class:`d-flex justify-content-between align-items-center flex-wrap gap-2 mb-3`},ge={class:`d-flex align-items-center gap-2 flex-wrap`},_e={key:0,class:`alert alert-warning py-2 small`,role:`alert`},ve={key:1,class:`small text-secondary`},ye={key:2,class:`card mb-4 border-0 shadow-sm`},be={class:`card-body pb-4`},xe={class:`row g-3 mt-1`},Se={class:`col-12`},Ce={key:0,class:`form-control-plaintext border rounded px-3 py-2 mb-0 bg-light small text-secondary`},we={key:1,class:`form-control-plaintext border rounded px-3 py-2 mb-0 bg-light small text-secondary`},Te={class:`col-12`},Ee={key:0,class:`list-unstyled mb-0 border rounded px-3 py-2 bg-light small`},De=[`onClick`],Oe={key:1,class:`form-control-plaintext border rounded px-3 py-2 mb-0 bg-light small text-secondary`},ke={class:`col-12`},b={class:`form-control-plaintext border rounded px-3 py-2 mb-0 bg-light small text-secondary`},x={class:`text-secondary ms-2`},S={class:`col-12 pt-3 mt-2 border-top d-flex flex-wrap gap-2 align-items-center reviewer-score-action-bar`},C=[`disabled`],w={key:0,class:`small text-danger`},Ae={key:1,class:`small text-secondary`},je={id:`reviewerPledgeModal`,class:`modal fade`,tabindex:`-1`,"aria-labelledby":`reviewerPledgeDocHeading`,"aria-hidden":`true`},Me={class:`modal-dialog modal-dialog-centered modal-dialog-scrollable reviewer-detail-modal reviewer-detail-modal--pledge`},Ne={class:`modal-content promise-sign-sheet`},Pe={class:`modal-body pt-2`},Fe={key:0,class:`promise-doc-paper`},Ie={id:`reviewerPledgeDocHeading`,class:`promise-doc-heading text-center`},Le={class:`promise-doc-scroll`},Re=[`innerHTML`],ze={key:1,class:`promise-doc-body promise-doc-body--rich`},Be={key:0,class:`promise-doc-signblock`},Ve={class:`reviewer-pledge-sig-row`},He=[`src`],Ue={key:1,class:`small text-secondary`},We={class:`promise-doc-daterow`},Ge={class:`promise-doc-dateline`},Ke={id:`reviewerScoreModal`,class:`modal fade`,tabindex:`-1`,"aria-labelledby":`reviewerScoreModalLabel`,"aria-hidden":`true`},qe={class:`modal-dialog modal-dialog-centered modal-dialog-scrollable reviewer-detail-modal reviewer-detail-modal--score`},Je={class:`modal-content`},Ye={class:`modal-header scoring-modal-header`},Xe={id:`reviewerScoreModalLabel`,class:`modal-title scoring-modal-title w-100 text-center`},Ze={class:`modal-body`},Qe={key:0,class:`small text-danger mb-2 text-center`,role:`alert`},$e={class:`table-responsive scoring-sheet-wrap`},et={class:`table table-bordered align-middle mb-0 scoring-sheet-table`},tt={class:`text-center text-secondary`},nt=[`rowspan`],rt={class:`text-center fw-semibold scoring-indicator`},it={class:`small text-secondary scoring-criteria`},at={class:`text-center`},ot={class:`scoring-total-block`},st={class:`scoring-total-row-inner`},ct=[`onKeydown`],lt={class:`scoring-total-full small text-secondary`},T={key:0,class:`invalid-feedback d-block`},ut={class:`modal-footer flex-wrap gap-2`},dt=[`disabled`],ft=100,E=2,D=y(ne({__name:`ReviewerApplicationDetailView`,setup(ne){let y=se(),D=ce(),O=l(()=>String(y.params.slug??``).trim()),k=l(()=>String(y.params.id??``).trim()),pt=i(`reviewerCompetitionName`,s(``)),mt=l(()=>{let e=pt.value.trim();return e?`${e} 赛事承诺书`:`赛事承诺书`});function ht(e){let t=(e??``).trim();if(!t)return`—`;let n=t.match(/^(\d{4})-(\d{1,2})-(\d{1,2})/);if(n)return`${parseInt(n[1],10)}年${parseInt(n[2],10)}月${parseInt(n[3],10)}日`;let r=new Date(t.includes(` `)?t.replace(/-/g,`/`):t);return Number.isNaN(r.getTime())?t:`${r.getFullYear()}年${r.getMonth()+1}月${r.getDate()}日`}let A=s(null),j=s(!1),M=s(``),N=l(()=>ht(A.value?.promise_signed_at)),P=s(``),F=s(!1),I=s(!1),L=s(!1),gt=l(()=>Number(A.value?.scoring_sheet?.full_score??100)||100);function R(){return String(P.value??``).trim()}let z=l({get:()=>P.value,set:e=>{let t=(e==null?``:String(e)).replace(/[^\d.-]/g,``);t=t.replace(/(?!^)-/g,``),t=t.replace(/(\..*)\./g,`$1`),P.value=t}});function B(){let e=A.value;if(!e?.scoring_sheet?.items?.length){P.value=``,I.value=!1,L.value=!1;return}let t=e.my_review_score?.line_total,n=e.my_review_score?.payload_json?.line_total,r=t!=null&&String(t).trim()!==``?String(t):n!=null&&String(n).trim()!==``?String(n):``;if(r===``)P.value=``;else{let e=Number(r);P.value=Number.isFinite(e)?V(e.toFixed(E)):``}I.value=!1,L.value=!1}c(A,()=>B(),{deep:!0});function V(e){return e.replace(/\.?0+$/,``)}function H(e){return V(Number(e).toFixed(E))}function _t(e){return/\.\d{3,}/.test(e)}let U=l(()=>A.value?.scoring_sheet?.items??[]),vt=l(()=>{let e=U.value,t=[],n=0;for(;nft?`项目总分不能大于 100`:null:`须为数字`}function yt(){I.value=!0}let bt=l(()=>!A.value?.scoring_allowed||!U.value.length?!1:W()===null&&R()!==``),G=l(()=>{if(!U.value.length)return``;let e=W();return e&&(L.value||I.value||R()!==``)?e:``}),xt=l(()=>{let e=A.value;return e?`项目编号:${e.project_code} · ${e.score_display}`:``}),K=l(()=>A.value?.files.find(e=>e.kind===`plan`)??null),q=l(()=>A.value?.files.filter(e=>e.kind===`supporting`)??[]),J=l(()=>{let e=A.value?.promise_signature;if(e==null||typeof e!=`string`)return``;let t=e.trim();return t===``?``:t.startsWith(`data:`)?t:`data:image/png;base64,${t}`});async function Y(){let e=k.value,t=O.value,{token:n}=g();if(!/^\d+$/.test(e)||!t||!n){M.value=`参数无效或未登录`,A.value=null;return}j.value=!0,M.value=``;try{let r=ae(parseInt(e,10),t),i=await fetch(r,{headers:{Authorization:`Bearer ${n}`,Accept:`application/json`}});if(!i.ok){let e=await i.json().catch(()=>({}));M.value=(typeof e==`object`&&e&&`message`in e?String(e.message??``):``)||`加载失败(${i.status})`,A.value=null;return}A.value=(await i.json()).data??null}catch{M.value=`网络错误`,A.value=null}finally{j.value=!1}}c([k,O],()=>void Y()),a(()=>void Y());function St(){let e=O.value;if(!e){D.push(`/c`);return}D.push({name:`reviewer-projects`,params:{slug:e},query:fe(pe(`reviewer-projects`,e),y.query)})}let X=s(null);async function Z(e){if(X.value!=null){v.warning(`附件正在下载中,请勿重复点击`);return}let t=k.value,n=O.value,{token:r}=g();if(!/^\d+$/.test(t)||!n||!r){v.warning(`未登录或参数无效`);return}let i=e.original_name?.trim()||`附件`,a=ue(i,e.size);if(!a)return;X.value=e.id;let o=ie(parseInt(t,10),e.id,n);try{let e=await fetch(o,{headers:{Authorization:`Bearer ${r}`,Accept:`application/json,*/*`}});if(!e.ok){let t=`下载附件失败`;try{let n=await e.json();typeof n.message==`string`&&n.message.trim()&&(t=n.message.trim())}catch{}v.error(t);return}a.setText(`正在保存「${i}」…`);let t=await e.blob(),n=URL.createObjectURL(t),s=document.createElement(`a`);s.href=n,s.download=i===`附件`?`download`:i,s.rel=`noopener`,document.body.appendChild(s),s.click(),s.remove(),URL.revokeObjectURL(n),le()}catch{v.error(`网络错误,无法下载`)}finally{a.close(),X.value=null}}function Ct(){return{line_total:Number(R())}}function Q(){typeof document>`u`||(document.querySelectorAll(`.modal-backdrop`).forEach(e=>e.remove()),document.body.classList.remove(`modal-open`),document.body.style.removeProperty(`overflow`),document.body.style.removeProperty(`padding-right`))}function wt(){return new Promise(e=>{if(typeof document>`u`){e();return}let t=document.getElementById(`reviewerScoreModal`);if(!t){Q(),e();return}let n=!1,r=()=>{n||(n=!0,t.removeEventListener(`hidden.bs.modal`,i),Q(),e())},i=()=>r();t.addEventListener(`hidden.bs.modal`,i),(_.getInstance(t)??_.getOrCreateInstance(t)).hide(),window.setTimeout(r,450)})}function Tt(){if(!A.value?.scoring_allowed){v.warning(A.value?.scoring_blocked_reason||`该赛道未配置打分表,暂不可评审`);return}if(L.value=!1,I.value=!1,Q(),typeof document>`u`)return;let e=document.getElementById(`reviewerScoreModal`);e&&_.getOrCreateInstance(e).show()}async function $(){let e=k.value,t=O.value,{token:n}=g();if(!/^\d+$/.test(e)||!t||!n){v.warning(`未登录或参数无效`);return}if(!A.value?.scoring_allowed||!U.value.length){v.warning(A.value?.scoring_blocked_reason||`该赛道未配置打分表,暂不可评审`);return}if(!bt.value){L.value=!0,v.warning(W()||`请填写 0~100 之间的项目总分`);return}F.value=!0;try{let r=Ct(),i=oe(parseInt(e,10)),a=await fetch(i,{method:`POST`,headers:{Authorization:`Bearer ${n}`,Accept:`application/json`,"Content-Type":`application/json`},body:JSON.stringify({competition_slug:t,payload:r})}),o=await a.json().catch(()=>({}));if(!a.ok){let e=o,t=e.errors?.payload?.[0],n=typeof t==`string`&&t?t:typeof e.message==`string`?e.message:`提交失败(${a.status})`;v.error(n);return}await wt();let s=o.data;A.value&&s&&(s.my_review_score!==void 0&&(A.value.my_review_score=s.my_review_score),typeof s.score_display==`string`&&(A.value.score_display=s.score_display),typeof s.score_is_pending==`boolean`&&(A.value.score_is_pending=s.score_is_pending)),B(),v.success(typeof o.message==`string`?String(o.message):`提交成功`)}catch{v.error(`网络错误,提交失败`)}finally{F.value=!1}}return(i,a)=>(p(),m(`div`,me,[h(`div`,he,[a[2]||=h(`h5`,{class:`mb-0 section-title`},`项目详情`,-1),h(`div`,ge,[A.value?(p(),m(`span`,{key:0,class:e([`status-pill`,A.value.score_is_pending?`status-pending`:`status-pass`])},d(xt.value),3)):t(``,!0),h(`button`,{type:`button`,class:`btn btn-sm btn-outline-secondary event-back-btn`,onClick:St},` 返回列表 `)])]),M.value?(p(),m(`p`,_e,d(M.value),1)):j.value?(p(),m(`p`,ve,`加载中…`)):A.value?(p(),m(`div`,ye,[h(`div`,be,[r(de,{detail:A.value,"show-recommend":!1},null,8,[`detail`]),h(`div`,xe,[h(`div`,Se,[a[3]||=h(`label`,{class:`form-label`},`商业计划书`,-1),K.value?(p(),m(`p`,Ce,[h(`a`,{role:`button`,href:`#`,class:e([`text-danger text-decoration-none`,{"pe-none opacity-75":X.value!=null}]),onClick:a[0]||=f(e=>Z(K.value),[`prevent`])},d(X.value===K.value.id?`下载中… ${K.value.original_name}`:K.value.original_name),3)])):(p(),m(`p`,we,`—`))]),h(`div`,Te,[a[4]||=h(`label`,{class:`form-label`},`其他佐证材料`,-1),q.value.length?(p(),m(`ul`,Ee,[(p(!0),m(u,null,o(q.value,t=>(p(),m(`li`,{key:t.id},[h(`a`,{role:`button`,href:`#`,class:e([`text-danger text-decoration-none`,{"pe-none opacity-75":X.value!=null}]),onClick:f(e=>Z(t),[`prevent`])},d(X.value===t.id?`下载中… ${t.original_name}`:t.original_name),11,De)]))),128))])):(p(),m(`p`,Oe,`—`))]),h(`div`,ke,[a[6]||=h(`label`,{class:`form-label`},`参赛承诺书`,-1),h(`p`,b,[A.value.promise_signed?(p(),m(u,{key:0},[a[5]||=h(`button`,{type:`button`,class:`btn btn-link btn-sm p-0 align-baseline text-danger`,"data-bs-toggle":`modal`,"data-bs-target":`#reviewerPledgeModal`},` 已签署 · 查看承诺书与签名 `,-1),h(`span`,x,`日期:`+d(N.value),1)],64)):(p(),m(u,{key:1},[n(`未签署`)],64))])]),h(`div`,S,[h(`button`,{type:`button`,class:`btn btn-primary px-4`,style:{"background-color":`var(--primary, #052d62)`,"border-color":`var(--primary, #052d62)`},disabled:!A.value.scoring_allowed,onClick:Tt},d(A.value.score_is_pending?`项目评分`:`修改项目评分`),9,C),A.value.scoring_allowed?A.value.my_review_score?(p(),m(`span`,Ae,`最近保存:`+d(A.value.my_review_score.updated_at)+` · 项目得分 `+d(V(Number(A.value.my_review_score.line_total).toFixed(2)))+` 分`,1)):t(``,!0):(p(),m(`span`,w,d(A.value.scoring_blocked_reason||`该赛道未配置打分表,暂不可评审`),1))])])])])):t(``,!0),h(`div`,je,[h(`div`,Me,[h(`div`,Ne,[h(`div`,Pe,[A.value?(p(),m(`div`,Fe,[h(`h1`,Ie,d(mt.value),1),h(`div`,Le,[A.value.pledge_content_html?.trim()?(p(),m(`div`,{key:0,class:`promise-doc-body promise-doc-body--rich`,innerHTML:A.value.pledge_content_html},null,8,Re)):(p(),m(`div`,ze,[...a[7]||=[h(`p`,{class:`text-secondary mb-0`},`本场赛事未配置承诺书正文(可在管理端赛事中心维护)。`,-1)]]))]),A.value.promise_signed?(p(),m(`div`,Be,[h(`div`,Ve,[a[8]||=h(`span`,{class:`promise-doc-signlabel`},`参赛人签名:`,-1),J.value?(p(),m(`img`,{key:0,src:J.value,alt:``,class:`reviewer-promise-sig-img`,loading:`lazy`},null,8,He)):(p(),m(`span`,Ue,`暂无`))]),h(`div`,We,[h(`span`,Ge,[a[9]||=n(`日期:`,-1),h(`strong`,null,d(N.value),1)])])])):t(``,!0)])):t(``,!0),a[10]||=h(`div`,{class:`promise-sign-actions`},[h(`button`,{type:`button`,class:`btn btn-light notice-cancel-btn`,"data-bs-dismiss":`modal`},`关闭`)],-1)])])])]),h(`div`,Ke,[h(`div`,qe,[h(`div`,Je,[h(`div`,Ye,[h(`h5`,Xe,d(A.value?.scoring_sheet?.title||`项目评分`),1),a[11]||=h(`button`,{type:`button`,class:`btn-close scoring-modal-close`,"data-bs-dismiss":`modal`,"aria-label":`关闭`},null,-1)]),h(`div`,Ze,[a[15]||=h(`p`,{class:`small text-secondary mb-2 text-center scoring-modal-hint`},` 下表为评审参考;请在底部填写项目总分(0~100,最多两位小数,可为 0)。 `,-1),G.value?(p(),m(`p`,Qe,d(G.value),1)):t(``,!0),h(`div`,$e,[h(`table`,et,[a[12]||=h(`colgroup`,null,[h(`col`,{class:`col-seq`}),h(`col`,{class:`col-category`}),h(`col`,{class:`col-indicator`}),h(`col`,{class:`col-criteria`}),h(`col`,{class:`col-max`})],-1),a[13]||=h(`thead`,null,[h(`tr`,null,[h(`th`,{class:`text-nowrap text-center`},`序号`),h(`th`,{class:`text-nowrap text-center`},`指标分类`),h(`th`,{class:`text-nowrap text-center`},`评审指标`),h(`th`,{class:`text-center`},`核心评审要素(评委打分依据)`),h(`th`,{class:`text-nowrap text-center`},`分值`)])],-1),h(`tbody`,null,[(p(!0),m(u,null,o(vt.value,e=>(p(),m(`tr`,{key:e.item.key},[h(`td`,tt,d(e.item.sort||e.idx+1),1),e.categoryRowspan>0?(p(),m(`td`,{key:0,rowspan:e.categoryRowspan,class:`text-center scoring-category`},d(e.item.category),9,nt)):t(``,!0),h(`td`,rt,d(e.item.title),1),h(`td`,it,d(e.item.criteria||`—`),1),h(`td`,at,d(H(e.item.max_score)),1)]))),128))])])]),h(`div`,ot,[a[14]||=h(`label`,{class:`form-label mb-1 fw-semibold`,for:`reviewer-total-score-input`},`项目总分`,-1),h(`div`,st,[ee(h(`input`,{id:`reviewer-total-score-input`,"onUpdate:modelValue":a[1]||=e=>z.value=e,class:e([`form-control scoring-total-input text-center`,{"is-invalid":!!W()}]),type:`text`,inputmode:`decimal`,autocomplete:`off`,placeholder:`请输入总分`,"aria-label":`项目总分`,onBlur:yt,onKeydown:re(f($,[`prevent`]),[`enter`])},null,42,ct),[[te,z.value]]),h(`span`,lt,`满分 `+d(H(gt.value)),1)]),W()?(p(),m(`div`,T,d(W()),1)):t(``,!0)])]),h(`div`,ut,[a[16]||=h(`button`,{type:`button`,class:`btn btn-secondary`,"data-bs-dismiss":`modal`},`取消`,-1),h(`button`,{type:`button`,class:`btn btn-primary`,style:{"background-color":`var(--primary, #052d62)`,"border-color":`var(--primary, #052d62)`},disabled:F.value,onClick:$},d(F.value?`提交中…`:`确认提交`),9,dt)])])])])]))}}),[[`__scopeId`,`data-v-5584ff7a`]]);export{D as default}; \ No newline at end of file diff --git a/public/admin/assets/ReviewerLayout-B1QWLigA.js b/public/admin/assets/ReviewerLayout-BgI2L8Cl.js similarity index 98% rename from public/admin/assets/ReviewerLayout-B1QWLigA.js rename to public/admin/assets/ReviewerLayout-BgI2L8Cl.js index bc4b6d7..226b2ac 100644 --- a/public/admin/assets/ReviewerLayout-B1QWLigA.js +++ b/public/admin/assets/ReviewerLayout-BgI2L8Cl.js @@ -1 +1 @@ -import{$t as e,D as t,G as n,J as r,O as i,W as a,Z as o,_t as s,at as c,b as l,in as u,k as ee,m as d,q as te,st as f,w as p,x as m}from"./vue.runtime.esm-bundler-OsdSFvn7.js";import{f as h,m as g,u as ne,x as _}from"./api-rQwE0AaH.js";import{S as v,c as re,f as ie,l as ae,u as oe}from"./index-DAT5gpOZ.js";import{t as y}from"./_plugin-vue_export-helper-CXTkFu_Z.js";/* empty css *//* empty css */import{i as b,o as se,r as x,t as ce}from"./competitionBranding-DKFkcrfF.js";import{n as le,r as S,t as C}from"./PortalChangePasswordModal-DBmd4yLD.js";async function w(e){let{token:t}=_();if(!t)throw Error(`未登录`);let n=await fetch(`${g()}/api/v1/review/auth/password`,{method:`POST`,headers:{Authorization:`Bearer ${t}`,Accept:`application/json`,"Content-Type":`application/json`},body:JSON.stringify(e)});if(!n.ok){let e=await n.json().catch(()=>({})),t=e.errors?.current_password?.[0]||e.errors?.password?.[0]||e.message||`修改密码失败`;throw Error(t)}}var T={class:`reviewer-layout-root`},E={class:`navbar navbar-expand-lg layout-header`},D={class:`container-fluid px-4`},O={class:`navbar-brand mb-0 prototype-title`},k={class:`dropdown`},A={class:`header-user dropdown-toggle`,type:`button`,"data-bs-toggle":`dropdown`,"aria-expanded":`false`},j={class:`header-user-name`},M={class:`dropdown-menu dropdown-menu-end header-user-menu`},N={id:`mobileNavSection`,class:`container-fluid px-4 pt-2 pb-1 d-lg-none`},P={class:`mobile-nav-wrap`},F={class:`container-fluid px-4 py-3 layout-main`},I={class:`row g-3 portal-layout-row`},L={class:`col-12 col-md-3 col-lg-2 layout-sider`},R={class:`card h-100 portal-sider-card`},z={class:`card-body`},B={class:`nav flex-column gap-2`},V={class:`col-12 col-md-9 col-lg-10 reviewer-main-column portal-main-column`},H={class:`reviewer-main-surface border rounded-3 bg-white h-100`},U={class:`border-top bg-white text-center py-2 small text-secondary prototype-subtitle`},W={id:`reviewerProfileModal`,class:`modal fade`,tabindex:`-1`,"aria-hidden":`true`},ue={class:`modal-dialog modal-dialog-centered profile-modal-dialog`},de={class:`modal-content profile-modal-content`},fe={class:`modal-body profile-modal-body`},pe={class:`row g-3`},me={class:`col-md-6`},he={class:`profile-field`},ge={class:`profile-field-value`},_e={class:`col-md-6`},ve={class:`profile-field`},ye={class:`profile-field-value`},be={class:`col-12`},xe={class:`profile-field`},Se={class:`profile-field-value`},G=y(ee({__name:`ReviewerLayout`,setup(ee){let y=oe(),G=ae(),K=l(()=>String(G.params.slug??``).trim()),q=l(()=>[`reviewer-projects`,`reviewer-application-detail`].includes(String(G.name??``))),J=s(x()),Y=s(``),X=s(`评审员`),Ce=l(()=>se(J.value,Y.value)),we=l(()=>{if(b(J.value.review.footerCopyright))return J.value.review.footerCopyright;if(b(J.value.login.footerCopyright))return J.value.login.footerCopyright;let e=Y.value.trim();return e?`版权所有:${e}`:`版权所有`});async function Te(){let e=K.value;if(!e){J.value=x(),Y.value=``;return}try{let t=await fetch(`${g()}/api/v1/public/competitions/by-slug/${encodeURIComponent(e)}`,{headers:{Accept:`application/json`}});if(!t.ok){J.value=x(),Y.value=``;return}let n=await t.json(),r=n.data!=null&&typeof n.data==`object`&&!Array.isArray(n.data)?n.data:n;if(!re(r).enabled){h(),e&&y.replace({name:`reviewer-login`,params:{slug:e}});return}Y.value=String(r.name??``),J.value=ce(r.branding_json??null)}catch{J.value=x(),Y.value=``}}c(J,()=>le(J.value.login.themePrimary),{deep:!0,immediate:!0}),c(K,()=>void Te(),{immediate:!0}),r(`reviewerCompetitionName`,Y);let Z=s({name:`—`,mobile:`—`,username:`—`});async function Ee(){let{token:e}=_();if(e)try{let t=await fetch(`${g()}${ne}`,{headers:{Authorization:`Bearer ${e}`,Accept:`application/json`}});if(!t.ok)return;let n=(await t.json()).reviewer;X.value=n?.name?.trim()||n?.username?.trim()||`评审员`,Z.value={name:n?.name??`—`,mobile:n?.mobile??`—`,username:n?.username??`—`}}catch{}}function De(){h();let e=K.value;e?y.replace({name:`reviewer-login`,params:{slug:e}}):y.replace(`/c`)}let Q=s(null),$=s(!1);function Oe(){Q.value?.reset();let e=document.getElementById(`reviewerPasswordModal`);e&&v.getOrCreateInstance(e).show()}async function ke(e){$.value=!0;try{await w(e),ie.success(`密码已更新`);let t=document.getElementById(`reviewerPasswordModal`);t&&v.getOrCreateInstance(t).hide()}catch(e){Q.value?.setError(e instanceof Error?e.message:`修改密码失败`)}finally{$.value=!1}}return a(()=>{document.body.classList.add(`prototype-page`,`participant-portal-theme`,`reviewer-mode`,`admin-desktop-page`,`reviewer-score-2colors`),Ee()}),n(()=>{document.body.classList.remove(`prototype-page`,`participant-portal-theme`,`reviewer-mode`,`admin-desktop-page`,`reviewer-score-2colors`),S()}),(n,r)=>{let a=o(`router-link`),s=o(`router-view`);return te(),p(`div`,T,[m(`header`,E,[m(`div`,D,[m(`span`,O,u(Ce.value),1),m(`div`,k,[m(`button`,A,[r[0]||=m(`svg`,{width:`22`,height:`22`,viewBox:`0 0 24 24`,fill:`none`,"aria-hidden":`true`},[m(`circle`,{cx:`12`,cy:`12`,r:`9.5`,stroke:`currentColor`,"stroke-width":`2`}),m(`circle`,{cx:`12`,cy:`9`,r:`3.2`,fill:`currentColor`}),m(`path`,{d:`M6.8 18.2c1.1-2.4 3-3.6 5.2-3.6s4.1 1.2 5.2 3.6`,fill:`currentColor`})],-1),m(`span`,j,u(X.value),1)]),m(`ul`,M,[r[3]||=m(`li`,null,[m(`a`,{class:`dropdown-item`,href:`javascript:void(0)`,"data-bs-toggle":`modal`,"data-bs-target":`#reviewerProfileModal`},[m(`span`,{class:`menu-icon`},`👤`),t(`个人信息 `)])],-1),m(`li`,null,[m(`a`,{class:`dropdown-item`,href:`javascript:void(0)`,onClick:d(Oe,[`prevent`])},[...r[1]||=[m(`span`,{class:`menu-icon`},`🔒`,-1),t(`修改密码 `,-1)]])]),r[4]||=m(`li`,null,[m(`hr`,{class:`dropdown-divider`})],-1),m(`li`,null,[m(`a`,{class:`dropdown-item text-danger`,href:`javascript:void(0)`,onClick:d(De,[`prevent`])},[...r[2]||=[m(`span`,{class:`menu-icon`},`↪`,-1),t(`退出登录 `,-1)]])])])])])]),m(`div`,N,[m(`div`,P,[i(a,{class:e([`mobile-nav-link`,{active:q.value}]),to:{name:`reviewer-projects`,params:{slug:K.value}}},{default:f(()=>[...r[5]||=[t(` 项目评审 `,-1)]]),_:1},8,[`class`,`to`])])]),m(`div`,F,[m(`div`,I,[m(`aside`,L,[m(`div`,R,[m(`div`,z,[m(`nav`,B,[i(a,{class:e([`nav-link text-start`,{active:q.value}]),to:{name:`reviewer-projects`,params:{slug:K.value}}},{default:f(()=>[...r[6]||=[t(` 项目评审 `,-1)]]),_:1},8,[`class`,`to`])])])])]),m(`main`,V,[m(`div`,H,[i(s)])])])]),m(`footer`,U,u(we.value),1),m(`div`,W,[m(`div`,ue,[m(`div`,de,[r[10]||=m(`div`,{class:`modal-header profile-modal-header`},[m(`h5`,{class:`modal-title profile-modal-title`},`个人信息`),m(`button`,{type:`button`,class:`btn-close`,"data-bs-dismiss":`modal`,"aria-label":`关闭`})],-1),m(`div`,fe,[m(`div`,pe,[m(`div`,me,[m(`div`,he,[r[7]||=m(`div`,{class:`profile-field-label`},`姓名`,-1),m(`div`,ge,u(Z.value.name),1)])]),m(`div`,_e,[m(`div`,ve,[r[8]||=m(`div`,{class:`profile-field-label`},`手机号`,-1),m(`div`,ye,u(Z.value.mobile),1)])]),m(`div`,be,[m(`div`,xe,[r[9]||=m(`div`,{class:`profile-field-label`},`登录账号`,-1),m(`div`,Se,u(Z.value.username),1)])])])])])])]),i(C,{ref_key:`passwordModalRef`,ref:Q,"modal-id":`reviewerPasswordModal`,submitting:$.value,onSubmit:ke},null,8,[`submitting`])])}}}),[[`__scopeId`,`data-v-47a7c10e`]]);export{G as default}; \ No newline at end of file +import{$t as e,D as t,G as n,J as r,O as i,W as a,Z as o,_t as s,at as c,b as l,in as u,k as ee,m as d,q as te,st as f,w as p,x as m}from"./vue.runtime.esm-bundler-OsdSFvn7.js";import{f as h,m as g,u as ne,x as _}from"./api-rQwE0AaH.js";import{S as v,c as re,f as ie,l as ae,u as oe}from"./index-t7bgup9e.js";import{t as y}from"./_plugin-vue_export-helper-CXTkFu_Z.js";/* empty css *//* empty css */import{i as b,o as se,r as x,t as ce}from"./competitionBranding-DKFkcrfF.js";import{n as le,r as S,t as C}from"./PortalChangePasswordModal-DBmd4yLD.js";async function w(e){let{token:t}=_();if(!t)throw Error(`未登录`);let n=await fetch(`${g()}/api/v1/review/auth/password`,{method:`POST`,headers:{Authorization:`Bearer ${t}`,Accept:`application/json`,"Content-Type":`application/json`},body:JSON.stringify(e)});if(!n.ok){let e=await n.json().catch(()=>({})),t=e.errors?.current_password?.[0]||e.errors?.password?.[0]||e.message||`修改密码失败`;throw Error(t)}}var T={class:`reviewer-layout-root`},E={class:`navbar navbar-expand-lg layout-header`},D={class:`container-fluid px-4`},O={class:`navbar-brand mb-0 prototype-title`},k={class:`dropdown`},A={class:`header-user dropdown-toggle`,type:`button`,"data-bs-toggle":`dropdown`,"aria-expanded":`false`},j={class:`header-user-name`},M={class:`dropdown-menu dropdown-menu-end header-user-menu`},N={id:`mobileNavSection`,class:`container-fluid px-4 pt-2 pb-1 d-lg-none`},P={class:`mobile-nav-wrap`},F={class:`container-fluid px-4 py-3 layout-main`},I={class:`row g-3 portal-layout-row`},L={class:`col-12 col-md-3 col-lg-2 layout-sider`},R={class:`card h-100 portal-sider-card`},z={class:`card-body`},B={class:`nav flex-column gap-2`},V={class:`col-12 col-md-9 col-lg-10 reviewer-main-column portal-main-column`},H={class:`reviewer-main-surface border rounded-3 bg-white h-100`},U={class:`border-top bg-white text-center py-2 small text-secondary prototype-subtitle`},W={id:`reviewerProfileModal`,class:`modal fade`,tabindex:`-1`,"aria-hidden":`true`},ue={class:`modal-dialog modal-dialog-centered profile-modal-dialog`},de={class:`modal-content profile-modal-content`},fe={class:`modal-body profile-modal-body`},pe={class:`row g-3`},me={class:`col-md-6`},he={class:`profile-field`},ge={class:`profile-field-value`},_e={class:`col-md-6`},ve={class:`profile-field`},ye={class:`profile-field-value`},be={class:`col-12`},xe={class:`profile-field`},Se={class:`profile-field-value`},G=y(ee({__name:`ReviewerLayout`,setup(ee){let y=oe(),G=ae(),K=l(()=>String(G.params.slug??``).trim()),q=l(()=>[`reviewer-projects`,`reviewer-application-detail`].includes(String(G.name??``))),J=s(x()),Y=s(``),X=s(`评审员`),Ce=l(()=>se(J.value,Y.value)),we=l(()=>{if(b(J.value.review.footerCopyright))return J.value.review.footerCopyright;if(b(J.value.login.footerCopyright))return J.value.login.footerCopyright;let e=Y.value.trim();return e?`版权所有:${e}`:`版权所有`});async function Te(){let e=K.value;if(!e){J.value=x(),Y.value=``;return}try{let t=await fetch(`${g()}/api/v1/public/competitions/by-slug/${encodeURIComponent(e)}`,{headers:{Accept:`application/json`}});if(!t.ok){J.value=x(),Y.value=``;return}let n=await t.json(),r=n.data!=null&&typeof n.data==`object`&&!Array.isArray(n.data)?n.data:n;if(!re(r).enabled){h(),e&&y.replace({name:`reviewer-login`,params:{slug:e}});return}Y.value=String(r.name??``),J.value=ce(r.branding_json??null)}catch{J.value=x(),Y.value=``}}c(J,()=>le(J.value.login.themePrimary),{deep:!0,immediate:!0}),c(K,()=>void Te(),{immediate:!0}),r(`reviewerCompetitionName`,Y);let Z=s({name:`—`,mobile:`—`,username:`—`});async function Ee(){let{token:e}=_();if(e)try{let t=await fetch(`${g()}${ne}`,{headers:{Authorization:`Bearer ${e}`,Accept:`application/json`}});if(!t.ok)return;let n=(await t.json()).reviewer;X.value=n?.name?.trim()||n?.username?.trim()||`评审员`,Z.value={name:n?.name??`—`,mobile:n?.mobile??`—`,username:n?.username??`—`}}catch{}}function De(){h();let e=K.value;e?y.replace({name:`reviewer-login`,params:{slug:e}}):y.replace(`/c`)}let Q=s(null),$=s(!1);function Oe(){Q.value?.reset();let e=document.getElementById(`reviewerPasswordModal`);e&&v.getOrCreateInstance(e).show()}async function ke(e){$.value=!0;try{await w(e),ie.success(`密码已更新`);let t=document.getElementById(`reviewerPasswordModal`);t&&v.getOrCreateInstance(t).hide()}catch(e){Q.value?.setError(e instanceof Error?e.message:`修改密码失败`)}finally{$.value=!1}}return a(()=>{document.body.classList.add(`prototype-page`,`participant-portal-theme`,`reviewer-mode`,`admin-desktop-page`,`reviewer-score-2colors`),Ee()}),n(()=>{document.body.classList.remove(`prototype-page`,`participant-portal-theme`,`reviewer-mode`,`admin-desktop-page`,`reviewer-score-2colors`),S()}),(n,r)=>{let a=o(`router-link`),s=o(`router-view`);return te(),p(`div`,T,[m(`header`,E,[m(`div`,D,[m(`span`,O,u(Ce.value),1),m(`div`,k,[m(`button`,A,[r[0]||=m(`svg`,{width:`22`,height:`22`,viewBox:`0 0 24 24`,fill:`none`,"aria-hidden":`true`},[m(`circle`,{cx:`12`,cy:`12`,r:`9.5`,stroke:`currentColor`,"stroke-width":`2`}),m(`circle`,{cx:`12`,cy:`9`,r:`3.2`,fill:`currentColor`}),m(`path`,{d:`M6.8 18.2c1.1-2.4 3-3.6 5.2-3.6s4.1 1.2 5.2 3.6`,fill:`currentColor`})],-1),m(`span`,j,u(X.value),1)]),m(`ul`,M,[r[3]||=m(`li`,null,[m(`a`,{class:`dropdown-item`,href:`javascript:void(0)`,"data-bs-toggle":`modal`,"data-bs-target":`#reviewerProfileModal`},[m(`span`,{class:`menu-icon`},`👤`),t(`个人信息 `)])],-1),m(`li`,null,[m(`a`,{class:`dropdown-item`,href:`javascript:void(0)`,onClick:d(Oe,[`prevent`])},[...r[1]||=[m(`span`,{class:`menu-icon`},`🔒`,-1),t(`修改密码 `,-1)]])]),r[4]||=m(`li`,null,[m(`hr`,{class:`dropdown-divider`})],-1),m(`li`,null,[m(`a`,{class:`dropdown-item text-danger`,href:`javascript:void(0)`,onClick:d(De,[`prevent`])},[...r[2]||=[m(`span`,{class:`menu-icon`},`↪`,-1),t(`退出登录 `,-1)]])])])])])]),m(`div`,N,[m(`div`,P,[i(a,{class:e([`mobile-nav-link`,{active:q.value}]),to:{name:`reviewer-projects`,params:{slug:K.value}}},{default:f(()=>[...r[5]||=[t(` 项目评审 `,-1)]]),_:1},8,[`class`,`to`])])]),m(`div`,F,[m(`div`,I,[m(`aside`,L,[m(`div`,R,[m(`div`,z,[m(`nav`,B,[i(a,{class:e([`nav-link text-start`,{active:q.value}]),to:{name:`reviewer-projects`,params:{slug:K.value}}},{default:f(()=>[...r[6]||=[t(` 项目评审 `,-1)]]),_:1},8,[`class`,`to`])])])])]),m(`main`,V,[m(`div`,H,[i(s)])])])]),m(`footer`,U,u(we.value),1),m(`div`,W,[m(`div`,ue,[m(`div`,de,[r[10]||=m(`div`,{class:`modal-header profile-modal-header`},[m(`h5`,{class:`modal-title profile-modal-title`},`个人信息`),m(`button`,{type:`button`,class:`btn-close`,"data-bs-dismiss":`modal`,"aria-label":`关闭`})],-1),m(`div`,fe,[m(`div`,pe,[m(`div`,me,[m(`div`,he,[r[7]||=m(`div`,{class:`profile-field-label`},`姓名`,-1),m(`div`,ge,u(Z.value.name),1)])]),m(`div`,_e,[m(`div`,ve,[r[8]||=m(`div`,{class:`profile-field-label`},`手机号`,-1),m(`div`,ye,u(Z.value.mobile),1)])]),m(`div`,be,[m(`div`,xe,[r[9]||=m(`div`,{class:`profile-field-label`},`登录账号`,-1),m(`div`,Se,u(Z.value.username),1)])])])])])])]),i(C,{ref_key:`passwordModalRef`,ref:Q,"modal-id":`reviewerPasswordModal`,submitting:$.value,onSubmit:ke},null,8,[`submitting`])])}}}),[[`__scopeId`,`data-v-47a7c10e`]]);export{G as default}; \ No newline at end of file diff --git a/public/admin/assets/ReviewerLoginView-vNgYiK9E.js b/public/admin/assets/ReviewerLoginView-CX0DhvO5.js similarity index 98% rename from public/admin/assets/ReviewerLoginView-vNgYiK9E.js rename to public/admin/assets/ReviewerLoginView-CX0DhvO5.js index 4a9005d..bb1c0fd 100644 --- a/public/admin/assets/ReviewerLoginView-vNgYiK9E.js +++ b/public/admin/assets/ReviewerLoginView-CX0DhvO5.js @@ -1,4 +1,4 @@ -import{$t as e,C as t,E as n,Et as r,G as i,W as a,_t as o,b as s,ct as c,d as l,in as u,k as d,m as ee,q as f,w as p,x as m}from"./vue.runtime.esm-bundler-OsdSFvn7.js";import{T as te,l as ne,m as re}from"./api-rQwE0AaH.js";import{c as h,d as g,l as _,o as v,s as y,u as b}from"./index-DAT5gpOZ.js";/* empty css */import{i as x,r as S,t as C}from"./competitionBranding-DKFkcrfF.js";/* empty css */var ie={class:`login-page-wls__wrap`},ae={class:`login-page-wls__inner`},oe={class:`login-page-wls__brand`,"aria-label":`赛事说明`},se={class:`login-page-wls__logo`,"aria-hidden":`true`},ce=[`src`],le={key:1,viewBox:`0 0 100 100`,width:`72`,height:`72`,xmlns:`http://www.w3.org/2000/svg`,"aria-hidden":`true`},ue={key:0,class:`login-page-wls__mark`},de=[`innerHTML`],fe={key:1,class:`login-page-wls__title`},w=[`innerHTML`],T={class:`login-page-wls__panel`},E={class:`login-page-wls__card`},pe={class:`login-page-wls__card-title`},me=[`disabled`],he=[`disabled`],ge=[`disabled`],_e={key:0,class:`login-page-wls__footer`},D={class:`login-page-wls__copyright`},O=d({__name:`ReviewerLoginView`,setup(d){let O=_(),k=b(),A=o(``),j=o(``),M=o(!1),N=o(!1),P=o(!1),F=o(``),I=o(`neutral`),L=s(()=>String(O.params.slug??``).trim()),R=o(``),z=o(S()),B=o(!0),V=o(``),H=o(!1),ve=s(()=>I.value===`error`?`login-page-wls__hint login-page-wls__hint--error`:I.value===`success`?`login-page-wls__hint login-page-wls__hint--success`:`login-page-wls__hint`);function U(e){return e.replace(/&/g,`&`).replace(//g,`>`).replace(/"/g,`"`)}let ye=s(()=>{let e=z.value.login.markLine;return x(e)?U(e):``}),be=s(()=>{let e=z.value.login.headline;return x(e)?U(e):``}),W=s(()=>{if(R.value)return R.value;let e=z.value.login.slogan;return x(e)?e:``}),xe=s(()=>!!R.value),Se=s(()=>x(z.value.login.cardWelcome)?z.value.login.cardWelcome.replace(/登陆/g,`登录`):`评审员登录`),G=s(()=>x(z.value.login.footerCopyright)?z.value.login.footerCopyright:``),K=s(()=>x(z.value.login.logoUrl)?z.value.login.logoUrl:``),q=null,J=null,Y=!1;function X(){return re()}function Z(e,t=`neutral`){F.value=e,I.value=t}function Q(){F.value=``,I.value=`neutral`}function Ce(e){if(typeof e!=`object`||!e)return`请求失败`;let t=e,n=t.message;if(typeof n==`string`&&n.trim())return n.trim();let r=t.errors;if(typeof r==`object`&&r&&!Array.isArray(r)){let e=Object.values(r).flatMap(e=>Array.isArray(e)?e.map(e=>String(e)):[]);if(e.length)return e.join(` +import{$t as e,C as t,E as n,Et as r,G as i,W as a,_t as o,b as s,ct as c,d as l,in as u,k as d,m as ee,q as f,w as p,x as m}from"./vue.runtime.esm-bundler-OsdSFvn7.js";import{T as te,l as ne,m as re}from"./api-rQwE0AaH.js";import{c as h,d as g,l as _,o as v,s as y,u as b}from"./index-t7bgup9e.js";/* empty css */import{i as x,r as S,t as C}from"./competitionBranding-DKFkcrfF.js";/* empty css */var ie={class:`login-page-wls__wrap`},ae={class:`login-page-wls__inner`},oe={class:`login-page-wls__brand`,"aria-label":`赛事说明`},se={class:`login-page-wls__logo`,"aria-hidden":`true`},ce=[`src`],le={key:1,viewBox:`0 0 100 100`,width:`72`,height:`72`,xmlns:`http://www.w3.org/2000/svg`,"aria-hidden":`true`},ue={key:0,class:`login-page-wls__mark`},de=[`innerHTML`],fe={key:1,class:`login-page-wls__title`},w=[`innerHTML`],T={class:`login-page-wls__panel`},E={class:`login-page-wls__card`},pe={class:`login-page-wls__card-title`},me=[`disabled`],he=[`disabled`],ge=[`disabled`],_e={key:0,class:`login-page-wls__footer`},D={class:`login-page-wls__copyright`},O=d({__name:`ReviewerLoginView`,setup(d){let O=_(),k=b(),A=o(``),j=o(``),M=o(!1),N=o(!1),P=o(!1),F=o(``),I=o(`neutral`),L=s(()=>String(O.params.slug??``).trim()),R=o(``),z=o(S()),B=o(!0),V=o(``),H=o(!1),ve=s(()=>I.value===`error`?`login-page-wls__hint login-page-wls__hint--error`:I.value===`success`?`login-page-wls__hint login-page-wls__hint--success`:`login-page-wls__hint`);function U(e){return e.replace(/&/g,`&`).replace(//g,`>`).replace(/"/g,`"`)}let ye=s(()=>{let e=z.value.login.markLine;return x(e)?U(e):``}),be=s(()=>{let e=z.value.login.headline;return x(e)?U(e):``}),W=s(()=>{if(R.value)return R.value;let e=z.value.login.slogan;return x(e)?e:``}),xe=s(()=>!!R.value),Se=s(()=>x(z.value.login.cardWelcome)?z.value.login.cardWelcome.replace(/登陆/g,`登录`):`评审员登录`),G=s(()=>x(z.value.login.footerCopyright)?z.value.login.footerCopyright:``),K=s(()=>x(z.value.login.logoUrl)?z.value.login.logoUrl:``),q=null,J=null,Y=!1;function X(){return re()}function Z(e,t=`neutral`){F.value=e,I.value=t}function Q(){F.value=``,I.value=`neutral`}function Ce(e){if(typeof e!=`object`||!e)return`请求失败`;let t=e,n=t.message;if(typeof n==`string`&&n.trim())return n.trim();let r=t.errors;if(typeof r==`object`&&r&&!Array.isArray(r)){let e=Object.values(r).flatMap(e=>Array.isArray(e)?e.map(e=>String(e)):[]);if(e.length)return e.join(` `)}return`请求失败`}async function $(e){if(H.value)return;H.value=!0;let t=U(v(e)).replace(/\r\n|\r|\n/g,`
`);try{await g.alert(t,`评审暂未开放`,{confirmButtonText:`知道了`,confirmButtonClass:`login-page-wls__msgbox-confirm`,customClass:`login-page-wls__msgbox`,closeOnClickModal:!1,closeOnPressEscape:!1,showClose:!1,autofocus:!1,dangerouslyUseHTMLString:!0})}catch{}finally{H.value=!1}}async function we(){R.value=``,z.value=S(),B.value=!0,V.value=``,H.value=!1;let e=L.value,t=typeof document<`u`?document.title:``;if(!e){R.value=`缺少赛事访问地址,请从正确入口进入`;return}try{y(e);let n=await fetch(`${X()}/api/v1/public/competitions/by-slug/${encodeURIComponent(e)}`,{headers:{Accept:`application/json`}});if(!n.ok){R.value=n.status===404?`赛事不存在或未发布,请核对访问地址`:`无法加载赛事信息`;return}let r=await n.json(),i=typeof r==`object`&&r&&`data`in r?r.data:r;z.value=C(i?.branding_json??i?.branding??null);let a=h(i);B.value=a.enabled,V.value=a.message,a.enabled||$(a.message);let o=z.value.documentTitle;typeof document<`u`&&(document.title=x(o)?`${Te(o)} · 评审登录`:t||`评审登录`);let s=z.value.login.themePrimary;x(s)&&typeof document<`u`&&(q===null&&(q=document.body.style.getPropertyValue(`--primary`)||``),document.body.style.setProperty(`--primary`,s),document.body.style.setProperty(`--primary-soft`,`${s}14`));let c=z.value.login.faviconUrl;if(x(c)&&typeof document<`u`){let e=document.querySelector(`link[rel~="icon"]`);e||(e=document.createElement(`link`),e.rel=`icon`,document.head.appendChild(e)),J===null&&(J=e.getAttribute(`href`)||``),e.href=c}}catch{R.value=`网络错误,无法校验赛事链接`}}function Te(e){return e.replace(/[\u200B-\u200D\uFEFF]/gu,``).trim()}async function Ee(){if(!B.value){$(V.value),Z(v(V.value),`error`);return}let e=A.value.trim(),t=j.value;if(M.value=!e,N.value=!t,!e){Z(`请填写账号`,`error`);return}if(!t){Z(`请填写密码`,`error`);return}if(!L.value){Z(`缺少赛事访问地址`,`error`);return}Q(),P.value=!0,Z(`登录中…`,`neutral`);try{let n=`${X()}${ne}`,r=await fetch(n,{method:`POST`,headers:{"Content-Type":`application/json`,Accept:`application/json`,"X-Requested-With":`XMLHttpRequest`},body:JSON.stringify({username:e,password:t,competition_slug:L.value})}),i=await r.json().catch(()=>({}));if(!r.ok){Z(Ce(i),`error`);let e=i.errors?.competition_slug,t=Array.isArray(e)?String(e[0]??``):``;t&&!t.includes(`不存在`)&&!t.includes(`未发布`)&&(B.value=!1,V.value=t,$(t));return}Q();let a=i.token;if(typeof a!=`string`||!a){Z(`登录响应异常:缺少令牌`,`error`);return}te(a,L.value);let o=typeof O.query.redirect==`string`?O.query.redirect:``;if(o&&o.startsWith(`/`)){await k.replace(o);return}await k.replace({name:`reviewer-projects`,params:{slug:L.value}})}catch{Z(`网络错误,请确认后端已启动`,`error`)}finally{P.value=!1}}return a(()=>{typeof document<`u`&&(document.documentElement.classList.add(`cxxfds-login-page`),Y=!0),document.body.classList.add(`login-page-wls`),we()}),i(()=>{if(typeof document<`u`&&Y&&(document.documentElement.classList.remove(`cxxfds-login-page`),Y=!1),document.body.classList.remove(`login-page-wls`),typeof document<`u`&&(q!==null&&(q===``?(document.body.style.removeProperty(`--primary`),document.body.style.removeProperty(`--primary-soft`)):document.body.style.setProperty(`--primary`,q),q=null),J!==null)){let e=document.querySelector(`link[rel~="icon"]`);e&&(J===``?e.removeAttribute(`href`):e.href=J),J=null}}),(i,a)=>(f(),p(`div`,ie,[m(`div`,ae,[m(`aside`,oe,[m(`div`,se,[K.value?(f(),p(`img`,{key:0,src:K.value,alt:``,class:`login-page-wls__logo-img`,width:`72`,height:`72`},null,8,ce)):(f(),p(`svg`,le,[...a[4]||=[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()!==``?String(t):`—`}function ve(){J.value=`create`,X.value=null,Q.value={name:``,mobile:``,username:``,password:``},q.value=!0}function ye(e){J.value=`edit`,X.value=e.reviewer_id;let t=e.reviewer;Q.value={name:t?.name??``,mobile:t?.mobile??``,username:t?.username??``,password:``},q.value=!0}async function be(){if(!Z.value)return;let e=p.value,t=D.value;!e||!t||await Z.value.validate(async n=>{if(n){Y.value=!0;try{if(J.value===`create`){let n=0;try{n=(await T({name:Q.value.name.trim(),username:Q.value.username.trim(),password:Q.value.password,mobile:Q.value.mobile.trim()||null})).id}catch(e){b.error(e instanceof Error?e.message:`创建评审员失败`),Y.value=!1;return}try{await ae({reviewer_id:n,competition_id:e,track_code:t})}catch(e){try{await re(n)}catch{}b.error(e instanceof Error?e.message:`绑定赛道失败`),Y.value=!1;return}b.success(`评审员信息已保存`)}else{let e=X.value;await E(e,{name:Q.value.name.trim(),username:Q.value.username.trim(),mobile:Q.value.mobile.trim()||null,...Q.value.password.trim()?{password:Q.value.password.trim()}:{}}),b.success(`评审员信息已更新`)}q.value=!1,await $(),e&&(S.value=await O(e))}catch(e){b.error(e instanceof Error?e.message:`保存失败`)}finally{Y.value=!1}}})}async function xe(e){let t=e.reviewer?.name??`该评审员`;try{await y.confirm(`确定移除「${t}」对本赛道的评审权限吗?(不删除全局账号)`,`确认删除`,{type:`warning`,confirmButtonText:`确定删除`,cancelButtonText:`取消`})}catch{return}try{await oe(e.id),b.success(`已移除`),await $();let t=p.value;t&&(S.value=await O(t))}catch(e){b.error(e instanceof Error?e.message:`删除失败`)}}return(e,s)=>{let c=o(`el-alert`),l=o(`el-input`),v=o(`el-form-item`),y=o(`el-col`),b=o(`el-row`),C=o(`el-form`),w=o(`el-button`),T=o(`el-dialog`),E=te(`loading`);return m(),g(`div`,se,[s[11]||=_(`div`,{class:`rev-head`},[_(`h5`,{class:`section-title mb-0`},`评审员管理`)],-1),ee(p)?u((m(),g(`div`,ce,[_(`aside`,le,[s[6]||=_(`div`,{class:`reviewer-track-panel-title`},`赛道配置`,-1),_(`div`,ue,[(m(!0),g(d,null,a(x.value,e=>(m(),g(`button`,{key:e.id,type:`button`,class:t([`reviewer-track-tab`,{active:D.value===e.track_code}]),onClick:t=>he(e.track_code)},[_(`span`,A,f(e.title),1),_(`span`,j,f(S.value[e.track_code]??0)+` 人`,1)],10,k))),128))])]),_(`section`,M,[_(`div`,N,[_(`div`,null,[_(`h6`,P,f(fe.value||`—`),1),_(`p`,F,f(pe.value),1)]),_(`div`,I,[_(`button`,{type:`button`,class:`prm-btn-outline`,disabled:!D.value,onClick:ve},` 新增评审员 `,8,L)])]),u((m(),g(`div`,R,[D.value?(m(),g(`table`,z,[s[7]||=_(`thead`,null,[_(`tr`,null,[_(`th`,{style:{width:`18%`}},`姓名`),_(`th`,{style:{width:`22%`}},`电话`),_(`th`,{style:{width:`24%`}},`账户`),_(`th`,{style:{width:`24%`}},`密码`),_(`th`,{class:`text-end`,style:{width:`12%`}},`操作`)])],-1),_(`tbody`,null,[(m(!0),g(d,null,a(W.value,e=>(m(),g(`tr`,{key:e.id},[_(`td`,null,f(e.reviewer?.name??`—`),1),_(`td`,null,f(_e(e)),1),_(`td`,null,f(e.reviewer?.username??`—`),1),_(`td`,null,f(ge(e)),1),_(`td`,B,[_(`button`,{type:`button`,class:`prm-btn-outline sm`,onClick:t=>ye(e)},`修改`,8,V),_(`button`,{type:`button`,class:`prm-btn-light sm`,onClick:t=>xe(e)},`删除`,8,H)])]))),128))])])):n(``,!0),D.value?n(``,!0):(m(),g(`div`,U,f(x.value.length===0?`本场暂无启用中的赛道,请先在「赛事中心」配置赛道后再维护评审员。`:``),1))])),[[E,K.value]]),s[8]||=_(`p`,{class:`footnote`},` 正式环境仅存密码摘要;列表中为占位符而非明文密码。 `,-1)])])),[[E,G.value]]):(m(),ne(c,{key:0,type:`warning`,"show-icon":``,closable:!1,class:`rev-alert`,title:`请先在顶栏「赛事切换」中选择一场赛事,再按赛道维护评审员。`})),i(T,{modelValue:q.value,"onUpdate:modelValue":s[5]||=e=>q.value=e,title:J.value===`create`?`新增评审员`:`修改评审员`,width:`520px`,"destroy-on-close":``,class:`rev-dialog`},{footer:h(()=>[i(w,{onClick:s[4]||=e=>q.value=!1},{default:h(()=>[...s[9]||=[r(`取消`,-1)]]),_:1}),i(w,{type:`primary`,loading:Y.value,onClick:be},{default:h(()=>[...s[10]||=[r(`确定`,-1)]]),_:1},8,[`loading`])]),default:h(()=>[i(C,{ref_key:`formRef`,ref:Z,model:Q.value,rules:de,"label-position":`top`,class:`rev-form`},{default:h(()=>[i(b,{gutter:12},{default:h(()=>[i(y,{span:12},{default:h(()=>[i(v,{label:`姓名`,prop:`name`,required:``},{default:h(()=>[i(l,{modelValue:Q.value.name,"onUpdate:modelValue":s[0]||=e=>Q.value.name=e,maxlength:`64`,placeholder:`必填`},null,8,[`modelValue`])]),_:1})]),_:1}),i(y,{span:12},{default:h(()=>[i(v,{label:`电话`,prop:`mobile`},{default:h(()=>[i(l,{modelValue:Q.value.mobile,"onUpdate:modelValue":s[1]||=e=>Q.value.mobile=e,maxlength:`20`,placeholder:`可选`},null,8,[`modelValue`])]),_:1})]),_:1}),i(y,{span:12},{default:h(()=>[i(v,{label:`账户`,prop:`username`,required:``},{default:h(()=>[i(l,{modelValue:Q.value.username,"onUpdate:modelValue":s[2]||=e=>Q.value.username=e,maxlength:`64`,autocomplete:`off`,placeholder:`必填`},null,8,[`modelValue`])]),_:1})]),_:1}),i(y,{span:12},{default:h(()=>[i(v,{label:J.value===`create`?`密码`:`密码(不修改请留空)`,prop:`password`},{default:h(()=>[i(l,{modelValue:Q.value.password,"onUpdate:modelValue":s[3]||=e=>Q.value.password=e,type:`password`,"show-password":``,maxlength:`255`,autocomplete:`new-password`,placeholder:J.value===`create`?`必填`:`留空表示不修改`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`])]),_:1})]),_:1})]),_:1},8,[`model`])]),_:1},8,[`modelValue`,`title`])])}}}),G=e({default:()=>K}),K=S(W,[[`__scopeId`,`data-v-7a2127e6`]]);export{G as n,K as t}; \ No newline at end of file +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-t7bgup9e.js";import{t as S}from"./_plugin-vue_export-helper-CXTkFu_Z.js";import{o as C}from"./competitions-DP_OWCTo.js";import{t as w}from"./adminCompetition-DfRlbUCX.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()!==``?String(t):`—`}function ve(){J.value=`create`,X.value=null,Q.value={name:``,mobile:``,username:``,password:``},q.value=!0}function ye(e){J.value=`edit`,X.value=e.reviewer_id;let t=e.reviewer;Q.value={name:t?.name??``,mobile:t?.mobile??``,username:t?.username??``,password:``},q.value=!0}async function be(){if(!Z.value)return;let e=p.value,t=D.value;!e||!t||await Z.value.validate(async n=>{if(n){Y.value=!0;try{if(J.value===`create`){let n=0;try{n=(await T({name:Q.value.name.trim(),username:Q.value.username.trim(),password:Q.value.password,mobile:Q.value.mobile.trim()||null})).id}catch(e){b.error(e instanceof Error?e.message:`创建评审员失败`),Y.value=!1;return}try{await ae({reviewer_id:n,competition_id:e,track_code:t})}catch(e){try{await re(n)}catch{}b.error(e instanceof Error?e.message:`绑定赛道失败`),Y.value=!1;return}b.success(`评审员信息已保存`)}else{let e=X.value;await E(e,{name:Q.value.name.trim(),username:Q.value.username.trim(),mobile:Q.value.mobile.trim()||null,...Q.value.password.trim()?{password:Q.value.password.trim()}:{}}),b.success(`评审员信息已更新`)}q.value=!1,await $(),e&&(S.value=await O(e))}catch(e){b.error(e instanceof Error?e.message:`保存失败`)}finally{Y.value=!1}}})}async function xe(e){let t=e.reviewer?.name??`该评审员`;try{await y.confirm(`确定移除「${t}」对本赛道的评审权限吗?(不删除全局账号)`,`确认删除`,{type:`warning`,confirmButtonText:`确定删除`,cancelButtonText:`取消`})}catch{return}try{await oe(e.id),b.success(`已移除`),await $();let t=p.value;t&&(S.value=await O(t))}catch(e){b.error(e instanceof Error?e.message:`删除失败`)}}return(e,s)=>{let c=o(`el-alert`),l=o(`el-input`),v=o(`el-form-item`),y=o(`el-col`),b=o(`el-row`),C=o(`el-form`),w=o(`el-button`),T=o(`el-dialog`),E=te(`loading`);return m(),g(`div`,se,[s[11]||=_(`div`,{class:`rev-head`},[_(`h5`,{class:`section-title mb-0`},`评审员管理`)],-1),ee(p)?u((m(),g(`div`,ce,[_(`aside`,le,[s[6]||=_(`div`,{class:`reviewer-track-panel-title`},`赛道配置`,-1),_(`div`,ue,[(m(!0),g(d,null,a(x.value,e=>(m(),g(`button`,{key:e.id,type:`button`,class:t([`reviewer-track-tab`,{active:D.value===e.track_code}]),onClick:t=>he(e.track_code)},[_(`span`,A,f(e.title),1),_(`span`,j,f(S.value[e.track_code]??0)+` 人`,1)],10,k))),128))])]),_(`section`,M,[_(`div`,N,[_(`div`,null,[_(`h6`,P,f(fe.value||`—`),1),_(`p`,F,f(pe.value),1)]),_(`div`,I,[_(`button`,{type:`button`,class:`prm-btn-outline`,disabled:!D.value,onClick:ve},` 新增评审员 `,8,L)])]),u((m(),g(`div`,R,[D.value?(m(),g(`table`,z,[s[7]||=_(`thead`,null,[_(`tr`,null,[_(`th`,{style:{width:`18%`}},`姓名`),_(`th`,{style:{width:`22%`}},`电话`),_(`th`,{style:{width:`24%`}},`账户`),_(`th`,{style:{width:`24%`}},`密码`),_(`th`,{class:`text-end`,style:{width:`12%`}},`操作`)])],-1),_(`tbody`,null,[(m(!0),g(d,null,a(W.value,e=>(m(),g(`tr`,{key:e.id},[_(`td`,null,f(e.reviewer?.name??`—`),1),_(`td`,null,f(_e(e)),1),_(`td`,null,f(e.reviewer?.username??`—`),1),_(`td`,null,f(ge(e)),1),_(`td`,B,[_(`button`,{type:`button`,class:`prm-btn-outline sm`,onClick:t=>ye(e)},`修改`,8,V),_(`button`,{type:`button`,class:`prm-btn-light sm`,onClick:t=>xe(e)},`删除`,8,H)])]))),128))])])):n(``,!0),D.value?n(``,!0):(m(),g(`div`,U,f(x.value.length===0?`本场暂无启用中的赛道,请先在「赛事中心」配置赛道后再维护评审员。`:``),1))])),[[E,K.value]]),s[8]||=_(`p`,{class:`footnote`},` 正式环境仅存密码摘要;列表中为占位符而非明文密码。 `,-1)])])),[[E,G.value]]):(m(),ne(c,{key:0,type:`warning`,"show-icon":``,closable:!1,class:`rev-alert`,title:`请先在顶栏「赛事切换」中选择一场赛事,再按赛道维护评审员。`})),i(T,{modelValue:q.value,"onUpdate:modelValue":s[5]||=e=>q.value=e,title:J.value===`create`?`新增评审员`:`修改评审员`,width:`520px`,"destroy-on-close":``,class:`rev-dialog`},{footer:h(()=>[i(w,{onClick:s[4]||=e=>q.value=!1},{default:h(()=>[...s[9]||=[r(`取消`,-1)]]),_:1}),i(w,{type:`primary`,loading:Y.value,onClick:be},{default:h(()=>[...s[10]||=[r(`确定`,-1)]]),_:1},8,[`loading`])]),default:h(()=>[i(C,{ref_key:`formRef`,ref:Z,model:Q.value,rules:de,"label-position":`top`,class:`rev-form`},{default:h(()=>[i(b,{gutter:12},{default:h(()=>[i(y,{span:12},{default:h(()=>[i(v,{label:`姓名`,prop:`name`,required:``},{default:h(()=>[i(l,{modelValue:Q.value.name,"onUpdate:modelValue":s[0]||=e=>Q.value.name=e,maxlength:`64`,placeholder:`必填`},null,8,[`modelValue`])]),_:1})]),_:1}),i(y,{span:12},{default:h(()=>[i(v,{label:`电话`,prop:`mobile`},{default:h(()=>[i(l,{modelValue:Q.value.mobile,"onUpdate:modelValue":s[1]||=e=>Q.value.mobile=e,maxlength:`20`,placeholder:`可选`},null,8,[`modelValue`])]),_:1})]),_:1}),i(y,{span:12},{default:h(()=>[i(v,{label:`账户`,prop:`username`,required:``},{default:h(()=>[i(l,{modelValue:Q.value.username,"onUpdate:modelValue":s[2]||=e=>Q.value.username=e,maxlength:`64`,autocomplete:`off`,placeholder:`必填`},null,8,[`modelValue`])]),_:1})]),_:1}),i(y,{span:12},{default:h(()=>[i(v,{label:J.value===`create`?`密码`:`密码(不修改请留空)`,prop:`password`},{default:h(()=>[i(l,{modelValue:Q.value.password,"onUpdate:modelValue":s[3]||=e=>Q.value.password=e,type:`password`,"show-password":``,maxlength:`255`,autocomplete:`new-password`,placeholder:J.value===`create`?`必填`:`留空表示不修改`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`])]),_:1})]),_:1})]),_:1},8,[`model`])]),_:1},8,[`modelValue`,`title`])])}}}),G=e({default:()=>K}),K=S(W,[[`__scopeId`,`data-v-7a2127e6`]]);export{G as n,K as t}; \ No newline at end of file diff --git a/public/admin/assets/ReviewerProjectsView-Ncr8FbkS.js b/public/admin/assets/ReviewerProjectsView-Dxe9Gm-T.js similarity index 97% rename from public/admin/assets/ReviewerProjectsView-Ncr8FbkS.js rename to public/admin/assets/ReviewerProjectsView-Dxe9Gm-T.js index bd4ae86..ac47e4f 100644 --- a/public/admin/assets/ReviewerProjectsView-Ncr8FbkS.js +++ b/public/admin/assets/ReviewerProjectsView-Dxe9Gm-T.js @@ -1 +1 @@ -import{$t as e,C as t,D as n,Et as r,O as i,Y as a,Z as ee,_t as o,at as s,b as c,ct as l,d as te,g as u,ht as d,in as f,k as ne,l as re,p as ie,q as p,st as ae,u as oe,w as m,x as h}from"./vue.runtime.esm-bundler-OsdSFvn7.js";import{c as se,m as ce,x as le}from"./api-rQwE0AaH.js";import{l as g,u as ue}from"./index-DAT5gpOZ.js";import{t as _}from"./_plugin-vue_export-helper-CXTkFu_Z.js";import{a as de,n as fe,o as pe,r as me,t as he}from"./listPageState-9NPjbkq0.js";import{n as ge,r as _e,t as v}from"./entryGroups-mdEgVvvl.js";var y={class:`reviewer-projects-page`},b={class:`container-fluid p-3 p-md-4`},x={class:`filter-panel mb-3`},S={class:`row g-2 align-items-center`},C={class:`col-12 d-flex flex-wrap align-items-center gap-3`},w=[`id`,`value`],T=[`for`],E={class:`col-md-4`},D={class:`col-md-3`},O={class:`col-12 col-md-auto d-flex gap-2`},k={key:0,class:`alert alert-warning py-2 small mb-3`,role:`alert`},A={key:1,class:`small text-secondary mb-2`,"aria-live":`polite`},j={class:`portal-table-scroll table-panel mb-0`},M={class:`table table-hover align-middle mb-0 admin-list-table portal-data-table portal-reviewer-table`},N={key:0},P={class:`text-secondary text-nowrap portal-sticky-left`},F={class:`reviewer-only-col`},I={class:`reviewer-only-col`},ve={class:`reviewer-only-col text-nowrap`},ye={class:`admin-actions-cell portal-sticky-right-1`},L=_(ne({__name:`ReviewerProjectsView`,setup(ne){let _=g(),L=ue(),R=c(()=>String(_.params.slug??``).trim()),z=o([]),B=o(!1),V=o(``),H=o(``),U=d({keyword:``,entry_group:v,review_status:``}),be=ge,W=o({current_page:1,last_page:1,per_page:20,total:0}),G=o(1),K=o(15);function q(){return he(`reviewer-projects`,R.value)}function J(){let e={};return U.entry_group&&(e.entry_group=U.entry_group),U.keyword.trim()&&(e.keyword=U.keyword.trim()),U.review_status&&(e.review_status=U.review_status),e}function Y(){return fe({page:G.value,perPage:K.value,filters:J()})}function X(){let e=q();e.endsWith(`.`)||pe(e,{page:G.value,perPage:K.value,filters:J()})}function xe(){let e=de(q(),_.query);G.value=e.page,K.value=e.perPage,e.filters.entry_group&&(U.entry_group=e.filters.entry_group),U.keyword=e.filters.keyword??``,U.review_status=e.filters.review_status===`pending`||e.filters.review_status===`reviewed`?e.filters.review_status:``}function Z(){let e=Y();me(e,_.query)||R.value&&L.replace({name:`reviewer-projects`,params:{slug:R.value},query:e})}function Se(){let e=new URLSearchParams;e.set(`competition_slug`,R.value),e.set(`page`,String(G.value)),e.set(`per_page`,String(K.value));let t=U.keyword.trim();return t&&e.set(`keyword`,t),U.entry_group&&e.set(`entry_group`,U.entry_group),(U.review_status===`pending`||U.review_status===`reviewed`)&&e.set(`review_status`,U.review_status),e}async function Q(){let e=R.value,{token:t}=le();if(!e||!t){V.value=`未登录或缺少赛事信息`;return}B.value=!0,V.value=``;try{let e=`${ce()}${se}?${Se().toString()}`,n=await fetch(e,{headers:{Authorization:`Bearer ${t}`,Accept:`application/json`}});if(!n.ok){let e=await n.json().catch(()=>({}));V.value=(typeof e==`object`&&e&&`message`in e?String(e.message??``):``)||`加载失败(${n.status})`,z.value=[],H.value=``;return}let r=await n.json();z.value=Array.isArray(r.data)?r.data:[];let i=r.meta;i&&(W.value={current_page:i.current_page??1,last_page:i.last_page??1,per_page:i.per_page??20,total:i.total??0}),Ce()}catch{V.value=`网络错误,请稍后重试`,z.value=[],H.value=``}finally{B.value=!1}}function Ce(){let e=W.value.total;if(e<=0){H.value=`暂无符合条件的数据`;return}let t=[`共 ${e} 条`];U.entry_group&&t.push(U.entry_group);let n=U.keyword.trim();n&&t.push(`关键词「${n}」`),U.review_status===`pending`?t.push(`待评审`):U.review_status===`reviewed`&&t.push(`已评审`),H.value=t.join(` · `)}function $(e=G.value){let t=G.value!==e;G.value=e,t||(X(),Z(),Q())}function we(){U.keyword=``,U.entry_group=v,U.review_status=``,$(1)}xe(),s([R,G,K],()=>{X(),Z(),Q()},{immediate:!0});let Te=c(()=>B.value?`加载中…`:H.value||`暂无报名数据`);function Ee(e){G.value=e}function De(e){K.value=e,G.value=1}function Oe(e){return(W.value.current_page-1)*W.value.per_page+e+1}function ke(e){return e.score_is_pending?`评审`:`查看`}return(o,s)=>{let c=ee(`router-link`);return p(),m(`div`,y,[h(`div`,b,[s[10]||=h(`div`,{class:`d-flex justify-content-between align-items-center flex-wrap gap-2 mb-3`},[h(`h5`,{class:`mb-0 section-title`},`项目评审`)],-1),h(`div`,x,[h(`div`,S,[h(`div`,C,[s[6]||=h(`span`,{class:`small text-secondary text-nowrap`},`参赛组别`,-1),(p(!0),m(u,null,a(r(be),e=>(p(),m(`div`,{key:e,class:`form-check form-check-inline mb-0`},[l(h(`input`,{id:`reviewer-entry-group-${e}`,"onUpdate:modelValue":s[0]||=e=>U.entry_group=e,class:`form-check-input`,type:`radio`,name:`reviewer-entry-group`,value:e,onChange:s[1]||=e=>$(1)},null,40,w),[[re,U.entry_group]]),h(`label`,{class:`form-check-label`,for:`reviewer-entry-group-${e}`},f(e),9,T)]))),128))]),h(`div`,E,[l(h(`input`,{"onUpdate:modelValue":s[2]||=e=>U.keyword=e,type:`search`,class:`form-control`,placeholder:`搜索项目、姓名、学校、手机号、推荐方`,onKeydown:s[3]||=ie(e=>$(1),[`enter`])},null,544),[[te,U.keyword]])]),h(`div`,D,[l(h(`select`,{"onUpdate:modelValue":s[4]||=e=>U.review_status=e,class:`form-select`},[...s[7]||=[h(`option`,{value:``},`全部评审状态`,-1),h(`option`,{value:`pending`},`待评审`,-1),h(`option`,{value:`reviewed`},`已评审`,-1)]],512),[[oe,U.review_status]])]),h(`div`,O,[h(`button`,{type:`button`,class:`btn btn-primary px-3`,onClick:s[5]||=e=>$(1)},`查询`),h(`button`,{type:`button`,class:`btn btn-light border px-3`,onClick:we},`重置`)])])]),V.value?(p(),m(`p`,k,f(V.value),1)):(p(),m(`p`,A,f(Te.value),1)),h(`div`,j,[h(`table`,M,[s[9]||=h(`thead`,{class:`table-light`},[h(`tr`,null,[h(`th`,{class:`text-nowrap portal-sticky-left`,style:{width:`3.5rem`}},`序号`),h(`th`,{class:`text-nowrap`},`项目编号`),h(`th`,{class:`cell-wrap`},`项目名称`),h(`th`,{class:`text-nowrap`},`姓名`),h(`th`,{class:`cell-wrap`},`项目所在地`),h(`th`,{class:`cell-wrap reviewer-only-col`},`毕业院校`),h(`th`,{class:`text-nowrap reviewer-only-col`},`最高学历`),h(`th`,{class:`cell-wrap`},`赛道`),h(`th`,{class:`text-nowrap`},`评分`),h(`th`,{class:`text-nowrap reviewer-only-col`},`提交时间`),h(`th`,{class:`text-nowrap admin-actions-head portal-sticky-right-1`},`操作`)])],-1),h(`tbody`,null,[!B.value&&z.value.length===0&&!V.value?(p(),m(`tr`,N,[...s[8]||=[h(`td`,{colspan:`11`,class:`text-center text-secondary py-4`},`暂无符合条件的数据`,-1)]])):t(``,!0),(p(!0),m(u,null,a(z.value,(t,r)=>(p(),m(`tr`,{key:t.id,"data-list-row":``},[h(`td`,P,f(Oe(r)),1),h(`td`,null,f(t.project_code),1),h(`td`,null,f(t.project_name||`—`),1),h(`td`,null,f(t.player_name||`—`),1),h(`td`,null,f(t.location_label),1),h(`td`,F,f(t.school||`—`),1),h(`td`,I,f(t.degree||`—`),1),h(`td`,null,f(t.track_title||t.track_code||`—`),1),h(`td`,{class:e({"admin-total-pending-text":t.score_is_pending})},f(t.score_display),3),h(`td`,ve,f(t.submitted_at||`—`),1),h(`td`,ye,[i(c,{class:`btn btn-sm btn-outline-primary`,to:{name:`reviewer-application-detail`,params:{slug:R.value,id:String(t.id)},query:Y()},onClick:X},{default:ae(()=>[n(f(ke(t)),1)]),_:2},1032,[`to`])])]))),128))])])]),i(_e,{page:G.value,"per-page":K.value,total:W.value.total,"onUpdate:page":Ee,"onUpdate:perPage":De},null,8,[`page`,`per-page`,`total`])])])}}}),[[`__scopeId`,`data-v-385e3df9`]]);export{L as default}; \ No newline at end of file +import{$t as e,C as t,D as n,Et as r,O as i,Y as a,Z as ee,_t as o,at as s,b as c,ct as l,d as te,g as u,ht as d,in as f,k as ne,l as re,p as ie,q as p,st as ae,u as oe,w as m,x as h}from"./vue.runtime.esm-bundler-OsdSFvn7.js";import{c as se,m as ce,x as le}from"./api-rQwE0AaH.js";import{l as g,u as ue}from"./index-t7bgup9e.js";import{t as _}from"./_plugin-vue_export-helper-CXTkFu_Z.js";import{a as de,n as fe,o as pe,r as me,t as he}from"./listPageState-9NPjbkq0.js";import{n as ge,r as _e,t as v}from"./entryGroups-mdEgVvvl.js";var y={class:`reviewer-projects-page`},b={class:`container-fluid p-3 p-md-4`},x={class:`filter-panel mb-3`},S={class:`row g-2 align-items-center`},C={class:`col-12 d-flex flex-wrap align-items-center gap-3`},w=[`id`,`value`],T=[`for`],E={class:`col-md-4`},D={class:`col-md-3`},O={class:`col-12 col-md-auto d-flex gap-2`},k={key:0,class:`alert alert-warning py-2 small mb-3`,role:`alert`},A={key:1,class:`small text-secondary mb-2`,"aria-live":`polite`},j={class:`portal-table-scroll table-panel mb-0`},M={class:`table table-hover align-middle mb-0 admin-list-table portal-data-table portal-reviewer-table`},N={key:0},P={class:`text-secondary text-nowrap portal-sticky-left`},F={class:`reviewer-only-col`},I={class:`reviewer-only-col`},ve={class:`reviewer-only-col text-nowrap`},ye={class:`admin-actions-cell portal-sticky-right-1`},L=_(ne({__name:`ReviewerProjectsView`,setup(ne){let _=g(),L=ue(),R=c(()=>String(_.params.slug??``).trim()),z=o([]),B=o(!1),V=o(``),H=o(``),U=d({keyword:``,entry_group:v,review_status:``}),be=ge,W=o({current_page:1,last_page:1,per_page:20,total:0}),G=o(1),K=o(15);function q(){return he(`reviewer-projects`,R.value)}function J(){let e={};return U.entry_group&&(e.entry_group=U.entry_group),U.keyword.trim()&&(e.keyword=U.keyword.trim()),U.review_status&&(e.review_status=U.review_status),e}function Y(){return fe({page:G.value,perPage:K.value,filters:J()})}function X(){let e=q();e.endsWith(`.`)||pe(e,{page:G.value,perPage:K.value,filters:J()})}function xe(){let e=de(q(),_.query);G.value=e.page,K.value=e.perPage,e.filters.entry_group&&(U.entry_group=e.filters.entry_group),U.keyword=e.filters.keyword??``,U.review_status=e.filters.review_status===`pending`||e.filters.review_status===`reviewed`?e.filters.review_status:``}function Z(){let e=Y();me(e,_.query)||R.value&&L.replace({name:`reviewer-projects`,params:{slug:R.value},query:e})}function Se(){let e=new URLSearchParams;e.set(`competition_slug`,R.value),e.set(`page`,String(G.value)),e.set(`per_page`,String(K.value));let t=U.keyword.trim();return t&&e.set(`keyword`,t),U.entry_group&&e.set(`entry_group`,U.entry_group),(U.review_status===`pending`||U.review_status===`reviewed`)&&e.set(`review_status`,U.review_status),e}async function Q(){let e=R.value,{token:t}=le();if(!e||!t){V.value=`未登录或缺少赛事信息`;return}B.value=!0,V.value=``;try{let e=`${ce()}${se}?${Se().toString()}`,n=await fetch(e,{headers:{Authorization:`Bearer ${t}`,Accept:`application/json`}});if(!n.ok){let e=await n.json().catch(()=>({}));V.value=(typeof e==`object`&&e&&`message`in e?String(e.message??``):``)||`加载失败(${n.status})`,z.value=[],H.value=``;return}let r=await n.json();z.value=Array.isArray(r.data)?r.data:[];let i=r.meta;i&&(W.value={current_page:i.current_page??1,last_page:i.last_page??1,per_page:i.per_page??20,total:i.total??0}),Ce()}catch{V.value=`网络错误,请稍后重试`,z.value=[],H.value=``}finally{B.value=!1}}function Ce(){let e=W.value.total;if(e<=0){H.value=`暂无符合条件的数据`;return}let t=[`共 ${e} 条`];U.entry_group&&t.push(U.entry_group);let n=U.keyword.trim();n&&t.push(`关键词「${n}」`),U.review_status===`pending`?t.push(`待评审`):U.review_status===`reviewed`&&t.push(`已评审`),H.value=t.join(` · `)}function $(e=G.value){let t=G.value!==e;G.value=e,t||(X(),Z(),Q())}function we(){U.keyword=``,U.entry_group=v,U.review_status=``,$(1)}xe(),s([R,G,K],()=>{X(),Z(),Q()},{immediate:!0});let Te=c(()=>B.value?`加载中…`:H.value||`暂无报名数据`);function Ee(e){G.value=e}function De(e){K.value=e,G.value=1}function Oe(e){return(W.value.current_page-1)*W.value.per_page+e+1}function ke(e){return e.score_is_pending?`评审`:`查看`}return(o,s)=>{let c=ee(`router-link`);return p(),m(`div`,y,[h(`div`,b,[s[10]||=h(`div`,{class:`d-flex justify-content-between align-items-center flex-wrap gap-2 mb-3`},[h(`h5`,{class:`mb-0 section-title`},`项目评审`)],-1),h(`div`,x,[h(`div`,S,[h(`div`,C,[s[6]||=h(`span`,{class:`small text-secondary text-nowrap`},`参赛组别`,-1),(p(!0),m(u,null,a(r(be),e=>(p(),m(`div`,{key:e,class:`form-check form-check-inline mb-0`},[l(h(`input`,{id:`reviewer-entry-group-${e}`,"onUpdate:modelValue":s[0]||=e=>U.entry_group=e,class:`form-check-input`,type:`radio`,name:`reviewer-entry-group`,value:e,onChange:s[1]||=e=>$(1)},null,40,w),[[re,U.entry_group]]),h(`label`,{class:`form-check-label`,for:`reviewer-entry-group-${e}`},f(e),9,T)]))),128))]),h(`div`,E,[l(h(`input`,{"onUpdate:modelValue":s[2]||=e=>U.keyword=e,type:`search`,class:`form-control`,placeholder:`搜索项目、姓名、学校、手机号、推荐方`,onKeydown:s[3]||=ie(e=>$(1),[`enter`])},null,544),[[te,U.keyword]])]),h(`div`,D,[l(h(`select`,{"onUpdate:modelValue":s[4]||=e=>U.review_status=e,class:`form-select`},[...s[7]||=[h(`option`,{value:``},`全部评审状态`,-1),h(`option`,{value:`pending`},`待评审`,-1),h(`option`,{value:`reviewed`},`已评审`,-1)]],512),[[oe,U.review_status]])]),h(`div`,O,[h(`button`,{type:`button`,class:`btn btn-primary px-3`,onClick:s[5]||=e=>$(1)},`查询`),h(`button`,{type:`button`,class:`btn btn-light border px-3`,onClick:we},`重置`)])])]),V.value?(p(),m(`p`,k,f(V.value),1)):(p(),m(`p`,A,f(Te.value),1)),h(`div`,j,[h(`table`,M,[s[9]||=h(`thead`,{class:`table-light`},[h(`tr`,null,[h(`th`,{class:`text-nowrap portal-sticky-left`,style:{width:`3.5rem`}},`序号`),h(`th`,{class:`text-nowrap`},`项目编号`),h(`th`,{class:`cell-wrap`},`项目名称`),h(`th`,{class:`text-nowrap`},`姓名`),h(`th`,{class:`cell-wrap`},`项目所在地`),h(`th`,{class:`cell-wrap reviewer-only-col`},`毕业院校`),h(`th`,{class:`text-nowrap reviewer-only-col`},`最高学历`),h(`th`,{class:`cell-wrap`},`赛道`),h(`th`,{class:`text-nowrap`},`评分`),h(`th`,{class:`text-nowrap reviewer-only-col`},`提交时间`),h(`th`,{class:`text-nowrap admin-actions-head portal-sticky-right-1`},`操作`)])],-1),h(`tbody`,null,[!B.value&&z.value.length===0&&!V.value?(p(),m(`tr`,N,[...s[8]||=[h(`td`,{colspan:`11`,class:`text-center text-secondary py-4`},`暂无符合条件的数据`,-1)]])):t(``,!0),(p(!0),m(u,null,a(z.value,(t,r)=>(p(),m(`tr`,{key:t.id,"data-list-row":``},[h(`td`,P,f(Oe(r)),1),h(`td`,null,f(t.project_code),1),h(`td`,null,f(t.project_name||`—`),1),h(`td`,null,f(t.player_name||`—`),1),h(`td`,null,f(t.location_label),1),h(`td`,F,f(t.school||`—`),1),h(`td`,I,f(t.degree||`—`),1),h(`td`,null,f(t.track_title||t.track_code||`—`),1),h(`td`,{class:e({"admin-total-pending-text":t.score_is_pending})},f(t.score_display),3),h(`td`,ve,f(t.submitted_at||`—`),1),h(`td`,ye,[i(c,{class:`btn btn-sm btn-outline-primary`,to:{name:`reviewer-application-detail`,params:{slug:R.value,id:String(t.id)},query:Y()},onClick:X},{default:ae(()=>[n(f(ke(t)),1)]),_:2},1032,[`to`])])]))),128))])])]),i(_e,{page:G.value,"per-page":K.value,total:W.value.total,"onUpdate:page":Ee,"onUpdate:perPage":De},null,8,[`page`,`per-page`,`total`])])])}}}),[[`__scopeId`,`data-v-385e3df9`]]);export{L as default}; \ No newline at end of file diff --git a/public/admin/assets/adminCompetition-m6obxaBw.js b/public/admin/assets/adminCompetition-DfRlbUCX.js similarity index 86% rename from public/admin/assets/adminCompetition-m6obxaBw.js rename to public/admin/assets/adminCompetition-DfRlbUCX.js index cfe9900..aeaf58f 100644 --- a/public/admin/assets/adminCompetition-m6obxaBw.js +++ b/public/admin/assets/adminCompetition-DfRlbUCX.js @@ -1 +1 @@ -import{_t as e,b as t}from"./vue.runtime.esm-bundler-OsdSFvn7.js";import{t as n}from"./api-rQwE0AaH.js";import{y as r}from"./index-DAT5gpOZ.js";function i(){let e=localStorage.getItem(n);if(!e)return null;let t=Number(e);return Number.isFinite(t)&&t>0?t:null}var a=r(`adminCompetitionContext`,()=>{let r=e([]),a=e(i()),o=t(()=>r.value.find(e=>e.id===a.value)??null);function s(e){r.value=e,a.value&&!e.some(e=>e.id===a.value)&&(a.value=e[0]?.id??null,l()),!a.value&&e[0]&&(a.value=e[0].id,l())}function c(e){a.value=e,l()}function l(){let e=a.value;e?localStorage.setItem(n,String(e)):localStorage.removeItem(n)}return{competitions:r,selectedCompetitionId:a,selectedCompetition:o,setCompetitionList:s,selectCompetition:c}});export{a as t}; \ No newline at end of file +import{_t as e,b as t}from"./vue.runtime.esm-bundler-OsdSFvn7.js";import{t as n}from"./api-rQwE0AaH.js";import{y as r}from"./index-t7bgup9e.js";function i(){let e=localStorage.getItem(n);if(!e)return null;let t=Number(e);return Number.isFinite(t)&&t>0?t:null}var a=r(`adminCompetitionContext`,()=>{let r=e([]),a=e(i()),o=t(()=>r.value.find(e=>e.id===a.value)??null);function s(e){r.value=e,a.value&&!e.some(e=>e.id===a.value)&&(a.value=e[0]?.id??null,l()),!a.value&&e[0]&&(a.value=e[0].id,l())}function c(e){a.value=e,l()}function l(){let e=a.value;e?localStorage.setItem(n,String(e)):localStorage.removeItem(n)}return{competitions:r,selectedCompetitionId:a,selectedCompetition:o,setCompetitionList:s,selectCompetition:c}});export{a as t}; \ No newline at end of file diff --git a/public/admin/assets/applications-DrpsfVEd.js b/public/admin/assets/applications-Dl5PbiPv.js similarity index 96% rename from public/admin/assets/applications-DrpsfVEd.js rename to public/admin/assets/applications-Dl5PbiPv.js index 8c950c1..09247ca 100644 --- a/public/admin/assets/applications-DrpsfVEd.js +++ b/public/admin/assets/applications-Dl5PbiPv.js @@ -1 +1 @@ -import{a as e,i as t}from"./index-DAT5gpOZ.js";import{r as n,t as r}from"./downloadFeedback-aIJlOgpJ.js";function i(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 a(e,n){let{data:r}=await t.get(`/competitions/${e}/applications`,{params:n});return i(r)}async function o(e,n){let{data:r}=await t.get(`/competitions/${e}/applications/${n}`);if(!r||typeof r!=`object`)throw Error(`报名详情无效`);return r}async function s(e,n,r){let{data:i}=await t.patch(`/competitions/${e}/applications/${n}/review-eligible`,{review_eligible:r});return i}async function c(n,r){try{let{data:e}=await t.post(`/competitions/${n}/applications/${r}/impersonate`);if(!e||typeof e!=`object`)throw Error(`代登响应无效`);let i=e;if(typeof i.token!=`string`||!i.token.trim())throw Error(`代登 Token 无效`);if(typeof i.competition_slug!=`string`||!i.competition_slug.trim())throw Error(`赛事标识无效`);return{token:i.token,competition_slug:i.competition_slug,expires_in:typeof i.expires_in==`number`?i.expires_in:1800,participant:i.participant&&typeof i.participant==`object`?i.participant:void 0}}catch(t){if(e.isAxiosError(t)){let e=t.response?.data;if(e&&typeof e==`object`){let t=e.message;if(typeof t==`string`&&t.trim())throw Error(t.trim())}}throw t instanceof Error?t:Error(`进入选手端失败`)}}async function l(e,i,a,o,s){let c=o?.trim()||`附件`,l=r(c,s?.size);if(l)try{let r=await t.get(`/competitions/${e}/applications/${i}/files/${a}/download`,{responseType:`blob`,timeout:0});l.setText(`正在保存「${c}」…`),u(r.data,c),n()}catch(e){throw await f(e,`下载附件失败`)}finally{l.close()}}function u(e,t){let n=URL.createObjectURL(e),r=document.createElement(`a`);r.href=n,r.download=t,document.body.appendChild(r),r.click(),r.remove(),URL.revokeObjectURL(n)}function d(e,t){if(!e)return t;let n=/filename\*=UTF-8''([^;]+)/i.exec(e);if(n?.[1])return decodeURIComponent(n[1]);let r=/filename="?([^";]+)"?/i.exec(e);return r?.[1]?r[1]:t}async function f(t,n){if(e.isAxiosError(t)){let e=t.response?.data;if(e instanceof Blob){let t=await e.text();try{let e=JSON.parse(t);return Error(e.errors?.export?.[0]||e.errors?.application_ids?.[0]||e.errors?.part?.[0]||e.errors?.file?.[0]||e.message||n)}catch{}}if(e&&typeof e==`object`){let t=e;return Error(t.errors?.export?.[0]||t.errors?.application_ids?.[0]||t.errors?.part?.[0]||t.errors?.file?.[0]||t.message||n)}}return t instanceof Error?t:Error(n)}async function p(e){return f(e,`导出失败`)}function m(e){return new Promise(t=>{window.setTimeout(t,e)})}function h(e){let{mode:t,application_ids:n,part:r,...i}=e,a={mode:t,...i};return n?.length&&(a.application_ids=n),r!=null&&(a.part=r),a}async function g(e,n){try{let{data:r}=await t.get(`/competitions/${e}/applications/export/meta`,{params:h(n)});if(!r||typeof r!=`object`)throw Error(`导出信息无效`);return r}catch(e){throw await p(e)}}async function _(e,n,r){let i;try{i=await t.get(`/competitions/${e}/applications/export`,{params:h({...n,part:r}),responseType:`blob`,timeout:0})}catch(e){throw await p(e)}let a=n.mode===`xlsx`?`报名信息.xlsx`:`报名信息导出_第${r}部分.zip`,o=d(i.headers[`content-disposition`],a);u(i.data,o)}async function v(e,t,n){let r=await g(e,t);if(t.mode===`xlsx`)return n?.(1,1),await _(e,t,1),r;for(let i=1;i<=r.part_count;i+=1)n?.(i,r.part_count),await _(e,t,i),i{window.setTimeout(t,e)})}function h(e){let{mode:t,application_ids:n,part:r,...i}=e,a={mode:t,...i};return n?.length&&(a.application_ids=n),r!=null&&(a.part=r),a}async function g(e,n){try{let{data:r}=await t.get(`/competitions/${e}/applications/export/meta`,{params:h(n)});if(!r||typeof r!=`object`)throw Error(`导出信息无效`);return r}catch(e){throw await p(e)}}async function _(e,n,r){let i;try{i=await t.get(`/competitions/${e}/applications/export`,{params:h({...n,part:r}),responseType:`blob`,timeout:0})}catch(e){throw await p(e)}let a=n.mode===`xlsx`?`报名信息.xlsx`:`报名信息导出_第${r}部分.zip`,o=d(i.headers[`content-disposition`],a);u(i.data,o)}async function v(e,t,n){let r=await g(e,t);if(t.mode===`xlsx`)return n?.(1,1),await _(e,t,1),r;for(let i=1;i<=r.part_count;i+=1)n?.(i,r.part_count),await _(e,t,i),i{c.close(),c=e({type:`info`,message:t,duration:0,showClose:!0})},close:()=>{c.close(),t=!1}}}function a(){e.success(`下载已开始,请查看浏览器下载进度`)}export{n,a as r,i as t}; \ No newline at end of file +import{f as e}from"./index-t7bgup9e.js";var t=!1;function n(){return t}function r(e){return e==null||!Number.isFinite(e)||e<=0?``:e<1024*1024?`约 ${Math.max(1,Math.round(e/1024))} KB`:`约 ${(e/(1024*1024)).toFixed(1)} MB`}function i(n,i,a=`下载`){if(t)return e.warning(`附件正在${a}中,请勿重复点击`),null;t=!0;let o=n.trim()||`附件`,s=r(i),c=e({type:`info`,message:s?`正在准备${a}「${o}」(${s}),文件较大时请耐心等待…`:`正在准备${a}「${o}」,请稍候…`,duration:0,showClose:!0});return{setText:t=>{c.close(),c=e({type:`info`,message:t,duration:0,showClose:!0})},close:()=>{c.close(),t=!1}}}function a(){e.success(`下载已开始,请查看浏览器下载进度`)}export{n,a as r,i as t}; \ No newline at end of file diff --git a/public/admin/assets/index-DAT5gpOZ.js b/public/admin/assets/index-t7bgup9e.js similarity index 99% rename from public/admin/assets/index-DAT5gpOZ.js rename to public/admin/assets/index-t7bgup9e.js index 9ffb75a..64d8b22 100644 --- a/public/admin/assets/index-DAT5gpOZ.js +++ b/public/admin/assets/index-t7bgup9e.js @@ -1,4 +1,4 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/AdminDashboardView-BG3HrDLL.js","assets/_plugin-vue_export-helper-CXTkFu_Z.js","assets/vue.runtime.esm-bundler-OsdSFvn7.js","assets/rolldown-runtime-BYbx6iT9.js","assets/competitions-BSJLYyM3.js","assets/adminCompetition-m6obxaBw.js","assets/api-rQwE0AaH.js","assets/competitionAdminLabels-v0rVrY9u.js","assets/datetimeShanghai-D1tceWM9.js","assets/AdminDashboardView-uZMvKSNk.css","assets/CompetitionListView-CYZHzCBd.js","assets/CompetitionListView-CUZJTQGI.css","assets/CompetitionFormView-CE6wqRFe.js","assets/applications-DrpsfVEd.js","assets/downloadFeedback-aIJlOgpJ.js","assets/publicSourceChannels-COAaqE-_.js","assets/signupChannels-DsI7Cu8M.js","assets/competitionBranding-DKFkcrfF.js","assets/CompetitionFormView-Cgi4qyUr.css","assets/PublicSourceChannelManageView-BxfNT_cP.js","assets/PublicSourceChannelManageView-BlYQZ21s.css","assets/ReviewerManageView-D2W38ovd.js","assets/ReviewerManageView-Df4_-0wa.css","assets/ReviewPortalView-Dwc-2Vuk.js","assets/ReviewPortalView-TJk8rGN4.css","assets/AdminUserManageView-DOiTsZGK.js","assets/AdminUserManageView-B1YUG7sR.css","assets/AdminMenuGroupLayout-Bb7HH6Ks.js","assets/MainLayout-Diabeczz.js","assets/MainLayout-P9eJYx63.css","assets/bootstrap-CwawXFoc.css","assets/prototype-styles-ByAEW-uK.css","assets/ParticipantLandingView-DPqAhu6F.js","assets/LoginView-B8c0Fe-9.js","assets/participantContact-DSzdsPPk.js","assets/login-page-overrides-3HhPuhQ6.css","assets/ParticipantImpersonateEntryView-B5jFxZk8.js","assets/ReviewerLoginView-vNgYiK9E.js","assets/ReviewerLayout-B1QWLigA.js","assets/PortalChangePasswordModal-DBmd4yLD.js","assets/ReviewerLayout-CbjkRbTK.css","assets/ReviewerApplicationDetailView-C_C2VT7j.js","assets/ApplicationSignupDetailFields-DzsXhk8j.js","assets/listPageState-9NPjbkq0.js","assets/ReviewerApplicationDetailView-ApIXjRwp.css","assets/ReviewerProjectsView-Ncr8FbkS.js","assets/entryGroups-mdEgVvvl.js","assets/ReviewerProjectsView-LiaIqmEG.css","assets/ManageLoginView-CCm4mhLJ.js","assets/auth-CW8ToWeP.js","assets/CompetitionManageLayout-RtEzZeOT.js","assets/CompetitionManageLayout-CZ8MKM2w.css","assets/ManageDashboardView-BvyKsQMW.js","assets/ManageProjectsView-D0-WoO2G.js","assets/ManageProjectDetailView-Ck2cINDy.js","assets/ManageProjectDetailView-B8Hb1J0O.css","assets/ManageReviewersView-KhNc4lcH.js","assets/ManageReviewersView-D9CF0pgU.css","assets/ApplyView-C88S5zde.js","assets/ApplyView-BgGuQf3b.css","assets/AdminLoginView-CVL7subl.js","assets/AdminLoginView-CKOqnZil.css","assets/AdminLayout-BTI5o2eW.js","assets/AdminLayout-DgE4Gt0n.css"])))=>i.map(i=>d[i]); +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/AdminDashboardView-BgnRab08.js","assets/_plugin-vue_export-helper-CXTkFu_Z.js","assets/vue.runtime.esm-bundler-OsdSFvn7.js","assets/rolldown-runtime-BYbx6iT9.js","assets/competitions-DP_OWCTo.js","assets/adminCompetition-DfRlbUCX.js","assets/api-rQwE0AaH.js","assets/competitionAdminLabels-v0rVrY9u.js","assets/datetimeShanghai-D1tceWM9.js","assets/AdminDashboardView-uZMvKSNk.css","assets/CompetitionListView-CZtFbhx_.js","assets/CompetitionListView-CUZJTQGI.css","assets/CompetitionFormView-B35kaWp1.js","assets/applications-Dl5PbiPv.js","assets/downloadFeedback-CVNWp7w4.js","assets/publicSourceChannels-DRre41RG.js","assets/signupChannels-CGEQ38uA.js","assets/competitionBranding-DKFkcrfF.js","assets/CompetitionFormView-Cgi4qyUr.css","assets/PublicSourceChannelManageView-B1RkKHAq.js","assets/PublicSourceChannelManageView-BlYQZ21s.css","assets/ReviewerManageView-DQKBYPkH.js","assets/ReviewerManageView-Df4_-0wa.css","assets/ReviewPortalView-BDmXNaoO.js","assets/ReviewPortalView-TJk8rGN4.css","assets/AdminUserManageView-CL5A4h3-.js","assets/AdminUserManageView-B1YUG7sR.css","assets/AdminMenuGroupLayout-Bb7HH6Ks.js","assets/MainLayout-lHj0rP5r.js","assets/MainLayout-P9eJYx63.css","assets/bootstrap-CwawXFoc.css","assets/prototype-styles-ByAEW-uK.css","assets/ParticipantLandingView-Z99ohwU5.js","assets/LoginView-DcN2H63N.js","assets/participantContact-DSzdsPPk.js","assets/login-page-overrides-3HhPuhQ6.css","assets/ParticipantImpersonateEntryView-DKiE569p.js","assets/ReviewerLoginView-CX0DhvO5.js","assets/ReviewerLayout-BgI2L8Cl.js","assets/PortalChangePasswordModal-DBmd4yLD.js","assets/ReviewerLayout-CbjkRbTK.css","assets/ReviewerApplicationDetailView-CmzDBsR6.js","assets/ApplicationSignupDetailFields-DzsXhk8j.js","assets/listPageState-9NPjbkq0.js","assets/ReviewerApplicationDetailView-ApIXjRwp.css","assets/ReviewerProjectsView-Dxe9Gm-T.js","assets/entryGroups-mdEgVvvl.js","assets/ReviewerProjectsView-LiaIqmEG.css","assets/ManageLoginView-DqZvJ9dh.js","assets/auth-Cjgu0CU4.js","assets/CompetitionManageLayout-B4taBN2o.js","assets/CompetitionManageLayout-CZ8MKM2w.css","assets/ManageDashboardView-cjRK_yIm.js","assets/ManageProjectsView-DHJkJNz3.js","assets/ManageProjectDetailView-B3JD_oG2.js","assets/ManageProjectDetailView-BUKHgQzN.css","assets/ManageReviewersView-1PCsDj4N.js","assets/ManageReviewersView-D9CF0pgU.css","assets/ApplyView-C6M85uKr.js","assets/ApplyView-BgGuQf3b.css","assets/AdminLoginView-BFANHawE.js","assets/AdminLoginView-CKOqnZil.css","assets/AdminLayout-uoOYnl4f.js","assets/AdminLayout-DgE4Gt0n.css"])))=>i.map(i=>d[i]); import{a as e,r as t,t as n}from"./rolldown-runtime-BYbx6iT9.js";import{$ as r,$t as i,A as a,At as o,B as s,Bt as c,C as l,Ct as u,D as d,Et as f,F as p,Ft as m,G as h,Gt as g,H as _,It as v,J as y,K as b,Kt as x,L as S,Lt as C,M as w,N as T,O as E,P as D,Pt as O,Q as k,R as A,S as j,St as M,T as ee,Tt as te,U as N,Ut as P,V as F,W as I,X as L,Y as ne,Yt as R,Z as z,_ as re,_t as B,a as ie,an as ae,at as V,b as H,bt as oe,ct as se,d as ce,dt as le,en as ue,et as de,f as fe,ft as pe,g as me,gt as he,h as ge,ht as _e,in as U,it as ve,j as ye,jt as be,k as W,kt as xe,l as Se,lt as Ce,m as we,mt as Te,n as Ee,ot as De,p as Oe,pt as ke,q as G,r as Ae,rt as je,s as Me,st as K,t as Ne,tn as Pe,tt as Fe,ut as Ie,v as Le,vt as Re,w as q,wt as ze,x as J,xt as Be,y as Ve,yt as He,z as Ue,zt as We}from"./vue.runtime.esm-bundler-OsdSFvn7.js";import{a as Ge,b as Ke,d as qe,f as Je,i as Ye,m as Xe,p as Ze,r as Qe,v as $e,x as et,y as tt}from"./api-rQwE0AaH.js";(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),e.crossOrigin===`use-credentials`?t.credentials=`include`:e.crossOrigin===`anonymous`?t.credentials=`omit`:t.credentials=`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var nt=`bottom`,rt=`right`,it=`left`,at=`auto`,ot=[`top`,nt,rt,it],st=`start`,ct=`clippingParents`,lt=`viewport`,ut=`popper`,dt=`reference`,ft=ot.reduce(function(e,t){return e.concat([t+`-`+st,t+`-end`])},[]),pt=[].concat(ot,[at]).reduce(function(e,t){return e.concat([t,t+`-`+st,t+`-end`])},[]),mt=`beforeRead`,ht=`read`,gt=`afterRead`,_t=`beforeMain`,vt=`main`,yt=`afterMain`,bt=`beforeWrite`,xt=`write`,St=`afterWrite`,Ct=[mt,ht,gt,_t,vt,yt,bt,xt,St];function wt(e){return e?(e.nodeName||``).toLowerCase():null}function Tt(e){if(e==null)return window;if(e.toString()!==`[object Window]`){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function Et(e){return e instanceof Tt(e).Element||e instanceof Element}function Dt(e){return e instanceof Tt(e).HTMLElement||e instanceof HTMLElement}function Ot(e){return typeof ShadowRoot>`u`?!1:e instanceof Tt(e).ShadowRoot||e instanceof ShadowRoot}function kt(e){var t=e.state;Object.keys(t.elements).forEach(function(e){var n=t.styles[e]||{},r=t.attributes[e]||{},i=t.elements[e];!Dt(i)||!wt(i)||(Object.assign(i.style,n),Object.keys(r).forEach(function(e){var t=r[e];t===!1?i.removeAttribute(e):i.setAttribute(e,t===!0?``:t)}))})}function At(e){var t=e.state,n={popper:{position:t.options.strategy,left:`0`,top:`0`,margin:`0`},arrow:{position:`absolute`},reference:{}};return Object.assign(t.elements.popper.style,n.popper),t.styles=n,t.elements.arrow&&Object.assign(t.elements.arrow.style,n.arrow),function(){Object.keys(t.elements).forEach(function(e){var r=t.elements[e],i=t.attributes[e]||{},a=Object.keys(t.styles.hasOwnProperty(e)?t.styles[e]:n[e]).reduce(function(e,t){return e[t]=``,e},{});!Dt(r)||!wt(r)||(Object.assign(r.style,a),Object.keys(i).forEach(function(e){r.removeAttribute(e)}))})}}var jt={name:`applyStyles`,enabled:!0,phase:`write`,fn:kt,effect:At,requires:[`computeStyles`]};function Mt(e){return e.split(`-`)[0]}var Nt=Math.max,Pt=Math.min,Ft=Math.round;function It(){var e=navigator.userAgentData;return e!=null&&e.brands&&Array.isArray(e.brands)?e.brands.map(function(e){return e.brand+`/`+e.version}).join(` `):navigator.userAgent}function Lt(){return!/^((?!chrome|android).)*safari/i.test(It())}function Rt(e,t,n){t===void 0&&(t=!1),n===void 0&&(n=!1);var r=e.getBoundingClientRect(),i=1,a=1;t&&Dt(e)&&(i=e.offsetWidth>0&&Ft(r.width)/e.offsetWidth||1,a=e.offsetHeight>0&&Ft(r.height)/e.offsetHeight||1);var o=(Et(e)?Tt(e):window).visualViewport,s=!Lt()&&n,c=(r.left+(s&&o?o.offsetLeft:0))/i,l=(r.top+(s&&o?o.offsetTop:0))/a,u=r.width/i,d=r.height/a;return{width:u,height:d,top:l,right:c+u,bottom:l+d,left:c,x:c,y:l}}function zt(e){var t=Rt(e),n=e.offsetWidth,r=e.offsetHeight;return Math.abs(t.width-n)<=1&&(n=t.width),Math.abs(t.height-r)<=1&&(r=t.height),{x:e.offsetLeft,y:e.offsetTop,width:n,height:r}}function Bt(e,t){var n=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(n&&Ot(n)){var r=t;do{if(r&&e.isSameNode(r))return!0;r=r.parentNode||r.host}while(r)}return!1}function Vt(e){return Tt(e).getComputedStyle(e)}function Ht(e){return[`table`,`td`,`th`].indexOf(wt(e))>=0}function Ut(e){return((Et(e)?e.ownerDocument:e.document)||window.document).documentElement}function Wt(e){return wt(e)===`html`?e:e.assignedSlot||e.parentNode||(Ot(e)?e.host:null)||Ut(e)}function Gt(e){return!Dt(e)||Vt(e).position===`fixed`?null:e.offsetParent}function Kt(e){var t=/firefox/i.test(It());if(/Trident/i.test(It())&&Dt(e)&&Vt(e).position===`fixed`)return null;var n=Wt(e);for(Ot(n)&&(n=n.host);Dt(n)&&[`html`,`body`].indexOf(wt(n))<0;){var r=Vt(n);if(r.transform!==`none`||r.perspective!==`none`||r.contain===`paint`||[`transform`,`perspective`].indexOf(r.willChange)!==-1||t&&r.willChange===`filter`||t&&r.filter&&r.filter!==`none`)return n;n=n.parentNode}return null}function qt(e){for(var t=Tt(e),n=Gt(e);n&&Ht(n)&&Vt(n).position===`static`;)n=Gt(n);return n&&(wt(n)===`html`||wt(n)===`body`&&Vt(n).position===`static`)?t:n||Kt(e)||t}function Jt(e){return[`top`,`bottom`].indexOf(e)>=0?`x`:`y`}function Yt(e,t,n){return Nt(e,Pt(t,n))}function Xt(e,t,n){var r=Yt(e,t,n);return r>n?n:r}function Zt(){return{top:0,right:0,bottom:0,left:0}}function Qt(e){return Object.assign({},Zt(),e)}function $t(e,t){return t.reduce(function(t,n){return t[n]=e,t},{})}var en=function(e,t){return e=typeof e==`function`?e(Object.assign({},t.rects,{placement:t.placement})):e,Qt(typeof e==`number`?$t(e,ot):e)};function tn(e){var t,n=e.state,r=e.name,i=e.options,a=n.elements.arrow,o=n.modifiersData.popperOffsets,s=Mt(n.placement),c=Jt(s),l=[`left`,`right`].indexOf(s)>=0?`height`:`width`;if(!(!a||!o)){var u=en(i.padding,n),d=zt(a),f=c===`y`?`top`:it,p=c===`y`?nt:rt,m=n.rects.reference[l]+n.rects.reference[c]-o[c]-n.rects.popper[l],h=o[c]-n.rects.reference[c],g=qt(a),_=g?c===`y`?g.clientHeight||0:g.clientWidth||0:0,v=m/2-h/2,y=u[f],b=_-d[l]-u[p],x=_/2-d[l]/2+v,S=Yt(y,x,b),C=c;n.modifiersData[r]=(t={},t[C]=S,t.centerOffset=S-x,t)}}function nn(e){var t=e.state,n=e.options.element,r=n===void 0?`[data-popper-arrow]`:n;r!=null&&(typeof r==`string`&&(r=t.elements.popper.querySelector(r),!r)||Bt(t.elements.popper,r)&&(t.elements.arrow=r))}var rn={name:`arrow`,enabled:!0,phase:`main`,fn:tn,effect:nn,requires:[`popperOffsets`],requiresIfExists:[`preventOverflow`]};function an(e){return e.split(`-`)[1]}var on={top:`auto`,right:`auto`,bottom:`auto`,left:`auto`};function sn(e,t){var n=e.x,r=e.y,i=t.devicePixelRatio||1;return{x:Ft(n*i)/i||0,y:Ft(r*i)/i||0}}function cn(e){var t,n=e.popper,r=e.popperRect,i=e.placement,a=e.variation,o=e.offsets,s=e.position,c=e.gpuAcceleration,l=e.adaptive,u=e.roundOffsets,d=e.isFixed,f=o.x,p=f===void 0?0:f,m=o.y,h=m===void 0?0:m,g=typeof u==`function`?u({x:p,y:h}):{x:p,y:h};p=g.x,h=g.y;var _=o.hasOwnProperty(`x`),v=o.hasOwnProperty(`y`),y=it,b=`top`,x=window;if(l){var S=qt(n),C=`clientHeight`,w=`clientWidth`;if(S===Tt(n)&&(S=Ut(n),Vt(S).position!==`static`&&s===`absolute`&&(C=`scrollHeight`,w=`scrollWidth`)),S=S,i===`top`||(i===`left`||i===`right`)&&a===`end`){b=nt;var T=d&&S===x&&x.visualViewport?x.visualViewport.height:S[C];h-=T-r.height,h*=c?1:-1}if(i===`left`||(i===`top`||i===`bottom`)&&a===`end`){y=rt;var E=d&&S===x&&x.visualViewport?x.visualViewport.width:S[w];p-=E-r.width,p*=c?1:-1}}var D=Object.assign({position:s},l&&on),O=u===!0?sn({x:p,y:h},Tt(n)):{x:p,y:h};if(p=O.x,h=O.y,c){var k;return Object.assign({},D,(k={},k[b]=v?`0`:``,k[y]=_?`0`:``,k.transform=(x.devicePixelRatio||1)<=1?`translate(`+p+`px, `+h+`px)`:`translate3d(`+p+`px, `+h+`px, 0)`,k))}return Object.assign({},D,(t={},t[b]=v?h+`px`:``,t[y]=_?p+`px`:``,t.transform=``,t))}function ln(e){var t=e.state,n=e.options,r=n.gpuAcceleration,i=r===void 0?!0:r,a=n.adaptive,o=a===void 0?!0:a,s=n.roundOffsets,c=s===void 0?!0:s,l={placement:Mt(t.placement),variation:an(t.placement),popper:t.elements.popper,popperRect:t.rects.popper,gpuAcceleration:i,isFixed:t.options.strategy===`fixed`};t.modifiersData.popperOffsets!=null&&(t.styles.popper=Object.assign({},t.styles.popper,cn(Object.assign({},l,{offsets:t.modifiersData.popperOffsets,position:t.options.strategy,adaptive:o,roundOffsets:c})))),t.modifiersData.arrow!=null&&(t.styles.arrow=Object.assign({},t.styles.arrow,cn(Object.assign({},l,{offsets:t.modifiersData.arrow,position:`absolute`,adaptive:!1,roundOffsets:c})))),t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-placement":t.placement})}var un={name:`computeStyles`,enabled:!0,phase:`beforeWrite`,fn:ln,data:{}},dn={passive:!0};function fn(e){var t=e.state,n=e.instance,r=e.options,i=r.scroll,a=i===void 0?!0:i,o=r.resize,s=o===void 0?!0:o,c=Tt(t.elements.popper),l=[].concat(t.scrollParents.reference,t.scrollParents.popper);return a&&l.forEach(function(e){e.addEventListener(`scroll`,n.update,dn)}),s&&c.addEventListener(`resize`,n.update,dn),function(){a&&l.forEach(function(e){e.removeEventListener(`scroll`,n.update,dn)}),s&&c.removeEventListener(`resize`,n.update,dn)}}var pn={name:`eventListeners`,enabled:!0,phase:`write`,fn:function(){},effect:fn,data:{}},mn={left:`right`,right:`left`,bottom:`top`,top:`bottom`};function hn(e){return e.replace(/left|right|bottom|top/g,function(e){return mn[e]})}var gn={start:`end`,end:`start`};function _n(e){return e.replace(/start|end/g,function(e){return gn[e]})}function vn(e){var t=Tt(e);return{scrollLeft:t.pageXOffset,scrollTop:t.pageYOffset}}function yn(e){return Rt(Ut(e)).left+vn(e).scrollLeft}function bn(e,t){var n=Tt(e),r=Ut(e),i=n.visualViewport,a=r.clientWidth,o=r.clientHeight,s=0,c=0;if(i){a=i.width,o=i.height;var l=Lt();(l||!l&&t===`fixed`)&&(s=i.offsetLeft,c=i.offsetTop)}return{width:a,height:o,x:s+yn(e),y:c}}function xn(e){var t=Ut(e),n=vn(e),r=e.ownerDocument?.body,i=Nt(t.scrollWidth,t.clientWidth,r?r.scrollWidth:0,r?r.clientWidth:0),a=Nt(t.scrollHeight,t.clientHeight,r?r.scrollHeight:0,r?r.clientHeight:0),o=-n.scrollLeft+yn(e),s=-n.scrollTop;return Vt(r||t).direction===`rtl`&&(o+=Nt(t.clientWidth,r?r.clientWidth:0)-i),{width:i,height:a,x:o,y:s}}function Sn(e){var t=Vt(e),n=t.overflow,r=t.overflowX,i=t.overflowY;return/auto|scroll|overlay|hidden/.test(n+i+r)}function Cn(e){return[`html`,`body`,`#document`].indexOf(wt(e))>=0?e.ownerDocument.body:Dt(e)&&Sn(e)?e:Cn(Wt(e))}function wn(e,t){t===void 0&&(t=[]);var n=Cn(e),r=n===e.ownerDocument?.body,i=Tt(n),a=r?[i].concat(i.visualViewport||[],Sn(n)?n:[]):n,o=t.concat(a);return r?o:o.concat(wn(Wt(a)))}function Tn(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function En(e,t){var n=Rt(e,!1,t===`fixed`);return n.top+=e.clientTop,n.left+=e.clientLeft,n.bottom=n.top+e.clientHeight,n.right=n.left+e.clientWidth,n.width=e.clientWidth,n.height=e.clientHeight,n.x=n.left,n.y=n.top,n}function Dn(e,t,n){return t===`viewport`?Tn(bn(e,n)):Et(t)?En(t,n):Tn(xn(Ut(e)))}function On(e){var t=wn(Wt(e)),n=[`absolute`,`fixed`].indexOf(Vt(e).position)>=0&&Dt(e)?qt(e):e;return Et(n)?t.filter(function(e){return Et(e)&&Bt(e,n)&&wt(e)!==`body`}):[]}function kn(e,t,n,r){var i=t===`clippingParents`?On(e):[].concat(t),a=[].concat(i,[n]),o=a[0],s=a.reduce(function(t,n){var i=Dn(e,n,r);return t.top=Nt(i.top,t.top),t.right=Pt(i.right,t.right),t.bottom=Pt(i.bottom,t.bottom),t.left=Nt(i.left,t.left),t},Dn(e,o,r));return s.width=s.right-s.left,s.height=s.bottom-s.top,s.x=s.left,s.y=s.top,s}function An(e){var t=e.reference,n=e.element,r=e.placement,i=r?Mt(r):null,a=r?an(r):null,o=t.x+t.width/2-n.width/2,s=t.y+t.height/2-n.height/2,c;switch(i){case`top`:c={x:o,y:t.y-n.height};break;case nt:c={x:o,y:t.y+t.height};break;case rt:c={x:t.x+t.width,y:s};break;case it:c={x:t.x-n.width,y:s};break;default:c={x:t.x,y:t.y}}var l=i?Jt(i):null;if(l!=null){var u=l===`y`?`height`:`width`;switch(a){case st:c[l]=c[l]-(t[u]/2-n[u]/2);break;case`end`:c[l]=c[l]+(t[u]/2-n[u]/2);break;default:}}return c}function jn(e,t){t===void 0&&(t={});var n=t,r=n.placement,i=r===void 0?e.placement:r,a=n.strategy,o=a===void 0?e.strategy:a,s=n.boundary,c=s===void 0?ct:s,l=n.rootBoundary,u=l===void 0?lt:l,d=n.elementContext,f=d===void 0?ut:d,p=n.altBoundary,m=p===void 0?!1:p,h=n.padding,g=h===void 0?0:h,_=Qt(typeof g==`number`?$t(g,ot):g),v=f===`popper`?dt:ut,y=e.rects.popper,b=e.elements[m?v:f],x=kn(Et(b)?b:b.contextElement||Ut(e.elements.popper),c,u,o),S=Rt(e.elements.reference),C=An({reference:S,element:y,strategy:`absolute`,placement:i}),w=Tn(Object.assign({},y,C)),T=f===`popper`?w:S,E={top:x.top-T.top+_.top,bottom:T.bottom-x.bottom+_.bottom,left:x.left-T.left+_.left,right:T.right-x.right+_.right},D=e.modifiersData.offset;if(f===`popper`&&D){var O=D[i];Object.keys(E).forEach(function(e){var t=[`right`,`bottom`].indexOf(e)>=0?1:-1,n=[`top`,`bottom`].indexOf(e)>=0?`y`:`x`;E[e]+=O[n]*t})}return E}function Mn(e,t){t===void 0&&(t={});var n=t,r=n.placement,i=n.boundary,a=n.rootBoundary,o=n.padding,s=n.flipVariations,c=n.allowedAutoPlacements,l=c===void 0?pt:c,u=an(r),d=u?s?ft:ft.filter(function(e){return an(e)===u}):ot,f=d.filter(function(e){return l.indexOf(e)>=0});f.length===0&&(f=d);var p=f.reduce(function(t,n){return t[n]=jn(e,{placement:n,boundary:i,rootBoundary:a,padding:o})[Mt(n)],t},{});return Object.keys(p).sort(function(e,t){return p[e]-p[t]})}function Nn(e){if(Mt(e)===`auto`)return[];var t=hn(e);return[_n(e),t,_n(t)]}function Pn(e){var t=e.state,n=e.options,r=e.name;if(!t.modifiersData[r]._skip){for(var i=n.mainAxis,a=i===void 0?!0:i,o=n.altAxis,s=o===void 0?!0:o,c=n.fallbackPlacements,l=n.padding,u=n.boundary,d=n.rootBoundary,f=n.altBoundary,p=n.flipVariations,m=p===void 0?!0:p,h=n.allowedAutoPlacements,g=t.options.placement,_=Mt(g)===g,v=c||(_||!m?[hn(g)]:Nn(g)),y=[g].concat(v).reduce(function(e,n){return e.concat(Mt(n)===`auto`?Mn(t,{placement:n,boundary:u,rootBoundary:d,padding:l,flipVariations:m,allowedAutoPlacements:h}):n)},[]),b=t.rects.reference,x=t.rects.popper,S=new Map,C=!0,w=y[0],T=0;T=0,A=k?`width`:`height`,j=jn(t,{placement:E,boundary:u,rootBoundary:d,altBoundary:f,padding:l}),M=k?O?rt:it:O?nt:`top`;b[A]>x[A]&&(M=hn(M));var ee=hn(M),te=[];if(a&&te.push(j[D]<=0),s&&te.push(j[M]<=0,j[ee]<=0),te.every(function(e){return e})){w=E,C=!1;break}S.set(E,te)}if(C)for(var N=m?3:1,P=function(e){var t=y.find(function(t){var n=S.get(t);if(n)return n.slice(0,e).every(function(e){return e})});if(t)return w=t,`break`},F=N;F>0&&P(F)!==`break`;F--);t.placement!==w&&(t.modifiersData[r]._skip=!0,t.placement=w,t.reset=!0)}}var Fn={name:`flip`,enabled:!0,phase:`main`,fn:Pn,requiresIfExists:[`offset`],data:{_skip:!1}};function In(e,t,n){return n===void 0&&(n={x:0,y:0}),{top:e.top-t.height-n.y,right:e.right-t.width+n.x,bottom:e.bottom-t.height+n.y,left:e.left-t.width-n.x}}function Ln(e){return[`top`,rt,nt,it].some(function(t){return e[t]>=0})}function Rn(e){var t=e.state,n=e.name,r=t.rects.reference,i=t.rects.popper,a=t.modifiersData.preventOverflow,o=jn(t,{elementContext:`reference`}),s=jn(t,{altBoundary:!0}),c=In(o,r),l=In(s,i,a),u=Ln(c),d=Ln(l);t.modifiersData[n]={referenceClippingOffsets:c,popperEscapeOffsets:l,isReferenceHidden:u,hasPopperEscaped:d},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":u,"data-popper-escaped":d})}var zn={name:`hide`,enabled:!0,phase:`main`,requiresIfExists:[`preventOverflow`],fn:Rn};function Bn(e,t,n){var r=Mt(e),i=[`left`,`top`].indexOf(r)>=0?-1:1,a=typeof n==`function`?n(Object.assign({},t,{placement:e})):n,o=a[0],s=a[1];return o||=0,s=(s||0)*i,[`left`,`right`].indexOf(r)>=0?{x:s,y:o}:{x:o,y:s}}function Vn(e){var t=e.state,n=e.options,r=e.name,i=n.offset,a=i===void 0?[0,0]:i,o=pt.reduce(function(e,n){return e[n]=Bn(n,t.rects,a),e},{}),s=o[t.placement],c=s.x,l=s.y;t.modifiersData.popperOffsets!=null&&(t.modifiersData.popperOffsets.x+=c,t.modifiersData.popperOffsets.y+=l),t.modifiersData[r]=o}var Hn={name:`offset`,enabled:!0,phase:`main`,requires:[`popperOffsets`],fn:Vn};function Un(e){var t=e.state,n=e.name;t.modifiersData[n]=An({reference:t.rects.reference,element:t.rects.popper,strategy:`absolute`,placement:t.placement})}var Wn={name:`popperOffsets`,enabled:!0,phase:`read`,fn:Un,data:{}};function Gn(e){return e===`x`?`y`:`x`}function Kn(e){var t=e.state,n=e.options,r=e.name,i=n.mainAxis,a=i===void 0?!0:i,o=n.altAxis,s=o===void 0?!1:o,c=n.boundary,l=n.rootBoundary,u=n.altBoundary,d=n.padding,f=n.tether,p=f===void 0?!0:f,m=n.tetherOffset,h=m===void 0?0:m,g=jn(t,{boundary:c,rootBoundary:l,padding:d,altBoundary:u}),_=Mt(t.placement),v=an(t.placement),y=!v,b=Jt(_),x=Gn(b),S=t.modifiersData.popperOffsets,C=t.rects.reference,w=t.rects.popper,T=typeof h==`function`?h(Object.assign({},t.rects,{placement:t.placement})):h,E=typeof T==`number`?{mainAxis:T,altAxis:T}:Object.assign({mainAxis:0,altAxis:0},T),D=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,O={x:0,y:0};if(S){if(a){var k=b===`y`?`top`:it,A=b===`y`?nt:rt,j=b===`y`?`height`:`width`,M=S[b],ee=M+g[k],te=M-g[A],N=p?-w[j]/2:0,P=v===`start`?C[j]:w[j],F=v===`start`?-w[j]:-C[j],I=t.elements.arrow,L=p&&I?zt(I):{width:0,height:0},ne=t.modifiersData[`arrow#persistent`]?t.modifiersData[`arrow#persistent`].padding:Zt(),R=ne[k],z=ne[A],re=Yt(0,C[j],L[j]),B=y?C[j]/2-N-re-R-E.mainAxis:P-re-R-E.mainAxis,ie=y?-C[j]/2+N+re+z+E.mainAxis:F+re+z+E.mainAxis,ae=t.elements.arrow&&qt(t.elements.arrow),V=ae?b===`y`?ae.clientTop||0:ae.clientLeft||0:0,H=D?.[b]??0,oe=M+B-H-V,se=M+ie-H,ce=Yt(p?Pt(ee,oe):ee,M,p?Nt(te,se):te);S[b]=ce,O[b]=ce-M}if(s){var le=b===`x`?`top`:it,ue=b===`x`?nt:rt,de=S[x],fe=x===`y`?`height`:`width`,pe=de+g[le],me=de-g[ue],he=[`top`,it].indexOf(_)!==-1,ge=D?.[x]??0,_e=he?pe:de-C[fe]-w[fe]-ge+E.altAxis,U=he?de+C[fe]+w[fe]-ge-E.altAxis:me,ve=p&&he?Xt(_e,de,U):Yt(p?_e:pe,de,p?U:me);S[x]=ve,O[x]=ve-de}t.modifiersData[r]=O}}var qn={name:`preventOverflow`,enabled:!0,phase:`main`,fn:Kn,requiresIfExists:[`offset`]};function Jn(e){return{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}}function Yn(e){return e===Tt(e)||!Dt(e)?vn(e):Jn(e)}function Xn(e){var t=e.getBoundingClientRect(),n=Ft(t.width)/e.offsetWidth||1,r=Ft(t.height)/e.offsetHeight||1;return n!==1||r!==1}function Zn(e,t,n){n===void 0&&(n=!1);var r=Dt(t),i=Dt(t)&&Xn(t),a=Ut(t),o=Rt(e,i,n),s={scrollLeft:0,scrollTop:0},c={x:0,y:0};return(r||!r&&!n)&&((wt(t)!==`body`||Sn(a))&&(s=Yn(t)),Dt(t)?(c=Rt(t,!0),c.x+=t.clientLeft,c.y+=t.clientTop):a&&(c.x=yn(a))),{x:o.left+s.scrollLeft-c.x,y:o.top+s.scrollTop-c.y,width:o.width,height:o.height}}function Qn(e){var t=new Map,n=new Set,r=[];e.forEach(function(e){t.set(e.name,e)});function i(e){n.add(e.name),[].concat(e.requires||[],e.requiresIfExists||[]).forEach(function(e){if(!n.has(e)){var r=t.get(e);r&&i(r)}}),r.push(e)}return e.forEach(function(e){n.has(e.name)||i(e)}),r}function $n(e){var t=Qn(e);return Ct.reduce(function(e,n){return e.concat(t.filter(function(e){return e.phase===n}))},[])}function er(e){var t;return function(){return t||=new Promise(function(n){Promise.resolve().then(function(){t=void 0,n(e())})}),t}}function tr(e){var t=e.reduce(function(e,t){var n=e[t.name];return e[t.name]=n?Object.assign({},n,t,{options:Object.assign({},n.options,t.options),data:Object.assign({},n.data,t.data)}):t,e},{});return Object.keys(t).map(function(e){return t[e]})}var nr={placement:`bottom`,modifiers:[],strategy:`absolute`};function rr(){return![...arguments].some(function(e){return!(e&&typeof e.getBoundingClientRect==`function`)})}function ir(e){e===void 0&&(e={});var t=e,n=t.defaultModifiers,r=n===void 0?[]:n,i=t.defaultOptions,a=i===void 0?nr:i;return function(e,t,n){n===void 0&&(n=a);var i={placement:`bottom`,orderedModifiers:[],options:Object.assign({},nr,a),modifiersData:{},elements:{reference:e,popper:t},attributes:{},styles:{}},o=[],s=!1,c={state:i,setOptions:function(n){var o=typeof n==`function`?n(i.options):n;u(),i.options=Object.assign({},a,i.options,o),i.scrollParents={reference:Et(e)?wn(e):e.contextElement?wn(e.contextElement):[],popper:wn(t)};var s=$n(tr([].concat(r,i.options.modifiers)));return i.orderedModifiers=s.filter(function(e){return e.enabled}),l(),c.update()},forceUpdate:function(){if(!s){var e=i.elements,t=e.reference,n=e.popper;if(rr(t,n)){i.rects={reference:Zn(t,qt(n),i.options.strategy===`fixed`),popper:zt(n)},i.reset=!1,i.placement=i.options.placement,i.orderedModifiers.forEach(function(e){return i.modifiersData[e.name]=Object.assign({},e.data)});for(var r=0;ryt,afterRead:()=>gt,afterWrite:()=>St,applyStyles:()=>jt,arrow:()=>rn,auto:()=>at,basePlacements:()=>ot,beforeMain:()=>_t,beforeRead:()=>mt,beforeWrite:()=>bt,bottom:()=>nt,clippingParents:()=>ct,computeStyles:()=>un,createPopper:()=>sr,createPopperBase:()=>ar,createPopperLite:()=>or,detectOverflow:()=>jn,end:()=>`end`,eventListeners:()=>pn,flip:()=>Fn,hide:()=>zn,left:()=>it,main:()=>vt,modifierPhases:()=>Ct,offset:()=>Hn,placements:()=>pt,popper:()=>ut,popperGenerator:()=>ir,popperOffsets:()=>Wn,preventOverflow:()=>qn,read:()=>ht,reference:()=>dt,right:()=>rt,start:()=>st,top:()=>`top`,variationPlacements:()=>ft,viewport:()=>lt,write:()=>xt}),lr=new Map,ur={set(e,t,n){lr.has(e)||lr.set(e,new Map);let r=lr.get(e);if(!r.has(t)&&r.size!==0){console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(r.keys())[0]}.`);return}r.set(t,n)},get(e,t){return lr.has(e)&&lr.get(e).get(t)||null},remove(e,t){if(!lr.has(e))return;let n=lr.get(e);n.delete(t),n.size===0&&lr.delete(e)}},dr=1e6,fr=1e3,pr=`transitionend`,mr=e=>(e&&window.CSS&&window.CSS.escape&&(e=e.replace(/#([^\s"#']+)/g,(e,t)=>`#${CSS.escape(t)}`)),e),hr=e=>e==null?`${e}`:Object.prototype.toString.call(e).match(/\s([a-z]+)/i)[1].toLowerCase(),gr=e=>{do e+=Math.floor(Math.random()*dr);while(document.getElementById(e));return e},_r=e=>{if(!e)return 0;let{transitionDuration:t,transitionDelay:n}=window.getComputedStyle(e);return!Number.parseFloat(t)&&!Number.parseFloat(n)?0:(t=t.split(`,`)[0],n=n.split(`,`)[0],(Number.parseFloat(t)+Number.parseFloat(n))*fr)},vr=e=>{e.dispatchEvent(new Event(pr))},yr=e=>!e||typeof e!=`object`?!1:(e.jquery!==void 0&&(e=e[0]),e.nodeType!==void 0),br=e=>yr(e)?e.jquery?e[0]:e:typeof e==`string`&&e.length>0?document.querySelector(mr(e)):null,xr=e=>{if(!yr(e)||e.getClientRects().length===0)return!1;let t=getComputedStyle(e).getPropertyValue(`visibility`)===`visible`,n=e.closest(`details:not([open])`);if(!n)return t;if(n!==e){let t=e.closest(`summary`);if(t&&t.parentNode!==n||t===null)return!1}return t},Sr=e=>!e||e.nodeType!==Node.ELEMENT_NODE||e.classList.contains(`disabled`)?!0:e.disabled===void 0?e.hasAttribute(`disabled`)&&e.getAttribute(`disabled`)!==`false`:e.disabled,Cr=e=>{if(!document.documentElement.attachShadow)return null;if(typeof e.getRootNode==`function`){let t=e.getRootNode();return t instanceof ShadowRoot?t:null}return e instanceof ShadowRoot?e:e.parentNode?Cr(e.parentNode):null},wr=()=>{},Tr=e=>{e.offsetHeight},Er=()=>window.jQuery&&!document.body.hasAttribute(`data-bs-no-jquery`)?window.jQuery:null,Dr=[],Or=e=>{document.readyState===`loading`?(Dr.length||document.addEventListener(`DOMContentLoaded`,()=>{for(let e of Dr)e()}),Dr.push(e)):e()},kr=()=>document.documentElement.dir===`rtl`,Ar=e=>{Or(()=>{let t=Er();if(t){let n=e.NAME,r=t.fn[n];t.fn[n]=e.jQueryInterface,t.fn[n].Constructor=e,t.fn[n].noConflict=()=>(t.fn[n]=r,e.jQueryInterface)}})},jr=(e,t=[],n=e)=>typeof e==`function`?e(...t):n,Mr=(e,t,n=!0)=>{if(!n){jr(e);return}let r=_r(t)+5,i=!1,a=({target:n})=>{n===t&&(i=!0,t.removeEventListener(pr,a),jr(e))};t.addEventListener(pr,a),setTimeout(()=>{i||vr(t)},r)},Nr=(e,t,n,r)=>{let i=e.length,a=e.indexOf(t);return a===-1?!n&&r?e[i-1]:e[0]:(a+=n?1:-1,r&&(a=(a+i)%i),e[Math.max(0,Math.min(a,i-1))])},Pr=/[^.]*(?=\..*)\.|.*/,Fr=/\..*/,Ir=/::\d+$/,Lr={},Rr=1,zr={mouseenter:`mouseover`,mouseleave:`mouseout`},Br=new Set(`click.dblclick.mouseup.mousedown.contextmenu.mousewheel.DOMMouseScroll.mouseover.mouseout.mousemove.selectstart.selectend.keydown.keypress.keyup.orientationchange.touchstart.touchmove.touchend.touchcancel.pointerdown.pointermove.pointerup.pointerleave.pointercancel.gesturestart.gesturechange.gestureend.focus.blur.change.reset.select.submit.focusin.focusout.load.unload.beforeunload.resize.move.DOMContentLoaded.readystatechange.error.abort.scroll`.split(`.`));function Vr(e,t){return t&&`${t}::${Rr++}`||e.uidEvent||Rr++}function Hr(e){let t=Vr(e);return e.uidEvent=t,Lr[t]=Lr[t]||{},Lr[t]}function Ur(e,t){return function n(r){return Qr(r,{delegateTarget:e}),n.oneOff&&Zr.off(e,r.type,t),t.apply(e,[r])}}function Wr(e,t,n){return function r(i){let a=e.querySelectorAll(t);for(let{target:o}=i;o&&o!==this;o=o.parentNode)for(let s of a)if(s===o)return Qr(i,{delegateTarget:o}),r.oneOff&&Zr.off(e,i.type,t,n),n.apply(o,[i])}}function Gr(e,t,n=null){return Object.values(e).find(e=>e.callable===t&&e.delegationSelector===n)}function Kr(e,t,n){let r=typeof t==`string`,i=r?n:t||n,a=Xr(e);return Br.has(a)||(a=e),[r,i,a]}function qr(e,t,n,r,i){if(typeof t!=`string`||!e)return;let[a,o,s]=Kr(t,n,r);t in zr&&(o=(e=>function(t){if(!t.relatedTarget||t.relatedTarget!==t.delegateTarget&&!t.delegateTarget.contains(t.relatedTarget))return e.call(this,t)})(o));let c=Hr(e),l=c[s]||(c[s]={}),u=Gr(l,o,a?n:null);if(u){u.oneOff=u.oneOff&&i;return}let d=Vr(o,t.replace(Pr,``)),f=a?Wr(e,n,o):Ur(e,o);f.delegationSelector=a?n:null,f.callable=o,f.oneOff=i,f.uidEvent=d,l[d]=f,e.addEventListener(s,f,a)}function Jr(e,t,n,r,i){let a=Gr(t[n],r,i);a&&(e.removeEventListener(n,a,!!i),delete t[n][a.uidEvent])}function Yr(e,t,n,r){let i=t[n]||{};for(let[a,o]of Object.entries(i))a.includes(r)&&Jr(e,t,n,o.callable,o.delegationSelector)}function Xr(e){return e=e.replace(Fr,``),zr[e]||e}var Zr={on(e,t,n,r){qr(e,t,n,r,!1)},one(e,t,n,r){qr(e,t,n,r,!0)},off(e,t,n,r){if(typeof t!=`string`||!e)return;let[i,a,o]=Kr(t,n,r),s=o!==t,c=Hr(e),l=c[o]||{},u=t.startsWith(`.`);if(a!==void 0){if(!Object.keys(l).length)return;Jr(e,c,o,a,i?n:null);return}if(u)for(let n of Object.keys(c))Yr(e,c,n,t.slice(1));for(let[n,r]of Object.entries(l)){let i=n.replace(Ir,``);(!s||t.includes(i))&&Jr(e,c,o,r.callable,r.delegationSelector)}},trigger(e,t,n){if(typeof t!=`string`||!e)return null;let r=Er(),i=t!==Xr(t),a=null,o=!0,s=!0,c=!1;i&&r&&(a=r.Event(t,n),r(e).trigger(a),o=!a.isPropagationStopped(),s=!a.isImmediatePropagationStopped(),c=a.isDefaultPrevented());let l=Qr(new Event(t,{bubbles:o,cancelable:!0}),n);return c&&l.preventDefault(),s&&e.dispatchEvent(l),l.defaultPrevented&&a&&a.preventDefault(),l}};function Qr(e,t={}){for(let[n,r]of Object.entries(t))try{e[n]=r}catch{Object.defineProperty(e,n,{configurable:!0,get(){return r}})}return e}function $r(e){if(e===`true`)return!0;if(e===`false`)return!1;if(e===Number(e).toString())return Number(e);if(e===``||e===`null`)return null;if(typeof e!=`string`)return e;try{return JSON.parse(decodeURIComponent(e))}catch{return e}}function ei(e){return e.replace(/[A-Z]/g,e=>`-${e.toLowerCase()}`)}var ti={setDataAttribute(e,t,n){e.setAttribute(`data-bs-${ei(t)}`,n)},removeDataAttribute(e,t){e.removeAttribute(`data-bs-${ei(t)}`)},getDataAttributes(e){if(!e)return{};let t={},n=Object.keys(e.dataset).filter(e=>e.startsWith(`bs`)&&!e.startsWith(`bsConfig`));for(let r of n){let n=r.replace(/^bs/,``);n=n.charAt(0).toLowerCase()+n.slice(1,n.length),t[n]=$r(e.dataset[r])}return t},getDataAttribute(e,t){return $r(e.getAttribute(`data-bs-${ei(t)}`))}},ni=class{static get Default(){return{}}static get DefaultType(){return{}}static get NAME(){throw Error(`You have to implement the static method "NAME", for each component!`)}_getConfig(e){return e=this._mergeConfigObj(e),e=this._configAfterMerge(e),this._typeCheckConfig(e),e}_configAfterMerge(e){return e}_mergeConfigObj(e,t){let n=yr(t)?ti.getDataAttribute(t,`config`):{};return{...this.constructor.Default,...typeof n==`object`?n:{},...yr(t)?ti.getDataAttributes(t):{},...typeof e==`object`?e:{}}}_typeCheckConfig(e,t=this.constructor.DefaultType){for(let[n,r]of Object.entries(t)){let t=e[n],i=yr(t)?`element`:hr(t);if(!new RegExp(r).test(i))throw TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${n}" provided type "${i}" but expected type "${r}".`)}}},ri=`5.3.3`,ii=class extends ni{constructor(e,t){super(),e=br(e),e&&(this._element=e,this._config=this._getConfig(t),ur.set(this._element,this.constructor.DATA_KEY,this))}dispose(){ur.remove(this._element,this.constructor.DATA_KEY),Zr.off(this._element,this.constructor.EVENT_KEY);for(let e of Object.getOwnPropertyNames(this))this[e]=null}_queueCallback(e,t,n=!0){Mr(e,t,n)}_getConfig(e){return e=this._mergeConfigObj(e,this._element),e=this._configAfterMerge(e),this._typeCheckConfig(e),e}static getInstance(e){return ur.get(br(e),this.DATA_KEY)}static getOrCreateInstance(e,t={}){return this.getInstance(e)||new this(e,typeof t==`object`?t:null)}static get VERSION(){return ri}static get DATA_KEY(){return`bs.${this.NAME}`}static get EVENT_KEY(){return`.${this.DATA_KEY}`}static eventName(e){return`${e}${this.EVENT_KEY}`}},ai=e=>{let t=e.getAttribute(`data-bs-target`);if(!t||t===`#`){let n=e.getAttribute(`href`);if(!n||!n.includes(`#`)&&!n.startsWith(`.`))return null;n.includes(`#`)&&!n.startsWith(`#`)&&(n=`#${n.split(`#`)[1]}`),t=n&&n!==`#`?n.trim():null}return t?t.split(`,`).map(e=>mr(e)).join(`,`):null},oi={find(e,t=document.documentElement){return[].concat(...Element.prototype.querySelectorAll.call(t,e))},findOne(e,t=document.documentElement){return Element.prototype.querySelector.call(t,e)},children(e,t){return[].concat(...e.children).filter(e=>e.matches(t))},parents(e,t){let n=[],r=e.parentNode.closest(t);for(;r;)n.push(r),r=r.parentNode.closest(t);return n},prev(e,t){let n=e.previousElementSibling;for(;n;){if(n.matches(t))return[n];n=n.previousElementSibling}return[]},next(e,t){let n=e.nextElementSibling;for(;n;){if(n.matches(t))return[n];n=n.nextElementSibling}return[]},focusableChildren(e){let t=[`a`,`button`,`input`,`textarea`,`select`,`details`,`[tabindex]`,`[contenteditable="true"]`].map(e=>`${e}:not([tabindex^="-"])`).join(`,`);return this.find(t,e).filter(e=>!Sr(e)&&xr(e))},getSelectorFromElement(e){let t=ai(e);return t&&oi.findOne(t)?t:null},getElementFromSelector(e){let t=ai(e);return t?oi.findOne(t):null},getMultipleElementsFromSelector(e){let t=ai(e);return t?oi.find(t):[]}},si=(e,t=`hide`)=>{let n=`click.dismiss${e.EVENT_KEY}`,r=e.NAME;Zr.on(document,n,`[data-bs-dismiss="${r}"]`,function(n){if([`A`,`AREA`].includes(this.tagName)&&n.preventDefault(),Sr(this))return;let i=oi.getElementFromSelector(this)||this.closest(`.${r}`);e.getOrCreateInstance(i)[t]()})},ci=`alert`,li=`.bs.alert`,ui=`close${li}`,di=`closed${li}`,fi=`fade`,pi=`show`,mi=class e extends ii{static get NAME(){return ci}close(){if(Zr.trigger(this._element,ui).defaultPrevented)return;this._element.classList.remove(pi);let e=this._element.classList.contains(fi);this._queueCallback(()=>this._destroyElement(),this._element,e)}_destroyElement(){this._element.remove(),Zr.trigger(this._element,di),this.dispose()}static jQueryInterface(t){return this.each(function(){let n=e.getOrCreateInstance(this);if(typeof t==`string`){if(n[t]===void 0||t.startsWith(`_`)||t===`constructor`)throw TypeError(`No method named "${t}"`);n[t](this)}})}};si(mi,`close`),Ar(mi);var hi=`button`,gi=`.bs.button`,_i=`.data-api`,vi=`active`,yi=`[data-bs-toggle="button"]`,bi=`click${gi}${_i}`,xi=class e extends ii{static get NAME(){return hi}toggle(){this._element.setAttribute(`aria-pressed`,this._element.classList.toggle(vi))}static jQueryInterface(t){return this.each(function(){let n=e.getOrCreateInstance(this);t===`toggle`&&n[t]()})}};Zr.on(document,bi,yi,e=>{e.preventDefault();let t=e.target.closest(yi);xi.getOrCreateInstance(t).toggle()}),Ar(xi);var Si=`swipe`,Ci=`.bs.swipe`,wi=`touchstart${Ci}`,Ti=`touchmove${Ci}`,Ei=`touchend${Ci}`,Di=`pointerdown${Ci}`,Oi=`pointerup${Ci}`,ki=`touch`,Ai=`pen`,ji=`pointer-event`,Mi=40,Ni={endCallback:null,leftCallback:null,rightCallback:null},Pi={endCallback:`(function|null)`,leftCallback:`(function|null)`,rightCallback:`(function|null)`},Fi=class e extends ni{constructor(t,n){super(),this._element=t,!(!t||!e.isSupported())&&(this._config=this._getConfig(n),this._deltaX=0,this._supportPointerEvents=!!window.PointerEvent,this._initEvents())}static get Default(){return Ni}static get DefaultType(){return Pi}static get NAME(){return Si}dispose(){Zr.off(this._element,Ci)}_start(e){if(!this._supportPointerEvents){this._deltaX=e.touches[0].clientX;return}this._eventIsPointerPenTouch(e)&&(this._deltaX=e.clientX)}_end(e){this._eventIsPointerPenTouch(e)&&(this._deltaX=e.clientX-this._deltaX),this._handleSwipe(),jr(this._config.endCallback)}_move(e){this._deltaX=e.touches&&e.touches.length>1?0:e.touches[0].clientX-this._deltaX}_handleSwipe(){let e=Math.abs(this._deltaX);if(e<=Mi)return;let t=e/this._deltaX;this._deltaX=0,t&&jr(t>0?this._config.rightCallback:this._config.leftCallback)}_initEvents(){this._supportPointerEvents?(Zr.on(this._element,Di,e=>this._start(e)),Zr.on(this._element,Oi,e=>this._end(e)),this._element.classList.add(ji)):(Zr.on(this._element,wi,e=>this._start(e)),Zr.on(this._element,Ti,e=>this._move(e)),Zr.on(this._element,Ei,e=>this._end(e)))}_eventIsPointerPenTouch(e){return this._supportPointerEvents&&(e.pointerType===Ai||e.pointerType===ki)}static isSupported(){return`ontouchstart`in document.documentElement||navigator.maxTouchPoints>0}},Ii=`carousel`,Li=`.bs.carousel`,Ri=`.data-api`,zi=`ArrowLeft`,Bi=`ArrowRight`,Vi=500,Hi=`next`,Ui=`prev`,Wi=`left`,Gi=`right`,Ki=`slide${Li}`,qi=`slid${Li}`,Ji=`keydown${Li}`,Yi=`mouseenter${Li}`,Xi=`mouseleave${Li}`,Zi=`dragstart${Li}`,Qi=`load${Li}${Ri}`,$i=`click${Li}${Ri}`,ea=`carousel`,ta=`active`,na=`slide`,ra=`carousel-item-end`,ia=`carousel-item-start`,aa=`carousel-item-next`,oa=`carousel-item-prev`,sa=`.active`,ca=`.carousel-item`,la=sa+ca,ua=`.carousel-item img`,da=`.carousel-indicators`,fa=`[data-bs-slide], [data-bs-slide-to]`,pa=`[data-bs-ride="carousel"]`,ma={[zi]:Gi,[Bi]:Wi},ha={interval:5e3,keyboard:!0,pause:`hover`,ride:!1,touch:!0,wrap:!0},ga={interval:`(number|boolean)`,keyboard:`boolean`,pause:`(string|boolean)`,ride:`(boolean|string)`,touch:`boolean`,wrap:`boolean`},_a=class e extends ii{constructor(e,t){super(e,t),this._interval=null,this._activeElement=null,this._isSliding=!1,this.touchTimeout=null,this._swipeHelper=null,this._indicatorsElement=oi.findOne(da,this._element),this._addEventListeners(),this._config.ride===ea&&this.cycle()}static get Default(){return ha}static get DefaultType(){return ga}static get NAME(){return Ii}next(){this._slide(Hi)}nextWhenVisible(){!document.hidden&&xr(this._element)&&this.next()}prev(){this._slide(Ui)}pause(){this._isSliding&&vr(this._element),this._clearInterval()}cycle(){this._clearInterval(),this._updateInterval(),this._interval=setInterval(()=>this.nextWhenVisible(),this._config.interval)}_maybeEnableCycle(){if(this._config.ride){if(this._isSliding){Zr.one(this._element,qi,()=>this.cycle());return}this.cycle()}}to(e){let t=this._getItems();if(e>t.length-1||e<0)return;if(this._isSliding){Zr.one(this._element,qi,()=>this.to(e));return}let n=this._getItemIndex(this._getActive());if(n===e)return;let r=e>n?Hi:Ui;this._slide(r,t[e])}dispose(){this._swipeHelper&&this._swipeHelper.dispose(),super.dispose()}_configAfterMerge(e){return e.defaultInterval=e.interval,e}_addEventListeners(){this._config.keyboard&&Zr.on(this._element,Ji,e=>this._keydown(e)),this._config.pause===`hover`&&(Zr.on(this._element,Yi,()=>this.pause()),Zr.on(this._element,Xi,()=>this._maybeEnableCycle())),this._config.touch&&Fi.isSupported()&&this._addTouchEventListeners()}_addTouchEventListeners(){for(let e of oi.find(ua,this._element))Zr.on(e,Zi,e=>e.preventDefault());let e={leftCallback:()=>this._slide(this._directionToOrder(Wi)),rightCallback:()=>this._slide(this._directionToOrder(Gi)),endCallback:()=>{this._config.pause===`hover`&&(this.pause(),this.touchTimeout&&clearTimeout(this.touchTimeout),this.touchTimeout=setTimeout(()=>this._maybeEnableCycle(),Vi+this._config.interval))}};this._swipeHelper=new Fi(this._element,e)}_keydown(e){if(/input|textarea/i.test(e.target.tagName))return;let t=ma[e.key];t&&(e.preventDefault(),this._slide(this._directionToOrder(t)))}_getItemIndex(e){return this._getItems().indexOf(e)}_setActiveIndicatorElement(e){if(!this._indicatorsElement)return;let t=oi.findOne(sa,this._indicatorsElement);t.classList.remove(ta),t.removeAttribute(`aria-current`);let n=oi.findOne(`[data-bs-slide-to="${e}"]`,this._indicatorsElement);n&&(n.classList.add(ta),n.setAttribute(`aria-current`,`true`))}_updateInterval(){let e=this._activeElement||this._getActive();if(!e)return;let t=Number.parseInt(e.getAttribute(`data-bs-interval`),10);this._config.interval=t||this._config.defaultInterval}_slide(e,t=null){if(this._isSliding)return;let n=this._getActive(),r=e===Hi,i=t||Nr(this._getItems(),n,r,this._config.wrap);if(i===n)return;let a=this._getItemIndex(i),o=t=>Zr.trigger(this._element,t,{relatedTarget:i,direction:this._orderToDirection(e),from:this._getItemIndex(n),to:a});if(o(Ki).defaultPrevented||!n||!i)return;let s=!!this._interval;this.pause(),this._isSliding=!0,this._setActiveIndicatorElement(a),this._activeElement=i;let c=r?ia:ra,l=r?aa:oa;i.classList.add(l),Tr(i),n.classList.add(c),i.classList.add(c),this._queueCallback(()=>{i.classList.remove(c,l),i.classList.add(ta),n.classList.remove(ta,l,c),this._isSliding=!1,o(qi)},n,this._isAnimated()),s&&this.cycle()}_isAnimated(){return this._element.classList.contains(na)}_getActive(){return oi.findOne(la,this._element)}_getItems(){return oi.find(ca,this._element)}_clearInterval(){this._interval&&=(clearInterval(this._interval),null)}_directionToOrder(e){return kr()?e===Wi?Ui:Hi:e===Wi?Hi:Ui}_orderToDirection(e){return kr()?e===Ui?Wi:Gi:e===Ui?Gi:Wi}static jQueryInterface(t){return this.each(function(){let n=e.getOrCreateInstance(this,t);if(typeof t==`number`){n.to(t);return}if(typeof t==`string`){if(n[t]===void 0||t.startsWith(`_`)||t===`constructor`)throw TypeError(`No method named "${t}"`);n[t]()}})}};Zr.on(document,$i,fa,function(e){let t=oi.getElementFromSelector(this);if(!t||!t.classList.contains(ea))return;e.preventDefault();let n=_a.getOrCreateInstance(t),r=this.getAttribute(`data-bs-slide-to`);if(r){n.to(r),n._maybeEnableCycle();return}if(ti.getDataAttribute(this,`slide`)===`next`){n.next(),n._maybeEnableCycle();return}n.prev(),n._maybeEnableCycle()}),Zr.on(window,Qi,()=>{let e=oi.find(pa);for(let t of e)_a.getOrCreateInstance(t)}),Ar(_a);var va=`collapse`,ya=`.bs.collapse`,ba=`.data-api`,xa=`show${ya}`,Sa=`shown${ya}`,Ca=`hide${ya}`,wa=`hidden${ya}`,Ta=`click${ya}${ba}`,Ea=`show`,Da=`collapse`,Oa=`collapsing`,ka=`collapsed`,Aa=`:scope .${Da} .${Da}`,ja=`collapse-horizontal`,Ma=`width`,Na=`height`,Pa=`.collapse.show, .collapse.collapsing`,Fa=`[data-bs-toggle="collapse"]`,Ia={parent:null,toggle:!0},La={parent:`(null|element)`,toggle:`boolean`},Ra=class e extends ii{constructor(e,t){super(e,t),this._isTransitioning=!1,this._triggerArray=[];let n=oi.find(Fa);for(let e of n){let t=oi.getSelectorFromElement(e),n=oi.find(t).filter(e=>e===this._element);t!==null&&n.length&&this._triggerArray.push(e)}this._initializeChildren(),this._config.parent||this._addAriaAndCollapsedClass(this._triggerArray,this._isShown()),this._config.toggle&&this.toggle()}static get Default(){return Ia}static get DefaultType(){return La}static get NAME(){return va}toggle(){this._isShown()?this.hide():this.show()}show(){if(this._isTransitioning||this._isShown())return;let t=[];if(this._config.parent&&(t=this._getFirstLevelChildren(Pa).filter(e=>e!==this._element).map(t=>e.getOrCreateInstance(t,{toggle:!1}))),t.length&&t[0]._isTransitioning||Zr.trigger(this._element,xa).defaultPrevented)return;for(let e of t)e.hide();let n=this._getDimension();this._element.classList.remove(Da),this._element.classList.add(Oa),this._element.style[n]=0,this._addAriaAndCollapsedClass(this._triggerArray,!0),this._isTransitioning=!0;let r=()=>{this._isTransitioning=!1,this._element.classList.remove(Oa),this._element.classList.add(Da,Ea),this._element.style[n]=``,Zr.trigger(this._element,Sa)},i=`scroll${n[0].toUpperCase()+n.slice(1)}`;this._queueCallback(r,this._element,!0),this._element.style[n]=`${this._element[i]}px`}hide(){if(this._isTransitioning||!this._isShown()||Zr.trigger(this._element,Ca).defaultPrevented)return;let e=this._getDimension();this._element.style[e]=`${this._element.getBoundingClientRect()[e]}px`,Tr(this._element),this._element.classList.add(Oa),this._element.classList.remove(Da,Ea);for(let e of this._triggerArray){let t=oi.getElementFromSelector(e);t&&!this._isShown(t)&&this._addAriaAndCollapsedClass([e],!1)}this._isTransitioning=!0;let t=()=>{this._isTransitioning=!1,this._element.classList.remove(Oa),this._element.classList.add(Da),Zr.trigger(this._element,wa)};this._element.style[e]=``,this._queueCallback(t,this._element,!0)}_isShown(e=this._element){return e.classList.contains(Ea)}_configAfterMerge(e){return e.toggle=!!e.toggle,e.parent=br(e.parent),e}_getDimension(){return this._element.classList.contains(ja)?Ma:Na}_initializeChildren(){if(!this._config.parent)return;let e=this._getFirstLevelChildren(Fa);for(let t of e){let e=oi.getElementFromSelector(t);e&&this._addAriaAndCollapsedClass([t],this._isShown(e))}}_getFirstLevelChildren(e){let t=oi.find(Aa,this._config.parent);return oi.find(e,this._config.parent).filter(e=>!t.includes(e))}_addAriaAndCollapsedClass(e,t){if(e.length)for(let n of e)n.classList.toggle(ka,!t),n.setAttribute(`aria-expanded`,t)}static jQueryInterface(t){let n={};return typeof t==`string`&&/show|hide/.test(t)&&(n.toggle=!1),this.each(function(){let r=e.getOrCreateInstance(this,n);if(typeof t==`string`){if(r[t]===void 0)throw TypeError(`No method named "${t}"`);r[t]()}})}};Zr.on(document,Ta,Fa,function(e){(e.target.tagName===`A`||e.delegateTarget&&e.delegateTarget.tagName===`A`)&&e.preventDefault();for(let e of oi.getMultipleElementsFromSelector(this))Ra.getOrCreateInstance(e,{toggle:!1}).toggle()}),Ar(Ra);var za=`dropdown`,Ba=`.bs.dropdown`,Va=`.data-api`,Ha=`Escape`,Ua=`Tab`,Wa=`ArrowUp`,Ga=`ArrowDown`,Ka=2,qa=`hide${Ba}`,Ja=`hidden${Ba}`,Ya=`show${Ba}`,Xa=`shown${Ba}`,Za=`click${Ba}${Va}`,Qa=`keydown${Ba}${Va}`,$a=`keyup${Ba}${Va}`,eo=`show`,to=`dropup`,no=`dropend`,ro=`dropstart`,io=`dropup-center`,ao=`dropdown-center`,oo=`[data-bs-toggle="dropdown"]:not(.disabled):not(:disabled)`,so=`${oo}.${eo}`,co=`.dropdown-menu`,lo=`.navbar`,uo=`.navbar-nav`,fo=`.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)`,po=kr()?`top-end`:`top-start`,mo=kr()?`top-start`:`top-end`,ho=kr()?`bottom-end`:`bottom-start`,go=kr()?`bottom-start`:`bottom-end`,_o=kr()?`left-start`:`right-start`,vo=kr()?`right-start`:`left-start`,yo=`top`,bo=`bottom`,xo={autoClose:!0,boundary:`clippingParents`,display:`dynamic`,offset:[0,2],popperConfig:null,reference:`toggle`},So={autoClose:`(boolean|string)`,boundary:`(string|element)`,display:`string`,offset:`(array|string|function)`,popperConfig:`(null|object|function)`,reference:`(string|element|object)`},Co=class e extends ii{constructor(e,t){super(e,t),this._popper=null,this._parent=this._element.parentNode,this._menu=oi.next(this._element,co)[0]||oi.prev(this._element,co)[0]||oi.findOne(co,this._parent),this._inNavbar=this._detectNavbar()}static get Default(){return xo}static get DefaultType(){return So}static get NAME(){return za}toggle(){return this._isShown()?this.hide():this.show()}show(){if(Sr(this._element)||this._isShown())return;let e={relatedTarget:this._element};if(!Zr.trigger(this._element,Ya,e).defaultPrevented){if(this._createPopper(),`ontouchstart`in document.documentElement&&!this._parent.closest(uo))for(let e of[].concat(...document.body.children))Zr.on(e,`mouseover`,wr);this._element.focus(),this._element.setAttribute(`aria-expanded`,!0),this._menu.classList.add(eo),this._element.classList.add(eo),Zr.trigger(this._element,Xa,e)}}hide(){if(Sr(this._element)||!this._isShown())return;let e={relatedTarget:this._element};this._completeHide(e)}dispose(){this._popper&&this._popper.destroy(),super.dispose()}update(){this._inNavbar=this._detectNavbar(),this._popper&&this._popper.update()}_completeHide(e){if(!Zr.trigger(this._element,qa,e).defaultPrevented){if(`ontouchstart`in document.documentElement)for(let e of[].concat(...document.body.children))Zr.off(e,`mouseover`,wr);this._popper&&this._popper.destroy(),this._menu.classList.remove(eo),this._element.classList.remove(eo),this._element.setAttribute(`aria-expanded`,`false`),ti.removeDataAttribute(this._menu,`popper`),Zr.trigger(this._element,Ja,e)}}_getConfig(e){if(e=super._getConfig(e),typeof e.reference==`object`&&!yr(e.reference)&&typeof e.reference.getBoundingClientRect!=`function`)throw TypeError(`${za.toUpperCase()}: Option "reference" provided type "object" without a required "getBoundingClientRect" method.`);return e}_createPopper(){if(cr===void 0)throw TypeError(`Bootstrap's dropdowns require Popper (https://popper.js.org)`);let e=this._element;this._config.reference===`parent`?e=this._parent:yr(this._config.reference)?e=br(this._config.reference):typeof this._config.reference==`object`&&(e=this._config.reference);let t=this._getPopperConfig();this._popper=sr(e,this._menu,t)}_isShown(){return this._menu.classList.contains(eo)}_getPlacement(){let e=this._parent;if(e.classList.contains(no))return _o;if(e.classList.contains(ro))return vo;if(e.classList.contains(io))return yo;if(e.classList.contains(ao))return bo;let t=getComputedStyle(this._menu).getPropertyValue(`--bs-position`).trim()===`end`;return e.classList.contains(to)?t?mo:po:t?go:ho}_detectNavbar(){return this._element.closest(lo)!==null}_getOffset(){let{offset:e}=this._config;return typeof e==`string`?e.split(`,`).map(e=>Number.parseInt(e,10)):typeof e==`function`?t=>e(t,this._element):e}_getPopperConfig(){let e={placement:this._getPlacement(),modifiers:[{name:`preventOverflow`,options:{boundary:this._config.boundary}},{name:`offset`,options:{offset:this._getOffset()}}]};return(this._inNavbar||this._config.display===`static`)&&(ti.setDataAttribute(this._menu,`popper`,`static`),e.modifiers=[{name:`applyStyles`,enabled:!1}]),{...e,...jr(this._config.popperConfig,[e])}}_selectMenuItem({key:e,target:t}){let n=oi.find(fo,this._menu).filter(e=>xr(e));n.length&&Nr(n,t,e===Ga,!n.includes(t)).focus()}static jQueryInterface(t){return this.each(function(){let n=e.getOrCreateInstance(this,t);if(typeof t==`string`){if(n[t]===void 0)throw TypeError(`No method named "${t}"`);n[t]()}})}static clearMenus(t){if(t.button===Ka||t.type===`keyup`&&t.key!==Ua)return;let n=oi.find(so);for(let r of n){let n=e.getInstance(r);if(!n||n._config.autoClose===!1)continue;let i=t.composedPath(),a=i.includes(n._menu);if(i.includes(n._element)||n._config.autoClose===`inside`&&!a||n._config.autoClose===`outside`&&a||n._menu.contains(t.target)&&(t.type===`keyup`&&t.key===Ua||/input|select|option|textarea|form/i.test(t.target.tagName)))continue;let o={relatedTarget:n._element};t.type===`click`&&(o.clickEvent=t),n._completeHide(o)}}static dataApiKeydownHandler(t){let n=/input|textarea/i.test(t.target.tagName),r=t.key===Ha,i=[Wa,Ga].includes(t.key);if(!i&&!r||n&&!r)return;t.preventDefault();let a=this.matches(oo)?this:oi.prev(this,oo)[0]||oi.next(this,oo)[0]||oi.findOne(oo,t.delegateTarget.parentNode),o=e.getOrCreateInstance(a);if(i){t.stopPropagation(),o.show(),o._selectMenuItem(t);return}o._isShown()&&(t.stopPropagation(),o.hide(),a.focus())}};Zr.on(document,Qa,oo,Co.dataApiKeydownHandler),Zr.on(document,Qa,co,Co.dataApiKeydownHandler),Zr.on(document,Za,Co.clearMenus),Zr.on(document,$a,Co.clearMenus),Zr.on(document,Za,oo,function(e){e.preventDefault(),Co.getOrCreateInstance(this).toggle()}),Ar(Co);var wo=`backdrop`,To=`fade`,Eo=`show`,Do=`mousedown.bs.${wo}`,Oo={className:`modal-backdrop`,clickCallback:null,isAnimated:!1,isVisible:!0,rootElement:`body`},ko={className:`string`,clickCallback:`(function|null)`,isAnimated:`boolean`,isVisible:`boolean`,rootElement:`(element|string)`},Ao=class extends ni{constructor(e){super(),this._config=this._getConfig(e),this._isAppended=!1,this._element=null}static get Default(){return Oo}static get DefaultType(){return ko}static get NAME(){return wo}show(e){if(!this._config.isVisible){jr(e);return}this._append();let t=this._getElement();this._config.isAnimated&&Tr(t),t.classList.add(Eo),this._emulateAnimation(()=>{jr(e)})}hide(e){if(!this._config.isVisible){jr(e);return}this._getElement().classList.remove(Eo),this._emulateAnimation(()=>{this.dispose(),jr(e)})}dispose(){this._isAppended&&=(Zr.off(this._element,Do),this._element.remove(),!1)}_getElement(){if(!this._element){let e=document.createElement(`div`);e.className=this._config.className,this._config.isAnimated&&e.classList.add(To),this._element=e}return this._element}_configAfterMerge(e){return e.rootElement=br(e.rootElement),e}_append(){if(this._isAppended)return;let e=this._getElement();this._config.rootElement.append(e),Zr.on(e,Do,()=>{jr(this._config.clickCallback)}),this._isAppended=!0}_emulateAnimation(e){Mr(e,this._getElement(),this._config.isAnimated)}},jo=`focustrap`,Mo=`.bs.focustrap`,No=`focusin${Mo}`,Po=`keydown.tab${Mo}`,Fo=`Tab`,Io=`forward`,Lo=`backward`,Ro={autofocus:!0,trapElement:null},zo={autofocus:`boolean`,trapElement:`element`},Bo=class extends ni{constructor(e){super(),this._config=this._getConfig(e),this._isActive=!1,this._lastTabNavDirection=null}static get Default(){return Ro}static get DefaultType(){return zo}static get NAME(){return jo}activate(){this._isActive||=(this._config.autofocus&&this._config.trapElement.focus(),Zr.off(document,Mo),Zr.on(document,No,e=>this._handleFocusin(e)),Zr.on(document,Po,e=>this._handleKeydown(e)),!0)}deactivate(){this._isActive&&(this._isActive=!1,Zr.off(document,Mo))}_handleFocusin(e){let{trapElement:t}=this._config;if(e.target===document||e.target===t||t.contains(e.target))return;let n=oi.focusableChildren(t);n.length===0?t.focus():this._lastTabNavDirection===Lo?n[n.length-1].focus():n[0].focus()}_handleKeydown(e){e.key===Fo&&(this._lastTabNavDirection=e.shiftKey?Lo:Io)}},Vo=`.fixed-top, .fixed-bottom, .is-fixed, .sticky-top`,Ho=`.sticky-top`,Uo=`padding-right`,Wo=`margin-right`,Go=class{constructor(){this._element=document.body}getWidth(){let e=document.documentElement.clientWidth;return Math.abs(window.innerWidth-e)}hide(){let e=this.getWidth();this._disableOverFlow(),this._setElementAttributes(this._element,Uo,t=>t+e),this._setElementAttributes(Vo,Uo,t=>t+e),this._setElementAttributes(Ho,Wo,t=>t-e)}reset(){this._resetElementAttributes(this._element,`overflow`),this._resetElementAttributes(this._element,Uo),this._resetElementAttributes(Vo,Uo),this._resetElementAttributes(Ho,Wo)}isOverflowing(){return this.getWidth()>0}_disableOverFlow(){this._saveInitialAttribute(this._element,`overflow`),this._element.style.overflow=`hidden`}_setElementAttributes(e,t,n){let r=this.getWidth();this._applyManipulationCallback(e,e=>{if(e!==this._element&&window.innerWidth>e.clientWidth+r)return;this._saveInitialAttribute(e,t);let i=window.getComputedStyle(e).getPropertyValue(t);e.style.setProperty(t,`${n(Number.parseFloat(i))}px`)})}_saveInitialAttribute(e,t){let n=e.style.getPropertyValue(t);n&&ti.setDataAttribute(e,t,n)}_resetElementAttributes(e,t){this._applyManipulationCallback(e,e=>{let n=ti.getDataAttribute(e,t);if(n===null){e.style.removeProperty(t);return}ti.removeDataAttribute(e,t),e.style.setProperty(t,n)})}_applyManipulationCallback(e,t){if(yr(e)){t(e);return}for(let n of oi.find(e,this._element))t(n)}},Ko=`modal`,qo=`.bs.modal`,Jo=`.data-api`,Yo=`Escape`,Xo=`hide${qo}`,Zo=`hidePrevented${qo}`,Qo=`hidden${qo}`,$o=`show${qo}`,es=`shown${qo}`,ts=`resize${qo}`,ns=`click.dismiss${qo}`,rs=`mousedown.dismiss${qo}`,is=`keydown.dismiss${qo}`,as=`click${qo}${Jo}`,os=`modal-open`,ss=`fade`,cs=`show`,ls=`modal-static`,us=`.modal.show`,ds=`.modal-dialog`,fs=`.modal-body`,ps=`[data-bs-toggle="modal"]`,ms={backdrop:!0,focus:!0,keyboard:!0},hs={backdrop:`(boolean|string)`,focus:`boolean`,keyboard:`boolean`},gs=class e extends ii{constructor(e,t){super(e,t),this._dialog=oi.findOne(ds,this._element),this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._isShown=!1,this._isTransitioning=!1,this._scrollBar=new Go,this._addEventListeners()}static get Default(){return ms}static get DefaultType(){return hs}static get NAME(){return Ko}toggle(e){return this._isShown?this.hide():this.show(e)}show(e){this._isShown||this._isTransitioning||Zr.trigger(this._element,$o,{relatedTarget:e}).defaultPrevented||(this._isShown=!0,this._isTransitioning=!0,this._scrollBar.hide(),document.body.classList.add(os),this._adjustDialog(),this._backdrop.show(()=>this._showElement(e)))}hide(){!this._isShown||this._isTransitioning||Zr.trigger(this._element,Xo).defaultPrevented||(this._isShown=!1,this._isTransitioning=!0,this._focustrap.deactivate(),this._element.classList.remove(cs),this._queueCallback(()=>this._hideModal(),this._element,this._isAnimated()))}dispose(){Zr.off(window,qo),Zr.off(this._dialog,qo),this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}handleUpdate(){this._adjustDialog()}_initializeBackDrop(){return new Ao({isVisible:!!this._config.backdrop,isAnimated:this._isAnimated()})}_initializeFocusTrap(){return new Bo({trapElement:this._element})}_showElement(e){document.body.contains(this._element)||document.body.append(this._element),this._element.style.display=`block`,this._element.removeAttribute(`aria-hidden`),this._element.setAttribute(`aria-modal`,!0),this._element.setAttribute(`role`,`dialog`),this._element.scrollTop=0;let t=oi.findOne(fs,this._dialog);t&&(t.scrollTop=0),Tr(this._element),this._element.classList.add(cs),this._queueCallback(()=>{this._config.focus&&this._focustrap.activate(),this._isTransitioning=!1,Zr.trigger(this._element,es,{relatedTarget:e})},this._dialog,this._isAnimated())}_addEventListeners(){Zr.on(this._element,is,e=>{if(e.key===Yo){if(this._config.keyboard){this.hide();return}this._triggerBackdropTransition()}}),Zr.on(window,ts,()=>{this._isShown&&!this._isTransitioning&&this._adjustDialog()}),Zr.on(this._element,rs,e=>{Zr.one(this._element,ns,t=>{if(!(this._element!==e.target||this._element!==t.target)){if(this._config.backdrop===`static`){this._triggerBackdropTransition();return}this._config.backdrop&&this.hide()}})})}_hideModal(){this._element.style.display=`none`,this._element.setAttribute(`aria-hidden`,!0),this._element.removeAttribute(`aria-modal`),this._element.removeAttribute(`role`),this._isTransitioning=!1,this._backdrop.hide(()=>{document.body.classList.remove(os),this._resetAdjustments(),this._scrollBar.reset(),Zr.trigger(this._element,Qo)})}_isAnimated(){return this._element.classList.contains(ss)}_triggerBackdropTransition(){if(Zr.trigger(this._element,Zo).defaultPrevented)return;let e=this._element.scrollHeight>document.documentElement.clientHeight,t=this._element.style.overflowY;t===`hidden`||this._element.classList.contains(ls)||(e||(this._element.style.overflowY=`hidden`),this._element.classList.add(ls),this._queueCallback(()=>{this._element.classList.remove(ls),this._queueCallback(()=>{this._element.style.overflowY=t},this._dialog)},this._dialog),this._element.focus())}_adjustDialog(){let e=this._element.scrollHeight>document.documentElement.clientHeight,t=this._scrollBar.getWidth(),n=t>0;if(n&&!e){let e=kr()?`paddingLeft`:`paddingRight`;this._element.style[e]=`${t}px`}if(!n&&e){let e=kr()?`paddingRight`:`paddingLeft`;this._element.style[e]=`${t}px`}}_resetAdjustments(){this._element.style.paddingLeft=``,this._element.style.paddingRight=``}static jQueryInterface(t,n){return this.each(function(){let r=e.getOrCreateInstance(this,t);if(typeof t==`string`){if(r[t]===void 0)throw TypeError(`No method named "${t}"`);r[t](n)}})}};Zr.on(document,as,ps,function(e){let t=oi.getElementFromSelector(this);[`A`,`AREA`].includes(this.tagName)&&e.preventDefault(),Zr.one(t,$o,e=>{e.defaultPrevented||Zr.one(t,Qo,()=>{xr(this)&&this.focus()})});let n=oi.findOne(us);n&&gs.getInstance(n).hide(),gs.getOrCreateInstance(t).toggle(this)}),si(gs),Ar(gs);var _s=`offcanvas`,vs=`.bs.offcanvas`,ys=`.data-api`,bs=`load${vs}${ys}`,xs=`Escape`,Ss=`show`,Cs=`showing`,ws=`hiding`,Ts=`offcanvas-backdrop`,Es=`.offcanvas.show`,Ds=`show${vs}`,Os=`shown${vs}`,ks=`hide${vs}`,As=`hidePrevented${vs}`,js=`hidden${vs}`,Ms=`resize${vs}`,Ns=`click${vs}${ys}`,Ps=`keydown.dismiss${vs}`,Fs=`[data-bs-toggle="offcanvas"]`,Is={backdrop:!0,keyboard:!0,scroll:!1},Ls={backdrop:`(boolean|string)`,keyboard:`boolean`,scroll:`boolean`},Rs=class e extends ii{constructor(e,t){super(e,t),this._isShown=!1,this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._addEventListeners()}static get Default(){return Is}static get DefaultType(){return Ls}static get NAME(){return _s}toggle(e){return this._isShown?this.hide():this.show(e)}show(e){this._isShown||Zr.trigger(this._element,Ds,{relatedTarget:e}).defaultPrevented||(this._isShown=!0,this._backdrop.show(),this._config.scroll||new Go().hide(),this._element.setAttribute(`aria-modal`,!0),this._element.setAttribute(`role`,`dialog`),this._element.classList.add(Cs),this._queueCallback(()=>{(!this._config.scroll||this._config.backdrop)&&this._focustrap.activate(),this._element.classList.add(Ss),this._element.classList.remove(Cs),Zr.trigger(this._element,Os,{relatedTarget:e})},this._element,!0))}hide(){!this._isShown||Zr.trigger(this._element,ks).defaultPrevented||(this._focustrap.deactivate(),this._element.blur(),this._isShown=!1,this._element.classList.add(ws),this._backdrop.hide(),this._queueCallback(()=>{this._element.classList.remove(Ss,ws),this._element.removeAttribute(`aria-modal`),this._element.removeAttribute(`role`),this._config.scroll||new Go().reset(),Zr.trigger(this._element,js)},this._element,!0))}dispose(){this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}_initializeBackDrop(){let e=()=>{if(this._config.backdrop===`static`){Zr.trigger(this._element,As);return}this.hide()},t=!!this._config.backdrop;return new Ao({className:Ts,isVisible:t,isAnimated:!0,rootElement:this._element.parentNode,clickCallback:t?e:null})}_initializeFocusTrap(){return new Bo({trapElement:this._element})}_addEventListeners(){Zr.on(this._element,Ps,e=>{if(e.key===xs){if(this._config.keyboard){this.hide();return}Zr.trigger(this._element,As)}})}static jQueryInterface(t){return this.each(function(){let n=e.getOrCreateInstance(this,t);if(typeof t==`string`){if(n[t]===void 0||t.startsWith(`_`)||t===`constructor`)throw TypeError(`No method named "${t}"`);n[t](this)}})}};Zr.on(document,Ns,Fs,function(e){let t=oi.getElementFromSelector(this);if([`A`,`AREA`].includes(this.tagName)&&e.preventDefault(),Sr(this))return;Zr.one(t,js,()=>{xr(this)&&this.focus()});let n=oi.findOne(Es);n&&n!==t&&Rs.getInstance(n).hide(),Rs.getOrCreateInstance(t).toggle(this)}),Zr.on(window,bs,()=>{for(let e of oi.find(Es))Rs.getOrCreateInstance(e).show()}),Zr.on(window,Ms,()=>{for(let e of oi.find(`[aria-modal][class*=show][class*=offcanvas-]`))getComputedStyle(e).position!==`fixed`&&Rs.getOrCreateInstance(e).hide()}),si(Rs),Ar(Rs);var zs={"*":[`class`,`dir`,`id`,`lang`,`role`,/^aria-[\w-]*$/i],a:[`target`,`href`,`title`,`rel`],area:[],b:[],br:[],col:[],code:[],dd:[],div:[],dl:[],dt:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:[`src`,`srcset`,`alt`,`title`,`width`,`height`],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},Bs=new Set([`background`,`cite`,`href`,`itemtype`,`longdesc`,`poster`,`src`,`xlink:href`]),Vs=/^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i,Hs=(e,t)=>{let n=e.nodeName.toLowerCase();return t.includes(n)?Bs.has(n)?!!Vs.test(e.nodeValue):!0:t.filter(e=>e instanceof RegExp).some(e=>e.test(n))};function Us(e,t,n){if(!e.length)return e;if(n&&typeof n==`function`)return n(e);let r=new window.DOMParser().parseFromString(e,`text/html`),i=[].concat(...r.body.querySelectorAll(`*`));for(let e of i){let n=e.nodeName.toLowerCase();if(!Object.keys(t).includes(n)){e.remove();continue}let r=[].concat(...e.attributes),i=[].concat(t[`*`]||[],t[n]||[]);for(let t of r)Hs(t,i)||e.removeAttribute(t.nodeName)}return r.body.innerHTML}var Ws=`TemplateFactory`,Gs={allowList:zs,content:{},extraClass:``,html:!1,sanitize:!0,sanitizeFn:null,template:`
`},Ks={allowList:`object`,content:`object`,extraClass:`(string|function)`,html:`boolean`,sanitize:`boolean`,sanitizeFn:`(null|function)`,template:`string`},qs={entry:`(string|element|function|null)`,selector:`(string|element)`},Js=class extends ni{constructor(e){super(),this._config=this._getConfig(e)}static get Default(){return Gs}static get DefaultType(){return Ks}static get NAME(){return Ws}getContent(){return Object.values(this._config.content).map(e=>this._resolvePossibleFunction(e)).filter(Boolean)}hasContent(){return this.getContent().length>0}changeContent(e){return this._checkContent(e),this._config.content={...this._config.content,...e},this}toHtml(){let e=document.createElement(`div`);e.innerHTML=this._maybeSanitize(this._config.template);for(let[t,n]of Object.entries(this._config.content))this._setContent(e,n,t);let t=e.children[0],n=this._resolvePossibleFunction(this._config.extraClass);return n&&t.classList.add(...n.split(` `)),t}_typeCheckConfig(e){super._typeCheckConfig(e),this._checkContent(e.content)}_checkContent(e){for(let[t,n]of Object.entries(e))super._typeCheckConfig({selector:t,entry:n},qs)}_setContent(e,t,n){let r=oi.findOne(n,e);if(r){if(t=this._resolvePossibleFunction(t),!t){r.remove();return}if(yr(t)){this._putElementInTemplate(br(t),r);return}if(this._config.html){r.innerHTML=this._maybeSanitize(t);return}r.textContent=t}}_maybeSanitize(e){return this._config.sanitize?Us(e,this._config.allowList,this._config.sanitizeFn):e}_resolvePossibleFunction(e){return jr(e,[this])}_putElementInTemplate(e,t){if(this._config.html){t.innerHTML=``,t.append(e);return}t.textContent=e.textContent}},Ys=`tooltip`,Xs=new Set([`sanitize`,`allowList`,`sanitizeFn`]),Zs=`fade`,Qs=`modal`,$s=`show`,ec=`.tooltip-inner`,tc=`.${Qs}`,nc=`hide.bs.modal`,rc=`hover`,ic=`focus`,ac=`click`,oc=`manual`,sc=`hide`,cc=`hidden`,lc=`show`,uc=`shown`,dc=`inserted`,fc=`click`,pc=`focusin`,mc=`focusout`,hc=`mouseenter`,gc=`mouseleave`,_c={AUTO:`auto`,TOP:`top`,RIGHT:kr()?`left`:`right`,BOTTOM:`bottom`,LEFT:kr()?`right`:`left`},vc={allowList:zs,animation:!0,boundary:`clippingParents`,container:!1,customClass:``,delay:0,fallbackPlacements:[`top`,`right`,`bottom`,`left`],html:!1,offset:[0,6],placement:`top`,popperConfig:null,sanitize:!0,sanitizeFn:null,selector:!1,template:``,title:``,trigger:`hover focus`},yc={allowList:`object`,animation:`boolean`,boundary:`(string|element)`,container:`(string|element|boolean)`,customClass:`(string|function)`,delay:`(number|object)`,fallbackPlacements:`array`,html:`boolean`,offset:`(array|string|function)`,placement:`(string|function)`,popperConfig:`(null|object|function)`,sanitize:`boolean`,sanitizeFn:`(null|function)`,selector:`(string|boolean)`,template:`string`,title:`(string|element|function)`,trigger:`string`},bc=class e extends ii{constructor(e,t){if(cr===void 0)throw TypeError(`Bootstrap's tooltips require Popper (https://popper.js.org)`);super(e,t),this._isEnabled=!0,this._timeout=0,this._isHovered=null,this._activeTrigger={},this._popper=null,this._templateFactory=null,this._newContent=null,this.tip=null,this._setListeners(),this._config.selector||this._fixTitle()}static get Default(){return vc}static get DefaultType(){return yc}static get NAME(){return Ys}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(){if(this._isEnabled){if(this._activeTrigger.click=!this._activeTrigger.click,this._isShown()){this._leave();return}this._enter()}}dispose(){clearTimeout(this._timeout),Zr.off(this._element.closest(tc),nc,this._hideModalHandler),this._element.getAttribute(`data-bs-original-title`)&&this._element.setAttribute(`title`,this._element.getAttribute(`data-bs-original-title`)),this._disposePopper(),super.dispose()}show(){if(this._element.style.display===`none`)throw Error(`Please use show on visible elements`);if(!(this._isWithContent()&&this._isEnabled))return;let e=Zr.trigger(this._element,this.constructor.eventName(lc)),t=(Cr(this._element)||this._element.ownerDocument.documentElement).contains(this._element);if(e.defaultPrevented||!t)return;this._disposePopper();let n=this._getTipElement();this._element.setAttribute(`aria-describedby`,n.getAttribute(`id`));let{container:r}=this._config;if(this._element.ownerDocument.documentElement.contains(this.tip)||(r.append(n),Zr.trigger(this._element,this.constructor.eventName(dc))),this._popper=this._createPopper(n),n.classList.add($s),`ontouchstart`in document.documentElement)for(let e of[].concat(...document.body.children))Zr.on(e,`mouseover`,wr);this._queueCallback(()=>{Zr.trigger(this._element,this.constructor.eventName(uc)),this._isHovered===!1&&this._leave(),this._isHovered=!1},this.tip,this._isAnimated())}hide(){if(!(!this._isShown()||Zr.trigger(this._element,this.constructor.eventName(sc)).defaultPrevented)){if(this._getTipElement().classList.remove($s),`ontouchstart`in document.documentElement)for(let e of[].concat(...document.body.children))Zr.off(e,`mouseover`,wr);this._activeTrigger[ac]=!1,this._activeTrigger[ic]=!1,this._activeTrigger[rc]=!1,this._isHovered=null,this._queueCallback(()=>{this._isWithActiveTrigger()||(this._isHovered||this._disposePopper(),this._element.removeAttribute(`aria-describedby`),Zr.trigger(this._element,this.constructor.eventName(cc)))},this.tip,this._isAnimated())}}update(){this._popper&&this._popper.update()}_isWithContent(){return!!this._getTitle()}_getTipElement(){return this.tip||=this._createTipElement(this._newContent||this._getContentForTemplate()),this.tip}_createTipElement(e){let t=this._getTemplateFactory(e).toHtml();if(!t)return null;t.classList.remove(Zs,$s),t.classList.add(`bs-${this.constructor.NAME}-auto`);let n=gr(this.constructor.NAME).toString();return t.setAttribute(`id`,n),this._isAnimated()&&t.classList.add(Zs),t}setContent(e){this._newContent=e,this._isShown()&&(this._disposePopper(),this.show())}_getTemplateFactory(e){return this._templateFactory?this._templateFactory.changeContent(e):this._templateFactory=new Js({...this._config,content:e,extraClass:this._resolvePossibleFunction(this._config.customClass)}),this._templateFactory}_getContentForTemplate(){return{[ec]:this._getTitle()}}_getTitle(){return this._resolvePossibleFunction(this._config.title)||this._element.getAttribute(`data-bs-original-title`)}_initializeOnDelegatedTarget(e){return this.constructor.getOrCreateInstance(e.delegateTarget,this._getDelegateConfig())}_isAnimated(){return this._config.animation||this.tip&&this.tip.classList.contains(Zs)}_isShown(){return this.tip&&this.tip.classList.contains($s)}_createPopper(e){let t=_c[jr(this._config.placement,[this,e,this._element]).toUpperCase()];return sr(this._element,e,this._getPopperConfig(t))}_getOffset(){let{offset:e}=this._config;return typeof e==`string`?e.split(`,`).map(e=>Number.parseInt(e,10)):typeof e==`function`?t=>e(t,this._element):e}_resolvePossibleFunction(e){return jr(e,[this._element])}_getPopperConfig(e){let t={placement:e,modifiers:[{name:`flip`,options:{fallbackPlacements:this._config.fallbackPlacements}},{name:`offset`,options:{offset:this._getOffset()}},{name:`preventOverflow`,options:{boundary:this._config.boundary}},{name:`arrow`,options:{element:`.${this.constructor.NAME}-arrow`}},{name:`preSetPlacement`,enabled:!0,phase:`beforeMain`,fn:e=>{this._getTipElement().setAttribute(`data-popper-placement`,e.state.placement)}}]};return{...t,...jr(this._config.popperConfig,[t])}}_setListeners(){let e=this._config.trigger.split(` `);for(let t of e)if(t===`click`)Zr.on(this._element,this.constructor.eventName(fc),this._config.selector,e=>{this._initializeOnDelegatedTarget(e).toggle()});else if(t!==oc){let e=t===rc?this.constructor.eventName(hc):this.constructor.eventName(pc),n=t===rc?this.constructor.eventName(gc):this.constructor.eventName(mc);Zr.on(this._element,e,this._config.selector,e=>{let t=this._initializeOnDelegatedTarget(e);t._activeTrigger[e.type===`focusin`?ic:rc]=!0,t._enter()}),Zr.on(this._element,n,this._config.selector,e=>{let t=this._initializeOnDelegatedTarget(e);t._activeTrigger[e.type===`focusout`?ic:rc]=t._element.contains(e.relatedTarget),t._leave()})}this._hideModalHandler=()=>{this._element&&this.hide()},Zr.on(this._element.closest(tc),nc,this._hideModalHandler)}_fixTitle(){let e=this._element.getAttribute(`title`);e&&(!this._element.getAttribute(`aria-label`)&&!this._element.textContent.trim()&&this._element.setAttribute(`aria-label`,e),this._element.setAttribute(`data-bs-original-title`,e),this._element.removeAttribute(`title`))}_enter(){if(this._isShown()||this._isHovered){this._isHovered=!0;return}this._isHovered=!0,this._setTimeout(()=>{this._isHovered&&this.show()},this._config.delay.show)}_leave(){this._isWithActiveTrigger()||(this._isHovered=!1,this._setTimeout(()=>{this._isHovered||this.hide()},this._config.delay.hide))}_setTimeout(e,t){clearTimeout(this._timeout),this._timeout=setTimeout(e,t)}_isWithActiveTrigger(){return Object.values(this._activeTrigger).includes(!0)}_getConfig(e){let t=ti.getDataAttributes(this._element);for(let e of Object.keys(t))Xs.has(e)&&delete t[e];return e={...t,...typeof e==`object`&&e?e:{}},e=this._mergeConfigObj(e),e=this._configAfterMerge(e),this._typeCheckConfig(e),e}_configAfterMerge(e){return e.container=e.container===!1?document.body:br(e.container),typeof e.delay==`number`&&(e.delay={show:e.delay,hide:e.delay}),typeof e.title==`number`&&(e.title=e.title.toString()),typeof e.content==`number`&&(e.content=e.content.toString()),e}_getDelegateConfig(){let e={};for(let[t,n]of Object.entries(this._config))this.constructor.Default[t]!==n&&(e[t]=n);return e.selector=!1,e.trigger=`manual`,e}_disposePopper(){this._popper&&=(this._popper.destroy(),null),this.tip&&=(this.tip.remove(),null)}static jQueryInterface(t){return this.each(function(){let n=e.getOrCreateInstance(this,t);if(typeof t==`string`){if(n[t]===void 0)throw TypeError(`No method named "${t}"`);n[t]()}})}};Ar(bc);var xc=`popover`,Sc=`.popover-header`,Cc=`.popover-body`,wc={...bc.Default,content:``,offset:[0,8],placement:`right`,template:``,trigger:`click`},Tc={...bc.DefaultType,content:`(null|string|element|function)`};Ar(class e extends bc{static get Default(){return wc}static get DefaultType(){return Tc}static get NAME(){return xc}_isWithContent(){return this._getTitle()||this._getContent()}_getContentForTemplate(){return{[Sc]:this._getTitle(),[Cc]:this._getContent()}}_getContent(){return this._resolvePossibleFunction(this._config.content)}static jQueryInterface(t){return this.each(function(){let n=e.getOrCreateInstance(this,t);if(typeof t==`string`){if(n[t]===void 0)throw TypeError(`No method named "${t}"`);n[t]()}})}});var Ec=`scrollspy`,Dc=`.bs.scrollspy`,Oc=`.data-api`,kc=`activate${Dc}`,Ac=`click${Dc}`,jc=`load${Dc}${Oc}`,Mc=`dropdown-item`,Nc=`active`,Pc=`[data-bs-spy="scroll"]`,Fc=`[href]`,Ic=`.nav, .list-group`,Lc=`.nav-link`,Rc=`${Lc}, .nav-item > ${Lc}, .list-group-item`,zc=`.dropdown`,Bc=`.dropdown-toggle`,Vc={offset:null,rootMargin:`0px 0px -25%`,smoothScroll:!1,target:null,threshold:[.1,.5,1]},Hc={offset:`(number|null)`,rootMargin:`string`,smoothScroll:`boolean`,target:`element`,threshold:`array`},Uc=class e extends ii{constructor(e,t){super(e,t),this._targetLinks=new Map,this._observableSections=new Map,this._rootElement=getComputedStyle(this._element).overflowY===`visible`?null:this._element,this._activeTarget=null,this._observer=null,this._previousScrollData={visibleEntryTop:0,parentScrollTop:0},this.refresh()}static get Default(){return Vc}static get DefaultType(){return Hc}static get NAME(){return Ec}refresh(){this._initializeTargetsAndObservables(),this._maybeEnableSmoothScroll(),this._observer?this._observer.disconnect():this._observer=this._getNewObserver();for(let e of this._observableSections.values())this._observer.observe(e)}dispose(){this._observer.disconnect(),super.dispose()}_configAfterMerge(e){return e.target=br(e.target)||document.body,e.rootMargin=e.offset?`${e.offset}px 0px -30%`:e.rootMargin,typeof e.threshold==`string`&&(e.threshold=e.threshold.split(`,`).map(e=>Number.parseFloat(e))),e}_maybeEnableSmoothScroll(){this._config.smoothScroll&&(Zr.off(this._config.target,Ac),Zr.on(this._config.target,Ac,Fc,e=>{let t=this._observableSections.get(e.target.hash);if(t){e.preventDefault();let n=this._rootElement||window,r=t.offsetTop-this._element.offsetTop;if(n.scrollTo){n.scrollTo({top:r,behavior:`smooth`});return}n.scrollTop=r}}))}_getNewObserver(){let e={root:this._rootElement,threshold:this._config.threshold,rootMargin:this._config.rootMargin};return new IntersectionObserver(e=>this._observerCallback(e),e)}_observerCallback(e){let t=e=>this._targetLinks.get(`#${e.target.id}`),n=e=>{this._previousScrollData.visibleEntryTop=e.target.offsetTop,this._process(t(e))},r=(this._rootElement||document.documentElement).scrollTop,i=r>=this._previousScrollData.parentScrollTop;this._previousScrollData.parentScrollTop=r;for(let a of e){if(!a.isIntersecting){this._activeTarget=null,this._clearActiveClass(t(a));continue}let e=a.target.offsetTop>=this._previousScrollData.visibleEntryTop;if(i&&e){if(n(a),!r)return;continue}!i&&!e&&n(a)}}_initializeTargetsAndObservables(){this._targetLinks=new Map,this._observableSections=new Map;let e=oi.find(Fc,this._config.target);for(let t of e){if(!t.hash||Sr(t))continue;let e=oi.findOne(decodeURI(t.hash),this._element);xr(e)&&(this._targetLinks.set(decodeURI(t.hash),t),this._observableSections.set(t.hash,e))}}_process(e){this._activeTarget!==e&&(this._clearActiveClass(this._config.target),this._activeTarget=e,e.classList.add(Nc),this._activateParents(e),Zr.trigger(this._element,kc,{relatedTarget:e}))}_activateParents(e){if(e.classList.contains(Mc)){oi.findOne(Bc,e.closest(zc)).classList.add(Nc);return}for(let t of oi.parents(e,Ic))for(let e of oi.prev(t,Rc))e.classList.add(Nc)}_clearActiveClass(e){e.classList.remove(Nc);let t=oi.find(`${Fc}.${Nc}`,e);for(let e of t)e.classList.remove(Nc)}static jQueryInterface(t){return this.each(function(){let n=e.getOrCreateInstance(this,t);if(typeof t==`string`){if(n[t]===void 0||t.startsWith(`_`)||t===`constructor`)throw TypeError(`No method named "${t}"`);n[t]()}})}};Zr.on(window,jc,()=>{for(let e of oi.find(Pc))Uc.getOrCreateInstance(e)}),Ar(Uc);var Wc=`tab`,Gc=`.bs.tab`,Kc=`hide${Gc}`,qc=`hidden${Gc}`,Jc=`show${Gc}`,Yc=`shown${Gc}`,Xc=`click${Gc}`,Zc=`keydown${Gc}`,Qc=`load${Gc}`,$c=`ArrowLeft`,el=`ArrowRight`,tl=`ArrowUp`,nl=`ArrowDown`,rl=`Home`,il=`End`,al=`active`,ol=`fade`,sl=`show`,cl=`dropdown`,ll=`.dropdown-toggle`,ul=`.dropdown-menu`,dl=`:not(${ll})`,fl=`.list-group, .nav, [role="tablist"]`,pl=`.nav-item, .list-group-item`,ml=`.nav-link${dl}, .list-group-item${dl}, [role="tab"]${dl}`,hl=`[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]`,gl=`${ml}, ${hl}`,_l=`.${al}[data-bs-toggle="tab"], .${al}[data-bs-toggle="pill"], .${al}[data-bs-toggle="list"]`,vl=class e extends ii{constructor(e){super(e),this._parent=this._element.closest(fl),this._parent&&(this._setInitialAttributes(this._parent,this._getChildren()),Zr.on(this._element,Zc,e=>this._keydown(e)))}static get NAME(){return Wc}show(){let e=this._element;if(this._elemIsActive(e))return;let t=this._getActiveElem(),n=t?Zr.trigger(t,Kc,{relatedTarget:e}):null;Zr.trigger(e,Jc,{relatedTarget:t}).defaultPrevented||n&&n.defaultPrevented||(this._deactivate(t,e),this._activate(e,t))}_activate(e,t){e&&(e.classList.add(al),this._activate(oi.getElementFromSelector(e)),this._queueCallback(()=>{if(e.getAttribute(`role`)!==`tab`){e.classList.add(sl);return}e.removeAttribute(`tabindex`),e.setAttribute(`aria-selected`,!0),this._toggleDropDown(e,!0),Zr.trigger(e,Yc,{relatedTarget:t})},e,e.classList.contains(ol)))}_deactivate(e,t){e&&(e.classList.remove(al),e.blur(),this._deactivate(oi.getElementFromSelector(e)),this._queueCallback(()=>{if(e.getAttribute(`role`)!==`tab`){e.classList.remove(sl);return}e.setAttribute(`aria-selected`,!1),e.setAttribute(`tabindex`,`-1`),this._toggleDropDown(e,!1),Zr.trigger(e,qc,{relatedTarget:t})},e,e.classList.contains(ol)))}_keydown(t){if(![$c,el,tl,nl,rl,il].includes(t.key))return;t.stopPropagation(),t.preventDefault();let n=this._getChildren().filter(e=>!Sr(e)),r;if([rl,il].includes(t.key))r=n[t.key===rl?0:n.length-1];else{let e=[el,nl].includes(t.key);r=Nr(n,t.target,e,!0)}r&&(r.focus({preventScroll:!0}),e.getOrCreateInstance(r).show())}_getChildren(){return oi.find(gl,this._parent)}_getActiveElem(){return this._getChildren().find(e=>this._elemIsActive(e))||null}_setInitialAttributes(e,t){this._setAttributeIfNotExists(e,`role`,`tablist`);for(let e of t)this._setInitialAttributesOnChild(e)}_setInitialAttributesOnChild(e){e=this._getInnerElement(e);let t=this._elemIsActive(e),n=this._getOuterElement(e);e.setAttribute(`aria-selected`,t),n!==e&&this._setAttributeIfNotExists(n,`role`,`presentation`),t||e.setAttribute(`tabindex`,`-1`),this._setAttributeIfNotExists(e,`role`,`tab`),this._setInitialAttributesOnTargetPanel(e)}_setInitialAttributesOnTargetPanel(e){let t=oi.getElementFromSelector(e);t&&(this._setAttributeIfNotExists(t,`role`,`tabpanel`),e.id&&this._setAttributeIfNotExists(t,`aria-labelledby`,`${e.id}`))}_toggleDropDown(e,t){let n=this._getOuterElement(e);if(!n.classList.contains(cl))return;let r=(e,r)=>{let i=oi.findOne(e,n);i&&i.classList.toggle(r,t)};r(ll,al),r(ul,sl),n.setAttribute(`aria-expanded`,t)}_setAttributeIfNotExists(e,t,n){e.hasAttribute(t)||e.setAttribute(t,n)}_elemIsActive(e){return e.classList.contains(al)}_getInnerElement(e){return e.matches(gl)?e:oi.findOne(gl,e)}_getOuterElement(e){return e.closest(pl)||e}static jQueryInterface(t){return this.each(function(){let n=e.getOrCreateInstance(this);if(typeof t==`string`){if(n[t]===void 0||t.startsWith(`_`)||t===`constructor`)throw TypeError(`No method named "${t}"`);n[t]()}})}};Zr.on(document,Xc,hl,function(e){[`A`,`AREA`].includes(this.tagName)&&e.preventDefault(),!Sr(this)&&vl.getOrCreateInstance(this).show()}),Zr.on(window,Qc,()=>{for(let e of oi.find(_l))vl.getOrCreateInstance(e)}),Ar(vl);var yl=`toast`,bl=`.bs.toast`,xl=`mouseover${bl}`,Sl=`mouseout${bl}`,Cl=`focusin${bl}`,wl=`focusout${bl}`,Tl=`hide${bl}`,El=`hidden${bl}`,Dl=`show${bl}`,Ol=`shown${bl}`,kl=`fade`,Al=`hide`,jl=`show`,Ml=`showing`,Nl={animation:`boolean`,autohide:`boolean`,delay:`number`},Pl={animation:!0,autohide:!0,delay:5e3},Fl=class e extends ii{constructor(e,t){super(e,t),this._timeout=null,this._hasMouseInteraction=!1,this._hasKeyboardInteraction=!1,this._setListeners()}static get Default(){return Pl}static get DefaultType(){return Nl}static get NAME(){return yl}show(){Zr.trigger(this._element,Dl).defaultPrevented||(this._clearTimeout(),this._config.animation&&this._element.classList.add(kl),this._element.classList.remove(Al),Tr(this._element),this._element.classList.add(jl,Ml),this._queueCallback(()=>{this._element.classList.remove(Ml),Zr.trigger(this._element,Ol),this._maybeScheduleHide()},this._element,this._config.animation))}hide(){!this.isShown()||Zr.trigger(this._element,Tl).defaultPrevented||(this._element.classList.add(Ml),this._queueCallback(()=>{this._element.classList.add(Al),this._element.classList.remove(Ml,jl),Zr.trigger(this._element,El)},this._element,this._config.animation))}dispose(){this._clearTimeout(),this.isShown()&&this._element.classList.remove(jl),super.dispose()}isShown(){return this._element.classList.contains(jl)}_maybeScheduleHide(){this._config.autohide&&(this._hasMouseInteraction||this._hasKeyboardInteraction||(this._timeout=setTimeout(()=>{this.hide()},this._config.delay)))}_onInteraction(e,t){switch(e.type){case`mouseover`:case`mouseout`:this._hasMouseInteraction=t;break;case`focusin`:case`focusout`:this._hasKeyboardInteraction=t;break}if(t){this._clearTimeout();return}let n=e.relatedTarget;this._element===n||this._element.contains(n)||this._maybeScheduleHide()}_setListeners(){Zr.on(this._element,xl,e=>this._onInteraction(e,!0)),Zr.on(this._element,Sl,e=>this._onInteraction(e,!1)),Zr.on(this._element,Cl,e=>this._onInteraction(e,!0)),Zr.on(this._element,wl,e=>this._onInteraction(e,!1))}_clearTimeout(){clearTimeout(this._timeout),this._timeout=null}static jQueryInterface(t){return this.each(function(){let n=e.getOrCreateInstance(this,t);if(typeof t==`string`){if(n[t]===void 0)throw TypeError(`No method named "${t}"`);n[t](this)}})}};si(Fl),Ar(Fl);var Il=typeof window<`u`,Ll,Rl=e=>Ll=e,zl=Symbol();function Bl(e){return e&&typeof e==`object`&&Object.prototype.toString.call(e)===`[object Object]`&&typeof e.toJSON!=`function`}var Vl;(function(e){e.direct=`direct`,e.patchObject=`patch object`,e.patchFunction=`patch function`})(Vl||={});var Hl=typeof window==`object`&&window.window===window?window:typeof self==`object`&&self.self===self?self:typeof global==`object`&&global.global===global?global:typeof globalThis==`object`?globalThis:{HTMLElement:null};function Ul(e,{autoBom:t=!1}={}){return t&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(e.type)?new Blob([``,e],{type:e.type}):e}function Wl(e,t,n){let r=new XMLHttpRequest;r.open(`GET`,e),r.responseType=`blob`,r.onload=function(){Yl(r.response,t,n)},r.onerror=function(){console.error(`could not download file`)},r.send()}function Gl(e){let t=new XMLHttpRequest;t.open(`HEAD`,e,!1);try{t.send()}catch{}return t.status>=200&&t.status<=299}function Kl(e){try{e.dispatchEvent(new MouseEvent(`click`))}catch{let t=new MouseEvent(`click`,{bubbles:!0,cancelable:!0,view:window,detail:0,screenX:80,screenY:20,clientX:80,clientY:20,ctrlKey:!1,altKey:!1,shiftKey:!1,metaKey:!1,button:0,relatedTarget:null});e.dispatchEvent(t)}}var ql=typeof navigator==`object`?navigator:{userAgent:``},Jl=/Macintosh/.test(ql.userAgent)&&/AppleWebKit/.test(ql.userAgent)&&!/Safari/.test(ql.userAgent),Yl=Il?typeof HTMLAnchorElement<`u`&&`download`in HTMLAnchorElement.prototype&&!Jl?Xl:`msSaveOrOpenBlob`in ql?Zl:Ql:()=>{};function Xl(e,t=`download`,n){let r=document.createElement(`a`);r.download=t,r.rel=`noopener`,typeof e==`string`?(r.href=e,r.origin===location.origin?Kl(r):Gl(r.href)?Wl(e,t,n):(r.target=`_blank`,Kl(r))):(r.href=URL.createObjectURL(e),setTimeout(function(){URL.revokeObjectURL(r.href)},4e4),setTimeout(function(){Kl(r)},0))}function Zl(e,t=`download`,n){if(typeof e==`string`)if(Gl(e))Wl(e,t,n);else{let t=document.createElement(`a`);t.href=e,t.target=`_blank`,setTimeout(function(){Kl(t)})}else navigator.msSaveOrOpenBlob(Ul(e,n),t)}function Ql(e,t,n,r){if(r||=open(``,`_blank`),r&&(r.document.title=r.document.body.innerText=`downloading...`),typeof e==`string`)return Wl(e,t,n);let i=e.type===`application/octet-stream`,a=/constructor/i.test(String(Hl.HTMLElement))||`safari`in Hl,o=/CriOS\/[\d]+/.test(navigator.userAgent);if((o||i&&a||Jl)&&typeof FileReader<`u`){let t=new FileReader;t.onloadend=function(){let e=t.result;if(typeof e!=`string`)throw r=null,Error(`Wrong reader.result type`);e=o?e:e.replace(/^data:[^;]*;/,`data:attachment/file;`),r?r.location.href=e:location.assign(e),r=null},t.readAsDataURL(e)}else{let t=URL.createObjectURL(e);r?r.location.assign(t):location.href=t,r=null,setTimeout(function(){URL.revokeObjectURL(t)},4e4)}}var{assign:$l}=Object;function eu(){let e=Ce(!0),t=e.run(()=>B({})),n=[],r=[],i=ke({install(e){Rl(i),i._a=e,e.provide(zl,i),e.config.globalProperties.$pinia=i,r.forEach(e=>n.push(e)),r=[]},use(e){return this._a?n.push(e):r.push(e),this},_p:n,_a:null,_e:e,_s:new Map,state:t});return i}var tu=()=>{};function nu(e,t,n,r=tu){e.add(t);let i=()=>{e.delete(t)&&r()};return!n&&Ie()&&Te(i),i}function ru(e,...t){e.forEach(e=>{e(...t)})}var iu=e=>e(),au=Symbol(),ou=Symbol();function su(e,t){e instanceof Map&&t instanceof Map?t.forEach((t,n)=>e.set(n,t)):e instanceof Set&&t instanceof Set&&t.forEach(e.add,e);for(let n in t){if(!t.hasOwnProperty(n))continue;let r=t[n],i=e[n];Bl(i)&&Bl(r)&&e.hasOwnProperty(n)&&!pe(r)&&!le(r)?e[n]=su(i,r):e[n]=r}return e}var cu=Symbol();function lu(e){return!Bl(e)||!Object.prototype.hasOwnProperty.call(e,cu)}var{assign:uu}=Object;function du(e){return!!(pe(e)&&e.effect)}function fu(e,t,n,r){let{state:i,actions:a,getters:o}=t,s=n.state.value[e],c;function l(){return s||(n.state.value[e]=i?i():{}),uu(u(n.state.value[e]),a,Object.keys(o||{}).reduce((t,r)=>(t[r]=ke(H(()=>{Rl(n);let t=n._s.get(e);return o[r].call(t,t)})),t),{}))}return c=pu(e,l,t,n,r,!0),c}function pu(e,t,n={},r,i,a){let o,s=uu({actions:{}},n),c={deep:!0},l,u,d=new Set,f=new Set,p=r.state.value[e];!a&&!p&&(r.state.value[e]={}),B({});let m;function h(t){let n;l=u=!1,typeof t==`function`?(t(r.state.value[e]),n={type:Vl.patchFunction,storeId:e,events:void 0}):(su(r.state.value[e],t),n={type:Vl.patchObject,payload:t,storeId:e,events:void 0});let i=m=Symbol();A().then(()=>{m===i&&(l=!0)}),u=!0,ru(d,n,r.state.value[e])}let g=a?function(){let{state:e}=n,t=e?e():{};this.$patch(e=>{uu(e,t)})}:tu;function _(){o.stop(),d.clear(),f.clear(),r._s.delete(e)}let v=(t,n=``)=>{if(au in t)return t[ou]=n,t;let i=function(){Rl(r);let n=Array.from(arguments),a=new Set,o=new Set;function s(e){a.add(e)}function c(e){o.add(e)}ru(f,{args:n,name:i[ou],store:y,after:s,onError:c});let l;try{l=t.apply(this&&this.$id===e?this:y,n)}catch(e){throw ru(o,e),e}return l instanceof Promise?l.then(e=>(ru(a,e),e)).catch(e=>(ru(o,e),Promise.reject(e))):(ru(a,l),l)};return i[au]=!0,i[ou]=n,i},y=_e({_p:r,$id:e,$onAction:nu.bind(null,f),$patch:h,$reset:g,$subscribe(t,n={}){let i=nu(d,t,n.detached,()=>a()),a=o.run(()=>V(()=>r.state.value[e],r=>{(n.flush===`sync`?u:l)&&t({storeId:e,type:Vl.direct,events:void 0},r)},uu({},c,n)));return i},$dispose:_});r._s.set(e,y);let b=(r._a&&r._a.runWithContext||iu)(()=>r._e.run(()=>(o=Ce()).run(()=>t({action:v}))));for(let t in b){let n=b[t];pe(n)&&!du(n)||le(n)?a||(p&&lu(n)&&(pe(n)?n.value=p[t]:su(n,p[t])),r.state.value[e][t]=n):typeof n==`function`&&(b[t]=v(n,t),s.actions[t]=n)}return uu(y,b),uu(Be(y),b),Object.defineProperty(y,`$state`,{get:()=>r.state.value[e],set:e=>{h(t=>{uu(t,e)})}}),r._p.forEach(e=>{uu(y,o.run(()=>e({store:y,app:r._a,pinia:r,options:s})))}),p&&a&&n.hydrate&&n.hydrate(y.$state,p),l=!0,u=!0,y}function mu(e,t,n){let r,i=typeof t==`function`;r=i?n:t;function a(n,a){let o=T();return n||=o?D(zl,null):null,n&&Rl(n),n=Ll,n._s.has(e)||(i?pu(e,t,r,n):fu(e,r,n)),n._s.get(e)}return a.$id=e,a}function hu(e){let t=Be(e),n={};for(let r in t){let i=t[r];i.effect?n[r]=H({get:()=>e[r],set(t){e[r]=t}}):(pe(i)||le(i))&&(n[r]=M(e,r))}return n}var Y={tab:`Tab`,enter:`Enter`,space:`Space`,left:`ArrowLeft`,up:`ArrowUp`,right:`ArrowRight`,down:`ArrowDown`,esc:`Escape`,delete:`Delete`,backspace:`Backspace`,numpadEnter:`NumpadEnter`,pageUp:`PageUp`,pageDown:`PageDown`,home:`Home`,end:`End`},gu=[`year`,`years`,`month`,`months`,`date`,`dates`,`week`,`datetime`,`datetimerange`,`daterange`,`monthrange`,`yearrange`],_u=[`sun`,`mon`,`tue`,`wed`,`thu`,`fri`,`sat`],vu=`update:modelValue`,yu=`change`,bu=`input`,xu=Symbol(`INSTALLED_KEY`),Su=[``,`default`,`small`,`large`],Cu=[`left`,`center`,`right`],wu=typeof global==`object`&&global&&global.Object===Object&&global,Tu=typeof self==`object`&&self&&self.Object===Object&&self,Eu=wu||Tu||Function(`return this`)(),Du=Eu.Symbol,Ou=Object.prototype,ku=Ou.hasOwnProperty,Au=Ou.toString,ju=Du?Du.toStringTag:void 0;function Mu(e){var t=ku.call(e,ju),n=e[ju];try{e[ju]=void 0;var r=!0}catch{}var i=Au.call(e);return r&&(t?e[ju]=n:delete e[ju]),i}var Nu=Object.prototype.toString;function Pu(e){return Nu.call(e)}var Fu=`[object Null]`,Iu=`[object Undefined]`,Lu=Du?Du.toStringTag:void 0;function Ru(e){return e==null?e===void 0?Iu:Fu:Lu&&Lu in Object(e)?Mu(e):Pu(e)}function zu(e){return typeof e==`object`&&!!e}var Bu=`[object Symbol]`;function Vu(e){return typeof e==`symbol`||zu(e)&&Ru(e)==Bu}function Hu(e,t){for(var n=-1,r=e==null?0:e.length,i=Array(r);++n0){if(++t>=Id)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}function Bd(e){return function(){return e}}var Vd=function(){try{var e=kd(Object,`defineProperty`);return e({},``,{}),e}catch{}}(),Hd=zd(Vd?function(e,t){return Vd(e,`toString`,{configurable:!0,enumerable:!1,value:Bd(t),writable:!0})}:ld);function Ud(e,t){for(var n=-1,r=e==null?0:e.length;++n-1}var Yd=9007199254740991,Xd=/^(?:0|[1-9]\d*)$/;function Zd(e,t){var n=typeof e;return t??=Yd,!!t&&(n==`number`||n!=`symbol`&&Xd.test(e))&&e>-1&&e%1==0&&e-1&&e%1==0&&e<=sf}function lf(e){return e!=null&&cf(e.length)&&!md(e)}function uf(e,t,n){if(!Qu(n))return!1;var r=typeof t;return(r==`number`?lf(n)&&Zd(t,n.length):r==`string`&&t in n)?$d(n[t],e):!1}function df(e){return of(function(t,n){var r=-1,i=n.length,a=i>1?n[i-1]:void 0,o=i>2?n[2]:void 0;for(a=e.length>3&&typeof a==`function`?(i--,a):void 0,o&&uf(n[0],n[1],o)&&(a=i<3?void 0:a,i=1),t=Object(t);++r-1}function Ip(e,t){var n=this.__data__,r=jp(n,e);return r<0?(++this.size,n.push([e,t])):n[r][1]=t,this}function Lp(e){var t=-1,n=e==null?0:e.length;for(this.clear();++t0&&n(s)?t>1?lm(s,t-1,n,r,i):om(i,s):r||(i[i.length]=s)}return i}function um(e){return e!=null&&e.length?lm(e,1):[]}function dm(e){return Hd(af(e,void 0,um),e+``)}var fm=sp(Object.getPrototypeOf,Object),pm=`[object Object]`,mm=Function.prototype,hm=Object.prototype,gm=mm.toString,_m=hm.hasOwnProperty,vm=gm.call(Object);function ym(e){if(!zu(e)||Ru(e)!=pm)return!1;var t=fm(e);if(t===null)return!0;var n=_m.call(t,`constructor`)&&t.constructor;return typeof n==`function`&&n instanceof n&&gm.call(n)==vm}function bm(e,t,n){var r=-1,i=e.length;t<0&&(t=-t>i?0:i+t),n=n>i?i:n,n<0&&(n+=i),i=t>n?0:n-t>>>0,t>>>=0;for(var a=Array(i);++r=t?e:t)),e}function Cm(e,t,n){return n===void 0&&(n=t,t=void 0),n!==void 0&&(n=id(n),n=n===n?n:0),t!==void 0&&(t=id(t),t=t===t?t:0),Sm(id(e),t,n)}function wm(){this.__data__=new Lp,this.size=0}function Tm(e){var t=this.__data__,n=t.delete(e);return this.size=t.size,n}function Em(e){return this.__data__.get(e)}function Dm(e){return this.__data__.has(e)}var Om=200;function km(e,t){var n=this.__data__;if(n instanceof Lp){var r=n.__data__;if(!Rp||r.lengths))return!1;var l=a.get(e),u=a.get(t);if(l&&u)return l==t&&u==e;var d=-1,f=!0,p=n&Rg?new Pg:void 0;for(a.set(e,t),a.set(t,e);++d=t||n<0||d&&r>=a}function _(){var e=I_();if(g(e))return v(e);s=setTimeout(_,h(e))}function v(e){return s=void 0,f&&r?p(e):(r=i=void 0,o)}function y(){s!==void 0&&clearTimeout(s),l=0,r=c=i=s=void 0}function b(){return s===void 0?o:v(I_())}function x(){var e=I_(),n=g(e);if(r=arguments,i=this,c=e,n){if(s===void 0)return m(c);if(d)return clearTimeout(s),s=setTimeout(_,t),p(c)}return s===void 0&&(s=setTimeout(_,t)),o}return x.cancel=y,x.flush=b,x}function V_(e,t,n){(n!==void 0&&!$d(e[t],n)||n===void 0&&!(t in e))&&Qd(e,t,n)}function H_(e){return zu(e)&&lf(e)}function U_(e,t){if(!(t===`constructor`&&typeof e[t]==`function`)&&t!=`__proto__`)return e[t]}function W_(e){return nf(e,hp(e))}function G_(e,t,n,r,i,a,o){var s=U_(e,n),c=U_(t,n),l=o.get(c);if(l){V_(e,n,l);return}var u=a?a(s,c,n+``,e,t,o):void 0,d=u===void 0;if(d){var f=Uu(c),p=!f&&Tf(c),m=!f&&!p&&ip(c);u=c,f||p||m?Uu(s)?u=s:H_(s)?u=Fd(s):p?(d=!1,u=Lm(c,!0)):m?(d=!1,u=xh(c,!0)):u=[]:ym(c)||bf(c)?(u=s,bf(s)?u=W_(s):(!Qu(s)||md(s))&&(u=Hh(c))):d=!1}d&&(o.set(c,u),i(u,c,r,a,o),o.delete(c)),V_(e,n,u)}function K_(e,t,n,r,i){e!==t&&M_(t,function(a,o){if(i||=new Am,Qu(a))G_(e,t,o,n,K_,r,i);else{var s=r?r(U_(e,o),a,o+``,e,t,i):void 0;s===void 0&&(s=a),V_(e,o,s)}},hp)}function q_(e,t,n){for(var r=-1,i=e==null?0:e.length;++r1,t}),nf(e,Jm(e),n),r&&(n=Dg(n,pv|mv|hv,fv));for(var i=t.length;i--;)dv(n,t[i]);return n});function _v(e,t,n,r){if(!Qu(e))return e;t=tm(t,e);for(var i=-1,a=t.length,o=a-1,s=e;s!=null&&++i=Tv){var l=t?null:wv(e);if(l)return Vg(l);o=!1,i=Ig,c=new Pg}else c=t?[]:s;outer:for(;++re===void 0,kv=e=>typeof e==`boolean`,Av=e=>typeof e==`number`,jv=e=>!e&&e!==0||C(e)&&e.length===0||P(e)&&!Object.keys(e).length,Mv=e=>typeof Element>`u`?!1:e instanceof Element,Nv=e=>ov(e),Pv=e=>R(e)?!Number.isNaN(Number(e)):!1,Fv=e=>e===window;v();var Iv=e=>Object.keys(e),Lv=e=>Object.entries(e),Rv=(e,t,n)=>({get value(){return am(e,t,n)},set value(n){xv(e,t,n)}}),zv=`__epPropKey`,X=e=>e,Bv=e=>P(e)&&!!e.__epPropKey,Vv=(e,t)=>{if(!P(e)||Bv(e))return e;let{values:n,required:r,default:i,type:a,validator:o}=e,s={type:a,required:!!r,validator:n||o?r=>{let a=!1,s=[];if(n&&(s=Array.from(n),O(e,`default`)&&s.push(i),a||=s.includes(r)),o&&(a||=o(r)),!a&&s.length>0){let e=[...new Set(s)].map(e=>JSON.stringify(e)).join(`, `);ve(`Invalid prop: validation failed${t?` for prop "${t}"`:``}. Expected one of [${e}], got value ${JSON.stringify(r)}.`)}return a}:void 0,[zv]:!0};return O(e,`default`)&&(s.default=i),s},Z=e=>rv(Object.entries(e).map(([e,t])=>[e,Vv(t,e)])),Hv=Z({zIndex:{type:X([Number,String]),default:100},target:{type:String,default:``},offset:{type:Number,default:0},position:{type:String,values:[`top`,`bottom`],default:`top`},teleported:Boolean,appendTo:{type:X([String,Object]),default:`body`}}),Uv={scroll:({scrollTop:e,fixed:t})=>Av(e)&&kv(t),[yu]:e=>kv(e)},Wv=class extends Error{constructor(e){super(e),this.name=`ElementPlusError`}};function Gv(e,t){throw new Wv(`[${e}] ${t}`)}function Kv(e,t){{let n=R(e)?new Wv(`[${e}] ${t}`):e;console.warn(n)}}var qv=[`class`,`style`],Jv=/^on[A-Z]/,Yv=(e={})=>{let{excludeListeners:t=!1,excludeKeys:n}=e,r=H(()=>(n?.value||[]).concat(qv)),i=a();return i?H(()=>rv(Object.entries(i.proxy?.$attrs).filter(([e])=>!r.value.includes(e)&&!(t&&Jv.test(e))))):(Kv(`use-attrs`,`getCurrentInstance() returned null. useAttrs() must be called at the top of a setup function`),H(()=>({})))};function Xv(e,t){let n=oe();return De(()=>{n.value=e()},{...t,flush:t?.flush??`sync`}),he(n)}function Zv(e,t){return Ie()?(Te(e,t),!0):!1}var Qv=new WeakMap,$v=(...e)=>{let t=e[0],n=a()?.proxy??Ie();if(n==null&&!T())throw Error(`injectLocal must be called in setup`);return n&&Qv.has(n)&&t in Qv.get(n)?Qv.get(n)[t]:D(...e)},ey=typeof window<`u`&&typeof document<`u`;typeof WorkerGlobalScope<`u`&&globalThis instanceof WorkerGlobalScope;var ty=e=>e!==void 0,ny=e=>e!=null,ry=Object.prototype.toString,iy=e=>ry.call(e)===`[object Object]`,ay=(e,t,n)=>Math.min(n,Math.max(t,e)),oy=()=>{},sy=cy();function cy(){var e,t;return ey&&!!(!((e=window)==null||(e=e.navigator)==null)&&e.userAgent)&&(/iP(?:ad|hone|od)/.test(window.navigator.userAgent)||((t=window)==null||(t=t.navigator)==null?void 0:t.maxTouchPoints)>2&&/iPad|Macintosh/.test(window?.navigator.userAgent))}function ly(e,t){function n(...n){return new Promise((r,i)=>{Promise.resolve(e(()=>t.apply(this,n),{fn:t,thisArg:this,args:n})).then(r).catch(i)})}return n}function uy(e,t={}){let n,r,i=oy,a=e=>{clearTimeout(e),i(),i=oy},o;return s=>{let c=ze(e),l=ze(t.maxWait);return n&&a(n),c<=0||l!==void 0&&l<=0?(r&&=(a(r),void 0),Promise.resolve(s())):new Promise((e,u)=>{i=t.rejectOnCancel?u:e,o=s,l&&!r&&(r=setTimeout(()=>{n&&a(n),r=void 0,e(o())},l)),n=setTimeout(()=>{r&&a(r),r=void 0,e(s())},c)})}}function dy(...e){let t=0,n,r=!0,i=oy,a,o,s,c,l;!pe(e[0])&&typeof e[0]==`object`?{delay:o,trailing:s=!0,leading:c=!0,rejectOnCancel:l=!1}=e[0]:[o,s=!0,c=!0,l=!1]=e;let u=()=>{n&&(clearTimeout(n),n=void 0,i(),i=oy)};return e=>{let d=ze(o),f=Date.now()-t,p=()=>a=e();return u(),d<=0?(t=Date.now(),p()):(f>d?(t=Date.now(),(c||!r)&&p()):s&&(a=new Promise((e,a)=>{i=l?a:e,n=setTimeout(()=>{t=Date.now(),r=!0,e(p()),u()},Math.max(0,d-f))})),!c&&!n&&(n=setTimeout(()=>r=!0,d)),r=!1,a)}}function fy(e){return e.endsWith(`rem`)?Number.parseFloat(e)*16:Number.parseFloat(e)}function py(e){return Array.isArray(e)?e:[e]}function my(e){return e||a()}function hy(e){return pe(e)?_e(new Proxy({},{get(t,n,r){return f(Reflect.get(e.value,n,r))},set(t,n,r){return pe(e.value[n])&&!pe(r)?e.value[n].value=r:e.value[n]=r,!0},deleteProperty(t,n){return Reflect.deleteProperty(e.value,n)},has(t,n){return Reflect.has(e.value,n)},ownKeys(){return Object.keys(e.value)},getOwnPropertyDescriptor(){return{enumerable:!0,configurable:!0}}})):_e(e)}function gy(e){return hy(H(e))}function _y(e,t=200,n={}){return ly(uy(t,n),e)}function vy(e,t=200,n={}){let r=B(ze(e)),i=_y(()=>{r.value=e.value},t,n);return V(e,()=>i()),He(r)}function yy(e,t=200,n=!1,r=!0,i=!1){return ly(dy(t,n,r,i),e)}function by(e,t=!0,n){my(n)?I(e,n):t?e():A(e)}function xy(e,t,n={}){let{immediate:r=!0,immediateCallback:i=!1}=n,a=oe(!1),o;function s(){o&&=(clearTimeout(o),void 0)}function c(){a.value=!1,s()}function l(...n){i&&e(),s(),a.value=!0,o=setTimeout(()=>{a.value=!1,o=void 0,e(...n)},ze(t))}return r&&(a.value=!0,ey&&l()),Zv(c),{isPending:He(a),start:l,stop:c}}function Sy(e,t,n){return V(e,t,{...n,immediate:!0})}var Cy=ey?window:void 0,wy=ey?window.document:void 0;ey&&window.navigator,ey&&window.location;function Ty(e){let t=ze(e);return t?.$el??t}function Ey(...e){let t=(e,t,n,r)=>(e.addEventListener(t,n,r),()=>e.removeEventListener(t,n,r)),n=H(()=>{let t=py(ze(e[0])).filter(e=>e!=null);return t.every(e=>typeof e!=`string`)?t:void 0});return Sy(()=>[n.value?.map(e=>Ty(e))??[Cy].filter(e=>e!=null),py(ze(n.value?e[1]:e[0])),py(f(n.value?e[2]:e[1])),ze(n.value?e[3]:e[2])],([e,n,r,i],a,o)=>{if(!e?.length||!n?.length||!r?.length)return;let s=iy(i)?{...i}:i,c=e.flatMap(e=>n.flatMap(n=>r.map(r=>t(e,n,r,s))));o(()=>{c.forEach(e=>e())})},{flush:`post`})}var Dy=!1;function Oy(e,t,n={}){let{window:r=Cy,ignore:i=[],capture:a=!0,detectIframe:o=!1,controls:s=!1}=n;if(!r)return s?{stop:oy,cancel:oy,trigger:oy}:oy;if(sy&&!Dy){Dy=!0;let e={passive:!0};Array.from(r.document.body.children).forEach(t=>t.addEventListener(`click`,oy,e)),r.document.documentElement.addEventListener(`click`,oy,e)}let c=!0,l=e=>ze(i).some(t=>{if(typeof t==`string`)return Array.from(r.document.querySelectorAll(t)).some(t=>t===e.target||e.composedPath().includes(t));{let n=Ty(t);return n&&(e.target===n||e.composedPath().includes(n))}});function u(e){let t=ze(e);return t&&t.$.subTree.shapeFlag===16}function d(e,t){let n=ze(e),r=n.$.subTree&&n.$.subTree.children;return r==null||!Array.isArray(r)?!1:r.some(e=>e.el===t.target||t.composedPath().includes(e.el))}let f=n=>{let r=Ty(e);if(n.target!=null&&!(!(r instanceof Element)&&u(e)&&d(e,n))&&!(!r||r===n.target||n.composedPath().includes(r))){if(`detail`in n&&n.detail===0&&(c=!l(n)),!c){c=!0;return}t(n)}},p=!1,m=[Ey(r,`click`,e=>{p||(p=!0,setTimeout(()=>{p=!1},0),f(e))},{passive:!0,capture:a}),Ey(r,`pointerdown`,t=>{let n=Ty(e);c=!l(t)&&!!(n&&!t.composedPath().includes(n))},{passive:!0}),o&&Ey(r,`blur`,n=>{setTimeout(()=>{let i=Ty(e),a=r.document.activeElement;for(;a?.shadowRoot;)a=a.shadowRoot.activeElement;a?.tagName===`IFRAME`&&!i?.contains(r.document.activeElement)&&t(n)},0)},{passive:!0})].filter(Boolean),h=()=>m.forEach(e=>e());return s?{stop:h,cancel:()=>{c=!1},trigger:e=>{c=!0,f(e),c=!1}}:h}function ky(){let e=oe(!1),t=a();return t&&I(()=>{e.value=!0},t),e}function Ay(e){let t=ky();return H(()=>(t.value,!!e()))}function jy(e,t,n={}){let{window:r=Cy,...i}=n,a,o=Ay(()=>r&&`MutationObserver`in r),s=()=>{a&&=(a.disconnect(),void 0)},c=V(H(()=>{let t=py(ze(e)).map(Ty).filter(ny);return new Set(t)}),e=>{s(),o.value&&e.size&&(a=new MutationObserver(t),e.forEach(e=>a.observe(e,i)))},{immediate:!0,flush:`post`}),l=()=>a?.takeRecords(),u=()=>{c(),s()};return Zv(u),{isSupported:o,stop:u,takeRecords:l}}function My(e,t,n={}){let{window:r=Cy,document:i=r?.document,flush:a=`sync`}=n;if(!r||!i)return oy;let o,s=e=>{o?.(),o=e},c=De(()=>{let n=Ty(e);if(n){let{stop:e}=jy(i,e=>{e.map(e=>[...e.removedNodes]).flat().some(e=>e===n||e.contains(n))&&t(e)},{window:r,childList:!0,subtree:!0});s(e)}},{flush:a}),l=()=>{c(),s()};return Zv(l),l}function Ny(e={}){let{window:t=Cy,deep:n=!0,triggerOnRemoval:r=!1}=e,i=e.document??t?.document,a=()=>{let e=i?.activeElement;if(n)for(var t;e?.shadowRoot;)e=e==null||(t=e.shadowRoot)==null?void 0:t.activeElement;return e},o=oe(),s=()=>{o.value=a()};if(t){let e={capture:!0,passive:!0};Ey(t,`blur`,e=>{e.relatedTarget===null&&s()},e),Ey(t,`focus`,s,e)}return r&&My(o,s,{document:i}),s(),o}var Py=Symbol(`vueuse-ssr-width`);function Fy(){let e=T()?$v(Py,null):null;return typeof e==`number`?e:void 0}function Iy(e,t={}){let{window:n=Cy,ssrWidth:r=Fy()}=t,i=Ay(()=>n&&`matchMedia`in n&&typeof n.matchMedia==`function`),a=oe(typeof r==`number`),o=oe(),s=oe(!1);return De(()=>{if(a.value){a.value=!i.value,s.value=ze(e).split(`,`).some(e=>{let t=e.includes(`not all`),n=e.match(/\(\s*min-width:\s*(-?\d+(?:\.\d*)?[a-z]+\s*)\)/),i=e.match(/\(\s*max-width:\s*(-?\d+(?:\.\d*)?[a-z]+\s*)\)/),a=!!(n||i);return n&&a&&(a=r>=fy(n[1])),i&&a&&(a=r<=fy(i[1])),t?!a:a});return}i.value&&(o.value=n.matchMedia(ze(e)),s.value=o.value.matches)}),Ey(o,`change`,e=>{s.value=e.matches},{passive:!0}),H(()=>s.value)}function Ly(e){return JSON.parse(JSON.stringify(e))}function Ry(e,t,n={}){let{window:r=Cy,initialValue:i,observe:a=!1}=n,o=oe(i),s=H(()=>{var e;return Ty(t)||(r==null||(e=r.document)==null?void 0:e.documentElement)});function c(){let t=ze(e),n=ze(s);n&&r&&t&&(o.value=r.getComputedStyle(n).getPropertyValue(t)?.trim()||o.value||i)}return a&&jy(s,c,{attributeFilter:[`style`,`class`],window:r}),V([s,()=>ze(e)],(e,t)=>{t[0]&&t[1]&&t[0].style.removeProperty(t[1]),c()},{immediate:!0}),V([o,s],([t,n])=>{let r=ze(e);n?.style&&r&&(t==null?n.style.removeProperty(r):n.style.setProperty(r,t))},{immediate:!0}),o}function zy(e={}){let{document:t=wy}=e;if(!t)return oe(`visible`);let n=oe(t.visibilityState);return Ey(t,`visibilitychange`,()=>{n.value=t.visibilityState},{passive:!0}),n}function By(e,t,n={}){let{window:r=Cy,...i}=n,a,o=Ay(()=>r&&`ResizeObserver`in r),s=()=>{a&&=(a.disconnect(),void 0)},c=V(H(()=>{let t=ze(e);return Array.isArray(t)?t.map(e=>Ty(e)):[Ty(t)]}),e=>{if(s(),o.value&&r){a=new ResizeObserver(t);for(let t of e)t&&a.observe(t,i)}},{immediate:!0,flush:`post`}),l=()=>{s(),c()};return Zv(l),{isSupported:o,stop:l}}function Vy(e,t={}){let{reset:n=!0,windowResize:r=!0,windowScroll:i=!0,immediate:a=!0,updateTiming:o=`sync`}=t,s=oe(0),c=oe(0),l=oe(0),u=oe(0),d=oe(0),f=oe(0),p=oe(0),m=oe(0);function h(){let t=Ty(e);if(!t){n&&(s.value=0,c.value=0,l.value=0,u.value=0,d.value=0,f.value=0,p.value=0,m.value=0);return}let r=t.getBoundingClientRect();s.value=r.height,c.value=r.bottom,l.value=r.left,u.value=r.right,d.value=r.top,f.value=r.width,p.value=r.x,m.value=r.y}function g(){o===`sync`?h():o===`next-frame`&&requestAnimationFrame(()=>h())}return By(e,g),V(()=>Ty(e),e=>!e&&g()),jy(e,g,{attributeFilter:[`style`,`class`]}),i&&Ey(`scroll`,g,{capture:!0,passive:!0}),r&&Ey(`resize`,g,{passive:!0}),by(()=>{a&&g()}),{height:s,bottom:c,left:l,right:u,top:d,width:f,x:p,y:m,update:g}}function Hy(e,t={width:0,height:0},n={}){let{window:r=Cy,box:i=`content-box`}=n,a=H(()=>{var t;return(t=Ty(e))==null||(t=t.namespaceURI)==null?void 0:t.includes(`svg`)}),o=oe(t.width),s=oe(t.height),{stop:c}=By(e,([t])=>{let n=i===`border-box`?t.borderBoxSize:i===`content-box`?t.contentBoxSize:t.devicePixelContentBoxSize;if(r&&a.value){let t=Ty(e);if(t){let e=t.getBoundingClientRect();o.value=e.width,s.value=e.height}}else if(n){let e=py(n);o.value=e.reduce((e,{inlineSize:t})=>e+t,0),s.value=e.reduce((e,{blockSize:t})=>e+t,0)}else o.value=t.contentRect.width,s.value=t.contentRect.height},n);by(()=>{let n=Ty(e);n&&(o.value=`offsetWidth`in n?n.offsetWidth:t.width,s.value=`offsetHeight`in n?n.offsetHeight:t.height)});let l=V(()=>Ty(e),e=>{o.value=e?t.width:0,s.value=e?t.height:0});function u(){c(),l()}return{width:o,height:s,stop:u}}function Uy(e,t,n={}){let{root:r,rootMargin:i,threshold:a=0,window:o=Cy,immediate:s=!0}=n,c=Ay(()=>o&&`IntersectionObserver`in o),l=H(()=>py(ze(e)).map(Ty).filter(ny)),u=oy,d=oe(s),f=c.value?V(()=>[l.value,Ty(r),ze(i),d.value],([e,n,r])=>{if(u(),!d.value||!e.length)return;let i=new IntersectionObserver(t,{root:Ty(n),rootMargin:r,threshold:a});e.forEach(e=>e&&i.observe(e)),u=()=>{i.disconnect(),u=oy}},{immediate:s,flush:`post`}):oy,p=()=>{u(),f(),d.value=!1};return Zv(p),{isSupported:c,isActive:d,pause(){u(),d.value=!1},resume(){d.value=!0},stop:p}}function Wy(e,t,n,r={}){var i,o;let{clone:s=!1,passive:c=!1,eventName:l,deep:u=!1,defaultValue:d,shouldEmit:f}=r,p=a(),m=n||p?.emit||(p==null||(i=p.$emit)==null?void 0:i.bind(p))||(p==null||(o=p.proxy)==null||(o=o.$emit)==null?void 0:o.bind(p?.proxy)),h=l;t||=`modelValue`,h||=`update:${t.toString()}`;let g=e=>s?typeof s==`function`?s(e):Ly(e):e,_=()=>ty(e[t])?g(e[t]):d,v=e=>{f?f(e)&&m(h,e):m(h,e)};if(c){let n=B(_()),r=!1;return V(()=>e[t],e=>{r||(r=!0,n.value=g(e),A(()=>r=!1))}),V(n,n=>{!r&&(n!==e[t]||u)&&v(n)},{deep:u}),n}else return H({get(){return _()},set(e){v(e)}})}function Gy(e={}){let{window:t=Cy}=e;if(!t)return oe(!1);let n=oe(t.document.hasFocus()),r={passive:!0};return Ey(t,`blur`,()=>{n.value=!1},r),Ey(t,`focus`,()=>{n.value=!0},r),n}function Ky(e={}){let{window:t=Cy,initialWidth:n=1/0,initialHeight:r=1/0,listenOrientation:i=!0,includeScrollbar:a=!0,type:o=`inner`}=e,s=oe(n),c=oe(r),l=()=>{if(t)if(o===`outer`)s.value=t.outerWidth,c.value=t.outerHeight;else if(o===`visual`&&t.visualViewport){let{width:e,height:n,scale:r}=t.visualViewport;s.value=Math.round(e*r),c.value=Math.round(n*r)}else a?(s.value=t.innerWidth,c.value=t.innerHeight):(s.value=t.document.documentElement.clientWidth,c.value=t.document.documentElement.clientHeight)};l(),by(l);let u={passive:!0};return Ey(`resize`,l,u),t&&o===`visual`&&t.visualViewport&&Ey(t.visualViewport,`resize`,l,u),i&&V(Iy(`(orientation: portrait)`),()=>l()),{width:s,height:c}}function qy(){let e=oe(),t=B(0),n=H(()=>({minWidth:`${Math.max(t.value,11)}px`}));return By(e,()=>{t.value=e.value?.getBoundingClientRect().width??0}),{calculatorRef:e,calculatorWidth:t,inputStyle:n}}var Jy=({from:e,replacement:t,scope:n,version:r,ref:i,type:a=`API`},o)=>{V(()=>f(o),o=>{o&&Kv(n,`[${a}] ${e} is about to be deprecated in version ${r}, please use ${t} instead. For more detail, please visit: ${i} `)},{immediate:!0})},Yy=`a[href],button:not([disabled]),button:not([hidden]),:not([tabindex="-1"]),input:not([disabled]),input:not([type="hidden"]),select:not([disabled]),textarea:not([disabled])`,Xy=e=>typeof ShadowRoot>`u`?!1:e instanceof ShadowRoot,Zy=e=>typeof Element>`u`?!1:e instanceof Element,Qy=e=>getComputedStyle(e).position===`fixed`?!1:e.offsetParent!==null,$y=e=>Array.from(e.querySelectorAll(Yy)).filter(e=>eb(e)&&Qy(e)),eb=e=>{if(e.tabIndex>0||e.tabIndex===0&&e.getAttribute(`tabIndex`)!==null)return!0;if(e.tabIndex<0||e.hasAttribute(`disabled`)||e.getAttribute(`aria-disabled`)===`true`)return!1;switch(e.nodeName){case`A`:return!!e.href&&e.rel!==`ignore`;case`INPUT`:return!(e.type===`hidden`||e.type===`file`);case`BUTTON`:case`SELECT`:case`TEXTAREA`:return!0;default:return!1}},tb=function(e,t,...n){let r;r=t.includes(`mouse`)||t.includes(`click`)?`MouseEvents`:t.includes(`key`)?`KeyboardEvent`:`HTMLEvents`;let i=document.createEvent(r);return i.initEvent(t,...n),e.dispatchEvent(i),e},nb=e=>!e.getAttribute(`aria-owns`),rb=(e,t,n)=>{let{parentNode:r}=e;if(!r)return null;let i=r.querySelectorAll(n);return i[Array.prototype.indexOf.call(i,e)+t]||null},ib=(e,t)=>{if(!e||!e.focus)return;let n=!1;Zy(e)&&!eb(e)&&!e.getAttribute(`tabindex`)&&(e.setAttribute(`tabindex`,`-1`),n=!0),e.focus(t),Zy(e)&&n&&e.removeAttribute(`tabindex`)},ab=e=>{e&&(ib(e),!nb(e)&&e.click())},ob=()=>ey&&/firefox/i.test(window.navigator.userAgent),sb=()=>ey&&/android/i.test(window.navigator.userAgent);v();var cb=(e=``)=>e.replace(/[|\\{}()[\]^$+*?.]/g,`\\$&`).replace(/-/g,`\\x2d`),lb=e=>be(e),ub=`utils/dom/style`,db=(e=``)=>e.split(` `).filter(e=>!!e.trim()),fb=(e,t)=>{if(!e||!t)return!1;if(t.includes(` `))throw Error(`className should not contain space.`);return e.classList.contains(t)},pb=(e,t)=>{!e||!t.trim()||e.classList.add(...db(t))},mb=(e,t)=>{!e||!t.trim()||e.classList.remove(...db(t))},hb=(e,t)=>{if(!ey||!e||!t||Xy(e))return``;let n=o(t);n===`float`&&(n=`cssFloat`);try{let t=e.style[n];if(t)return t;let r=document.defaultView?.getComputedStyle(e,``);return r?r[n]:``}catch{return e.style[n]}},gb=(e,t,n)=>{if(!(!e||!t))if(P(t))Lv(t).forEach(([t,n])=>gb(e,t,n));else{let r=o(t);e.style[r]=n}};function _b(e,t=`px`){if(!e&&e!==0)return``;if(Av(e)||Pv(e))return`${e}${t}`;if(R(e))return e;Kv(ub,`binding value must be a string or number`)}var vb=(e,t,n,r)=>{let i={offsetX:0,offsetY:0},a=B(!1),o=(t,n)=>{if(e.value){let{offsetX:a,offsetY:o}=i,s=e.value.getBoundingClientRect(),c=Math.max(s.left,0),l=Math.max(s.top,0),u=s.width,d=s.height,f=document.documentElement.clientWidth,p=document.documentElement.clientHeight,m=-c+a,h=-l+o,g=f-c-u+a,_=p-l-(d{let t=e.clientX,n=e.clientY,{offsetX:r,offsetY:s}=i,c=e=>{a.value||=!0,o(r+e.clientX-t,s+e.clientY-n)},l=()=>{a.value=!1,document.removeEventListener(`mousemove`,c),document.removeEventListener(`mouseup`,l)};document.addEventListener(`mousemove`,c),document.addEventListener(`mouseup`,l)},c=()=>{t.value&&e.value&&(t.value.addEventListener(`mousedown`,s),window.addEventListener(`resize`,d))},l=()=>{t.value&&e.value&&(t.value.removeEventListener(`mousedown`,s),window.removeEventListener(`resize`,d))},u=()=>{i.offsetX=0,i.offsetY=0,e.value&&(e.value.style.transform=``)},d=()=>{let{offsetX:e,offsetY:t}=i;o(e,t)};return I(()=>{De(()=>{n.value?c():l()})}),F(()=>{l()}),{isDragging:a,resetPosition:u,updatePosition:d}},yb={name:`en`,el:{breadcrumb:{label:`Breadcrumb`},colorpicker:{confirm:`OK`,clear:`Clear`,defaultLabel:`color picker`,description:`current color is {color}. press enter to select a new color.`,alphaLabel:`pick alpha value`,alphaDescription:`alpha {alpha}, current color is {color}`,hueLabel:`pick hue value`,hueDescription:`hue {hue}, current color is {color}`,svLabel:`pick saturation and brightness value`,svDescription:`saturation {saturation}, brightness {brightness}, current color is {color}`,predefineDescription:`select {value} as the color`},datepicker:{now:`Now`,today:`Today`,cancel:`Cancel`,clear:`Clear`,confirm:`OK`,dateTablePrompt:`Use the arrow keys and enter to select the day of the month`,monthTablePrompt:`Use the arrow keys and enter to select the month`,yearTablePrompt:`Use the arrow keys and enter to select the year`,selectedDate:`Selected date`,selectDate:`Select date`,selectTime:`Select time`,startDate:`Start Date`,startTime:`Start Time`,endDate:`End Date`,endTime:`End Time`,prevYear:`Previous Year`,nextYear:`Next Year`,prevMonth:`Previous Month`,nextMonth:`Next Month`,year:``,month1:`January`,month2:`February`,month3:`March`,month4:`April`,month5:`May`,month6:`June`,month7:`July`,month8:`August`,month9:`September`,month10:`October`,month11:`November`,month12:`December`,weeks:{sun:`Sun`,mon:`Mon`,tue:`Tue`,wed:`Wed`,thu:`Thu`,fri:`Fri`,sat:`Sat`},weeksFull:{sun:`Sunday`,mon:`Monday`,tue:`Tuesday`,wed:`Wednesday`,thu:`Thursday`,fri:`Friday`,sat:`Saturday`},months:{jan:`Jan`,feb:`Feb`,mar:`Mar`,apr:`Apr`,may:`May`,jun:`Jun`,jul:`Jul`,aug:`Aug`,sep:`Sep`,oct:`Oct`,nov:`Nov`,dec:`Dec`}},inputNumber:{decrease:`decrease number`,increase:`increase number`},select:{loading:`Loading`,noMatch:`No matching data`,noData:`No data`,placeholder:`Select`},mention:{loading:`Loading`},dropdown:{toggleDropdown:`Toggle Dropdown`},cascader:{noMatch:`No matching data`,loading:`Loading`,placeholder:`Select`,noData:`No data`},pagination:{goto:`Go to`,pagesize:`/page`,total:`Total {total}`,pageClassifier:``,page:`Page`,prev:`Go to previous page`,next:`Go to next page`,currentPage:`page {pager}`,prevPages:`Previous {pager} pages`,nextPages:`Next {pager} pages`,deprecationWarning:`Deprecated usages detected, please refer to the el-pagination documentation for more details`},dialog:{close:`Close this dialog`},drawer:{close:`Close this dialog`},messagebox:{title:`Message`,confirm:`OK`,cancel:`Cancel`,error:`Illegal input`,close:`Close this dialog`},upload:{deleteTip:`press delete to remove`,delete:`Delete`,preview:`Preview`,continue:`Continue`},slider:{defaultLabel:`slider between {min} and {max}`,defaultRangeStartLabel:`pick start value`,defaultRangeEndLabel:`pick end value`},table:{emptyText:`No Data`,confirmFilter:`Confirm`,resetFilter:`Reset`,clearFilter:`All`,sumText:`Sum`,selectAllLabel:`Select all rows`,selectRowLabel:`Select this row`,expandRowLabel:`Expand this row`,collapseRowLabel:`Collapse this row`,sortLabel:`Sort by {column}`,filterLabel:`Filter by {column}`},tag:{close:`Close this tag`},tour:{next:`Next`,previous:`Previous`,finish:`Finish`,close:`Close this dialog`},tree:{emptyText:`No Data`},transfer:{noMatch:`No matching data`,noData:`No data`,titles:[`List 1`,`List 2`],filterPlaceholder:`Enter keyword`,noCheckedFormat:`{total} items`,hasCheckedFormat:`{checked}/{total} checked`},image:{error:`FAILED`},pageHeader:{title:`Back`},popconfirm:{confirmButtonText:`Yes`,cancelButtonText:`No`},carousel:{leftArrow:`Carousel arrow left`,rightArrow:`Carousel arrow right`,indicator:`Carousel switch to index {index}`},inputOTP:{groupLabel:`OTP Input`,defaultLabel:`Please enter OTP character {index}`}}},bb=e=>(t,n)=>xb(t,n,f(e)),xb=(e,t,n)=>am(n,e,e).replace(/\{(\w+)\}/g,(e,n)=>`${t?.[n]??`{${n}}`}`),Sb=e=>({lang:H(()=>f(e).name),locale:pe(e)?e:B(e),t:bb(e)}),Cb=Symbol(`localeContextKey`),wb=e=>{let t=e||D(Cb,B());return Sb(H(()=>t.value||yb))},Tb=`is-`,Eb=(e,t,n,r,i)=>{let a=`${e}-${t}`;return n&&(a+=`-${n}`),r&&(a+=`__${r}`),i&&(a+=`--${i}`),a},Db=Symbol(`namespaceContextKey`),Ob=e=>{let t=e||(a()?D(Db,B(`el`)):B(`el`));return H(()=>f(t)||`el`)},Q=(e,t)=>{let n=Ob(t);return{namespace:n,b:(t=``)=>Eb(n.value,e,t,``,``),e:t=>t?Eb(n.value,e,``,t,``):``,m:t=>t?Eb(n.value,e,``,``,t):``,be:(t,r)=>t&&r?Eb(n.value,e,t,r,``):``,em:(t,r)=>t&&r?Eb(n.value,e,``,t,r):``,bm:(t,r)=>t&&r?Eb(n.value,e,t,``,r):``,bem:(t,r,i)=>t&&r&&i?Eb(n.value,e,t,r,i):``,is:(e,...t)=>{let n=t.length>=1?t[0]:!0;return e&&n?`${Tb}${e}`:``},cssVar:e=>{let t={};for(let r in e)e[r]&&(t[`--${n.value}-${r}`]=e[r]);return t},cssVarName:e=>`--${n.value}-${e}`,cssVarBlock:t=>{let r={};for(let i in t)t[i]&&(r[`--${n.value}-${e}-${i}`]=t[i]);return r},cssVarBlockName:t=>`--${n.value}-${e}-${t}`}};function kb(e,t,n,r){let i=n-t;return e/=r/2,e<1?i/2*e*e*e+t:i/2*((e-=2)*e*e+2)+t}var Ab=e=>ey?window.requestAnimationFrame(e):setTimeout(e,16),jb=e=>ey?window.cancelAnimationFrame(e):clearTimeout(e),Mb=(e,t)=>{if(!ey)return!1;let n={undefined:`overflow`,true:`overflow-y`,false:`overflow-x`}[String(t)],r=hb(e,n);return[`scroll`,`auto`,`overlay`].some(e=>r.includes(e))},Nb=(e,t)=>{if(!ey)return;let n=e;for(;n;){if([window,document,document.documentElement].includes(n))return window;if(Mb(n,t))return n;n=Xy(n)?n.host:n.parentNode}return n},Pb,Fb=e=>{if(!ey)return 0;if(Pb!==void 0)return Pb;let t=document.createElement(`div`);t.className=`${e}-scrollbar__wrap`,t.style.visibility=`hidden`,t.style.width=`100px`,t.style.position=`absolute`,t.style.top=`-9999px`,document.body.appendChild(t);let n=t.offsetWidth;t.style.overflow=`scroll`;let r=document.createElement(`div`);r.style.width=`100%`,t.appendChild(r);let i=r.offsetWidth;return t.parentNode?.removeChild(t),Pb=n-i,Pb};function Ib(e,t){if(!ey)return;if(!t){e.scrollTop=0;return}let n=[],r=t.offsetParent;for(;r!==null&&e!==r&&e.contains(r);)n.push(r),r=r.offsetParent;let i=t.offsetTop+n.reduce((e,t)=>e+t.offsetTop,0),a=i+t.offsetHeight,o=e.scrollTop,s=o+e.clientHeight;is&&(e.scrollTop=a-e.clientHeight)}function Lb(e,t,n,r,i){let a=Date.now(),o,s=()=>{let l=Date.now()-a,u=kb(l>r?r:l,t,n,r);Fv(e)?e.scrollTo(window.pageXOffset,u):e.scrollTop=u,l{o&&jb(o)}}var Rb=(e,t)=>Fv(t)?e.ownerDocument.documentElement:t,zb=e=>Fv(e)?window.scrollY:e.scrollTop,Bb=(e,t={})=>{pe(e)||Gv(`[useLockscreen]`,`You need to pass a ref param to this function`);let n=t.ns||Q(`popup`),r=H(()=>n.bm(`parent`,`hidden`)),i=0,a=!1,o=`0`,s=!1,c=()=>{s||(s=!0,setTimeout(()=>{typeof document>`u`||a&&document&&(document.body.style.width=o,mb(document.body,r.value))},200))};V(e,e=>{if(!e){c();return}s=!1,a=!fb(document.body,r.value),a&&(o=document.body.style.width,pb(document.body,r.value)),i=Fb(n.namespace.value);let t=document.documentElement.clientHeight0&&(t||l===`scroll`)&&a&&(document.body.style.width=`calc(100% - ${i}px)`)}),Te(()=>c())},Vb=(e,t,{checkForDefaultPrevented:n=!0}={})=>r=>{let i=e?.(r);if(n===!1||!i)return t?.(r)},Hb=e=>t=>t.pointerType===`mouse`?e(t):void 0,Ub=e=>{if(e.code&&e.code!==`Unidentified`)return e.code;let t=Wb(e);if(t){if(Object.values(Y).includes(t))return t;switch(t){case` `:return Y.space;default:return``}}return``},Wb=e=>{let t=e.key&&e.key!==`Unidentified`?e.key:``;if(!t&&e.type===`keyup`&&sb()){let n=e.target;t=n.value.charAt(n.selectionStart-1)}return t},Gb=Vv({type:X(Boolean),default:null}),Kb=Vv({type:X(Function)}),qb=e=>{let t=`update:${e}`,n=`onUpdate:${e}`,r=[t];return{useModelToggle:({indicator:r,toggleReason:i,shouldHideWhenRouteChanges:o,shouldProceed:s,onShow:l,onHide:u})=>{let d=a(),{emit:f}=d,p=d.props,m=H(()=>c(p[n])),h=H(()=>p[e]===null),g=e=>{r.value!==!0&&(r.value=!0,i&&(i.value=e),c(l)&&l(e))},_=e=>{r.value!==!1&&(r.value=!1,i&&(i.value=e),c(u)&&u(e))},v=e=>{if(p.disabled===!0||c(s)&&!s())return;let n=m.value&&ey;n&&f(t,!0),(h.value||!n)&&g(e)},y=e=>{if(p.disabled===!0||!ey)return;let n=m.value&&ey;n&&f(t,!1),(h.value||!n)&&_(e)},b=e=>{kv(e)&&(p.disabled&&e?m.value&&f(t,!1):r.value!==e&&(e?g():_()))};return V(()=>p[e],b),o&&d.appContext.config.globalProperties.$route!==void 0&&V(()=>({...d.proxy.$route}),()=>{o.value&&r.value&&y()}),I(()=>{b(p[e])}),{hide:y,show:v,toggle:()=>{r.value?y():v()},hasUpdateHandler:m}},useModelToggleProps:{[e]:Gb,[n]:Kb},useModelToggleEmits:r}},{useModelToggle:Jb,useModelToggleProps:Yb,useModelToggleEmits:Xb}=qb(`modelValue`),Zb=e=>{let t=a();return H(()=>t?.proxy?.$props?.[e])},Qb=(e,t,n={})=>{let r={name:`updateState`,enabled:!0,phase:`write`,fn:({state:e})=>{let t=$b(e);Object.assign(o.value,t)},requires:[`computeStyles`]},i=H(()=>{let{onFirstUpdate:e,placement:t,strategy:i,modifiers:a}=f(n);return{onFirstUpdate:e,placement:t||`bottom`,strategy:i||`absolute`,modifiers:[...a||[],r,{name:`applyStyles`,enabled:!1}]}}),a=oe(),o=B({styles:{popper:{position:f(i).strategy,left:`0`,top:`0`},arrow:{position:`absolute`}},attributes:{}}),s=()=>{a.value&&=(a.value.destroy(),void 0)};return V(i,e=>{let t=f(a);t&&t.setOptions(e)},{deep:!0}),V([e,t],([e,t])=>{s(),!(!e||!t)&&(a.value=sr(e,t,f(i)))}),F(()=>{s()}),{state:H(()=>({...f(a)?.state||{}})),styles:H(()=>f(o).styles),attributes:H(()=>f(o).attributes),update:()=>f(a)?.update(),forceUpdate:()=>f(a)?.forceUpdate(),instanceRef:H(()=>f(a))}};function $b(e){let t=Object.keys(e.elements);return{styles:rv(t.map(t=>[t,e.styles[t]||{}])),attributes:rv(t.map(t=>[t,e.attributes[t]]))}}var ex=e=>{if(!e)return{onClick:xe,onMousedown:xe,onMouseup:xe};let t=!1,n=!1;return{onClick:r=>{t&&n&&e(r),t=n=!1},onMousedown:e=>{t=e.target===e.currentTarget},onMouseup:e=>{n=e.target===e.currentTarget}}},tx=(e,t=0)=>{if(t===0)return e;let n=B(P(t)&&!!t.initVal),r=null,i=t=>{if(Ov(t)){n.value=e.value;return}r&&clearTimeout(r),r=setTimeout(()=>{n.value=e.value},t)},a=e=>{e===`leading`?Av(t)?i(t):i(t.leading):P(t)?i(t.trailing):n.value=!1};return I(()=>a(`leading`)),V(()=>e.value,e=>{a(e?`leading`:`trailing`)}),n};function nx(){let e,t=(t,r)=>{n(),e=globalThis.setTimeout(t,r)},n=()=>{e!==void 0&&(globalThis.clearTimeout(e),e=void 0)};return Zv(()=>n()),{registerTimeout:t,cancelTimeout:n}}var rx={prefix:Math.floor(Math.random()*1e4),current:0},ix=Symbol(`elIdInjection`),ax=()=>a()?D(ix,rx):rx,ox=e=>{let t=ax();!ey&&t===rx&&Kv(`IdInjection`,`Looks like you are using server rendering, you must provide a id provider to ensure the hydration process to be succeed @@ -56,4 +56,4 @@ usage: app.provide(ZINDEX_INJECTION_KEY, { current: 0 })`),{initialZIndex:r,curr `);return e===-1?``:t.stack.slice(e+1)})();try{if(!e.stack)e.stack=n;else if(n){let t=n.indexOf(` `),r=t===-1?-1:n.indexOf(` `,t+1),i=r===-1?``:n.slice(r+1);String(e.stack).endsWith(i)||(e.stack+=` -`+n)}}catch{}}throw e}}_request(e,t){typeof e==`string`?(t||={},t.url=e):t=e||{},t=s4(this.defaults,t);let{transitional:n,paramsSerializer:r,headers:i}=t;n!==void 0&&I4.assertOptions(n,{silentJSONParsing:L4.transitional(L4.boolean),forcedJSONParsing:L4.transitional(L4.boolean),clarifyTimeoutError:L4.transitional(L4.boolean),legacyInterceptorReqResOrdering:L4.transitional(L4.boolean)},!1),r!=null&&($.isFunction(r)?t.paramsSerializer={serialize:r}:I4.assertOptions(r,{encode:L4.function,serialize:L4.function},!0)),t.allowAbsoluteUrls!==void 0||(this.defaults.allowAbsoluteUrls===void 0?t.allowAbsoluteUrls=!0:t.allowAbsoluteUrls=this.defaults.allowAbsoluteUrls),I4.assertOptions(t,{baseUrl:L4.spelling(`baseURL`),withXsrfToken:L4.spelling(`withXSRFToken`)},!0),t.method=(t.method||this.defaults.method||`get`).toLowerCase();let a=i&&$.merge(i.common,i[t.method]);i&&$.forEach([`delete`,`get`,`head`,`post`,`put`,`patch`,`query`,`common`],e=>{delete i[e]}),t.headers=f2.concat(a,i);let o=[],s=!0;this.interceptors.request.forEach(function(e){if(typeof e.runWhen==`function`&&e.runWhen(t)===!1)return;s&&=e.synchronous;let n=t.transitional||k2;n&&n.legacyInterceptorReqResOrdering?o.unshift(e.fulfilled,e.rejected):o.push(e.fulfilled,e.rejected)});let c=[];this.interceptors.response.forEach(function(e){c.push(e.fulfilled,e.rejected)});let l,u=0,d;if(!s){let e=[M4.bind(this),void 0];for(e.unshift(...o),e.push(...c),d=e.length,l=Promise.resolve(t);u{if(!n._listeners)return;let t=n._listeners.length;for(;t-- >0;)n._listeners[t](e);n._listeners=null}),this.promise.then=e=>{let t,r=new Promise(e=>{n.subscribe(e),t=e}).then(e);return r.cancel=function(){n.unsubscribe(t)},r},e(function(e,r,i){n.reason||(n.reason=new q2(e,r,i),t(n.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(e){if(this.reason){e(this.reason);return}this._listeners?this._listeners.push(e):this._listeners=[e]}unsubscribe(e){if(!this._listeners)return;let t=this._listeners.indexOf(e);t!==-1&&this._listeners.splice(t,1)}toAbortSignal(){let e=new AbortController,t=t=>{e.abort(t)};return this.subscribe(t),e.signal.unsubscribe=()=>this.unsubscribe(t),e.signal}static source(){let t;return{token:new e(function(e){t=e}),cancel:t}}};function B4(e){return function(t){return e.apply(null,t)}}function V4(e){return $.isObject(e)&&e.isAxiosError===!0}var H4={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511,WebServerIsDown:521,ConnectionTimedOut:522,OriginIsUnreachable:523,TimeoutOccurred:524,SslHandshakeFailed:525,InvalidSslCertificate:526};Object.entries(H4).forEach(([e,t])=>{H4[t]=e});function U4(e){let t=new R4(e),n=H1(R4.prototype.request,t);return $.extend(n,R4.prototype,t,{allOwnKeys:!0}),$.extend(n,t,null,{allOwnKeys:!0}),n.create=function(t){return U4(s4(e,t))},n}var W4=U4(W2);W4.Axios=R4,W4.CanceledError=q2,W4.CancelToken=z4,W4.isCancel=K2,W4.VERSION=y4,W4.toFormData=S2,W4.AxiosError=g2,W4.Cancel=W4.CanceledError,W4.all=function(e){return Promise.all(e)},W4.spread=B4,W4.isAxiosError=V4,W4.mergeConfig=s4,W4.AxiosHeaders=f2,W4.formToJSON=e=>V2($.isHTMLForm(e)?new FormData(e):e),W4.getAdapter=A4.getAdapter,W4.HttpStatusCode=H4,W4.default=W4;var G4=W4.create({baseURL:Ze(),headers:{Accept:`application/json`,"Content-Type":`application/json`}});G4.interceptors.request.use(e=>{let t=localStorage.getItem(Qe);return t&&(e.headers.Authorization=`Bearer ${t}`),e}),G4.interceptors.response.use(e=>e,e=>{if(W4.isAxiosError(e)&&e.response?.status===401){localStorage.removeItem(Qe);let e=window.location.pathname,t=Ke();e.startsWith(t)||window.location.assign(`${t}?redirect=${encodeURIComponent(e+window.location.search)}`)}return Promise.reject(e)});async function K4(){let{data:e}=await G4.get(`/me/menus`);return q4(e)}function q4(e){let t=e?.data??e;if(!Array.isArray(t))throw Error(`菜单接口返回格式无效(expect data 为数组)`);return t}var J4=`modulepreload`,Y4=function(e){return`/admin/`+e},X4={},Z4=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e=document.getElementsByTagName(`link`),i=document.querySelector(`meta[property=csp-nonce]`),a=i?.nonce||i?.getAttribute(`nonce`);function o(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}r=o(t.map(t=>{if(t=Y4(t,n),t in X4)return;X4[t]=!0;let r=t.endsWith(`.css`),i=r?`[rel="stylesheet"]`:``;if(n)for(let n=e.length-1;n>=0;n--){let i=e[n];if(i.href===t&&(!r||i.rel===`stylesheet`))return}else if(document.querySelector(`link[href="${t}"]${i}`))return;let o=document.createElement(`link`);if(o.rel=r?`stylesheet`:J4,r||(o.as=`script`),o.crossOrigin=``,o.href=t,a&&o.setAttribute(`nonce`,a),document.head.appendChild(o),r)return new Promise((e,n)=>{o.addEventListener(`load`,e),o.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${t}`)))})}))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})},Q4={"admin-dashboard":()=>Z4(()=>import(`./AdminDashboardView-BG3HrDLL.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9])),"admin-competitions-list":()=>Z4(()=>import(`./CompetitionListView-CYZHzCBd.js`),__vite__mapDeps([10,1,2,3,4,5,6,7,8,11])),"admin-competition-form":()=>Z4(()=>import(`./CompetitionFormView-CE6wqRFe.js`),__vite__mapDeps([12,1,3,2,13,14,4,15,16,5,6,17,8,18])),"admin-competition-workspace":()=>Z4(()=>import(`./CompetitionFormView-CE6wqRFe.js`),__vite__mapDeps([12,1,3,2,13,14,4,15,16,5,6,17,8,18])),"admin-public-source-channels":()=>Z4(()=>import(`./PublicSourceChannelManageView-BxfNT_cP.js`),__vite__mapDeps([19,1,3,2,15,20])),"admin-reviewers-list":()=>Z4(()=>import(`./ReviewerManageView-D2W38ovd.js`).then(e=>e.n),__vite__mapDeps([21,1,3,2,4,5,6,22])),"admin-review-portal":()=>Z4(()=>import(`./ReviewPortalView-Dwc-2Vuk.js`),__vite__mapDeps([23,1,2,3,5,6,24])),"admin-users-list":()=>Z4(()=>import(`./AdminUserManageView-DOiTsZGK.js`),__vite__mapDeps([25,1,2,3,26]))},$4=mu(`adminMenu`,()=>{let e=B([]);function t(t){e.value=t}return{menus:e,setMenus:t}}),e3=[],t3=!1;function n3(e){e3.push(e)}function r3(e){for(let t of[...e3].reverse())e.hasRoute(t)&&e.removeRoute(t);e3.length=0,t3=!1}function i3(e,t,n){for(let r of n)if(!(r.section&&!r.name)&&r.name!==`admin-dashboard`)if(r.children?.length){if(!r.name||!r.path)continue;e.addRoute(t,{path:r.path,name:r.name,component:()=>Z4(()=>import(`./AdminMenuGroupLayout-Bb7HH6Ks.js`),__vite__mapDeps([27,1,2,3])),meta:{title:r.title,permissionCode:r.permissionCode,menuGroup:!0},children:[]}),n3(r.name),i3(e,r.name,r.children)}else{if(!r.name||!r.path)continue;let n=Q4[r.name];if(!n){console.warn(`[admin] 未注册菜单路由组件: ${r.name}`);continue}e.addRoute(t,{path:r.path,name:r.name,component:n,meta:{title:r.title,permissionCode:r.permissionCode}}),n3(r.name)}}async function a3(e){if(t3)return;let t;try{t=await K4()}catch(e){let t=e instanceof Error?e.message:`菜单加载失败`;throw NZ.error(`${t},请检查接口与登录态。`),e}$4().setMenus(t),i3(e,`AdminLayout`,t),e.addRoute(`AdminLayout`,{path:`competitions/new`,name:`admin-competition-new`,component:Q4[`admin-competition-form`],meta:{title:`新建赛事`,hideInMenu:!0}}),n3(`admin-competition-new`),e.addRoute(`AdminLayout`,{path:`competitions/:id/edit`,name:`admin-competition-edit`,component:Q4[`admin-competition-form`],meta:{title:`编辑赛事`,hideInMenu:!0}}),n3(`admin-competition-edit`),e.addRoute(`AdminLayout`,{path:`competition/workspace`,name:`admin-competition-workspace`,component:Q4[`admin-competition-workspace`],meta:{title:`赛事配置`,hideInMenu:!0}}),n3(`admin-competition-workspace`),e.addRoute(`AdminLayout`,{path:`competition/ws/:pathMatch(.*)*`,name:`admin-competition-ws-legacy-redirect`,redirect:{name:`admin-competition-workspace`}}),n3(`admin-competition-ws-legacy-redirect`),t3=!0}function o3(){return t3}function s3(){try{let e=localStorage.getItem(Ye);if(!e)return null;let t=JSON.parse(e);if(t&&typeof t.id==`number`)return t}catch{}return null}var c3=mu(`adminAuth`,()=>{let e=B(localStorage.getItem(`cxxfds_admin_token`)??``),t=B(s3()),n=H(()=>!!e.value.trim()),r=H(()=>{let e=t.value;return e&&(e.username?.trim()||e.name?.trim())||`管理员`});function i(t){e.value=t,t?localStorage.setItem(Qe,t):localStorage.removeItem(Qe)}function a(e){t.value=e,e?localStorage.setItem(Ye,JSON.stringify(e)):localStorage.removeItem(Ye)}function o(e,t){i(e),a(t??null)}function s(e){i(``),a(null),r3(e)}return{token:e,user:t,isAuthenticated:n,displayName:r,setToken:i,setUser:a,setSession:o,logout:s}}),l3=()=>Z4(()=>import(`./MainLayout-Diabeczz.js`),__vite__mapDeps([28,1,2,3,6,17,29,30,31]));function u3(){let e=localStorage.getItem(qe),t=localStorage.getItem(Ge);return t?e?{name:`participant-apply`,params:{slug:t},replace:!0}:{name:`participant-login`,params:{slug:t},replace:!0}:{path:`/c`,replace:!0}}var d3=j1({history:X$(`/admin/`),routes:[{path:`/`,redirect:u3},{path:`/c`,name:`participant-landing`,component:()=>Z4(()=>import(`./ParticipantLandingView-DPqAhu6F.js`),__vite__mapDeps([32,2,3,30]))},{path:`/c/:slug/login`,name:`participant-login`,component:()=>Z4(()=>import(`./LoginView-B8c0Fe-9.js`),__vite__mapDeps([33,2,3,6,34,17,35,31])),meta:{guestOnly:!0}},{path:`/c/:slug/impersonate-entry`,name:`participant-impersonate-entry`,component:()=>Z4(()=>import(`./ParticipantImpersonateEntryView-B5jFxZk8.js`),__vite__mapDeps([36,2,3,6]))},{path:`/c/:slug/review/login`,name:`reviewer-login`,component:()=>Z4(()=>import(`./ReviewerLoginView-vNgYiK9E.js`),__vite__mapDeps([37,2,3,6,17,35,31])),meta:{guestReviewerOnly:!0}},{path:`/c/:slug/review`,component:()=>Z4(()=>import(`./ReviewerLayout-B1QWLigA.js`),__vite__mapDeps([38,1,2,3,39,17,6,40,30,31])),meta:{requiresReviewerAuth:!0},children:[{path:`applications/:id(\\d+)`,name:`reviewer-application-detail`,component:()=>Z4(()=>import(`./ReviewerApplicationDetailView-C_C2VT7j.js`),__vite__mapDeps([41,1,2,3,42,6,14,43,44]))},{path:``,name:`reviewer-projects`,component:()=>Z4(()=>import(`./ReviewerProjectsView-Ncr8FbkS.js`),__vite__mapDeps([45,1,2,3,46,6,43,47]))}]},{path:`/c/:slug/manage/login`,name:`manage-login`,component:()=>Z4(()=>import(`./ManageLoginView-CCm4mhLJ.js`),__vite__mapDeps([48,2,3,49,6,17,35,31])),meta:{guestManageOnly:!0}},{path:`/c/:slug/manage`,component:()=>Z4(()=>import(`./CompetitionManageLayout-RtEzZeOT.js`),__vite__mapDeps([50,1,2,3,49,39,17,6,5,51,30,31])),meta:{requiresAdminAuth:!0},children:[{path:``,redirect:e=>({name:`manage-dashboard`,params:{slug:e.params.slug}})},{path:`dashboard`,name:`manage-dashboard`,component:()=>Z4(()=>import(`./ManageDashboardView-BvyKsQMW.js`),__vite__mapDeps([52,2,3]))},{path:`projects`,name:`manage-projects`,component:()=>Z4(()=>import(`./ManageProjectsView-D0-WoO2G.js`),__vite__mapDeps([53,2,3,13,14,4,15,16,46,43]))},{path:`projects/:id(\\d+)`,name:`manage-project-detail`,component:()=>Z4(()=>import(`./ManageProjectDetailView-Ck2cINDy.js`),__vite__mapDeps([54,1,2,3,13,14,42,43,55]))},{path:`reviewers`,name:`manage-reviewers`,component:()=>Z4(()=>import(`./ManageReviewersView-KhNc4lcH.js`),__vite__mapDeps([56,1,2,3,21,4,5,6,22,57]))}]},{path:`/c/:slug`,component:l3,meta:{requiresAuth:!0},children:[{path:``,redirect:e=>({name:`participant-apply`,params:{slug:e.params.slug}})},{path:`apply`,name:`participant-apply`,component:()=>Z4(()=>import(`./ApplyView-C88S5zde.js`),__vite__mapDeps([58,1,2,3,6,34,17,14,59]))}]},{path:`/app`,redirect:()=>{let e=localStorage.getItem(Ge);return e?{name:`participant-apply`,params:{slug:e}}:{path:`/c`}}},{path:`/app/apply`,redirect:()=>{let e=localStorage.getItem(Ge);return e?{name:`participant-apply`,params:{slug:e}}:{path:`/c`}}},{path:`/admin/admin/login`,redirect:{name:`admin-login`}},{path:`/admin/admin`,redirect:{name:`admin-dashboard`}},{path:`/admin/admin/:rest(.*)`,redirect:e=>{let t=String(e.params.rest??``).replace(/^\//,``);return t?`/admin/${t}`:`/admin`}},{path:`/admin/login`,name:`admin-login`,component:()=>Z4(()=>import(`./AdminLoginView-CVL7subl.js`),__vite__mapDeps([60,1,2,3,49,6,61]))},{path:`/admin`,name:`AdminLayout`,component:()=>Z4(()=>import(`./AdminLayout-BTI5o2eW.js`),__vite__mapDeps([62,1,2,3,49,4,5,6,63])),children:[{path:``,name:`admin-dashboard`,component:()=>Z4(()=>import(`./AdminDashboardView-BG3HrDLL.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9])),meta:{title:`首页`,permissionCode:`admin.dashboard`}},{path:`dashboard`,redirect:{name:`admin-dashboard`}}]}]});d3.beforeEach(async e=>{let t=e.params.slug==null?``:String(e.params.slug).trim();!tt(e.path)&&!$e(e.path)&&t&&localStorage.setItem(Ge,t);let n=localStorage.getItem(qe);if($e(e.path)){let n=c3();return e.name===`manage-login`?n.isAuthenticated?{name:`manage-dashboard`,params:{slug:t},replace:!0}:!0:e.matched.some(e=>e.meta.requiresAdminAuth===!0)&&!n.isAuthenticated?{name:`manage-login`,params:{slug:t},query:t?{redirect:e.fullPath}:{}}:!0}if(tt(e.path)){if(t&&!(await B1(t)).enabled)return Je(),e.name===`reviewer-login`?!0:{name:`reviewer-login`,params:{slug:t},replace:!0};let{token:n,competitionSlug:r}=et();return e.name===`reviewer-login`?n&&r!==``&&r===t?{name:`reviewer-projects`,params:{slug:t},replace:!0}:!0:e.matched.some(e=>e.meta.requiresReviewerAuth===!0)&&(!n||r!==t)?{name:`reviewer-login`,params:{slug:t},query:t?{redirect:e.fullPath}:{}}:!0}if(e.path.startsWith(`/admin`)){let t=c3();return e.name===`admin-login`||e.path===`/admin/login`||e.path===`/admin/admin/login`?t.isAuthenticated?(o3()||await a3(d3),{name:`admin-dashboard`,replace:!0}):!0:t.isAuthenticated?o3()?!0:(await a3(d3),{...e,replace:!0}):{path:`/admin/login`,query:{redirect:e.fullPath}}}if(e.matched.some(e=>e.meta.requiresAuth)&&!n){let t=e.params.slug==null?``:String(e.params.slug);return t?{name:`participant-login`,params:{slug:t},query:{redirect:e.fullPath}}:{path:`/c`,query:{redirect:e.fullPath}}}if(e.meta.guestOnly&&n){let t=e.params.slug==null?``:String(e.params.slug);return t?{name:`participant-apply`,params:{slug:t},replace:!0}:u3()}return!0});var f3=`cxxfds_public_source_code`,p3=`cxxfds_public_source_checked_at`,m3=720*60*60*1e3;function h3(e){let t=typeof e==`string`?e.trim():``;return/^[A-Za-z0-9_-]{2,64}$/.test(t)?t:null}function g3(){return Date.now()}function _3(){try{let e=`__cxxfds_storage_probe__`;return window.localStorage.setItem(e,`1`),window.localStorage.removeItem(e),!0}catch{return!1}}function v3(){_3()&&(window.localStorage.removeItem(f3),window.localStorage.removeItem(p3))}function y3(e){_3()&&(window.localStorage.setItem(f3,e),window.localStorage.setItem(p3,String(g3())))}function b3(){let e=typeof window<`u`?h3(new URLSearchParams(window.location.search).get(`src`)):null;if(e)return e;if(!_3())return null;let t=window.localStorage.getItem(f3)?.trim()??``,n=window.localStorage.getItem(p3)?.trim()??``,r=Number.parseInt(n,10);return!t||!Number.isFinite(r)||r<=0||g3()-r>m3?(v3(),null):t}async function x3(e){let t=e.trim();if(!h3(t))return null;let n=new URLSearchParams({source_code:t}),r=await fetch(`${Xe()}/api/v1/public/source-channels/resolve?${n.toString()}`,{headers:{Accept:`application/json`}});if(!r.ok)return null;let i=await r.json().catch(()=>({}));return i.valid&&typeof i.source_code==`string`?i.source_code:null}async function S3(){if(typeof window>`u`)return;let e=new URLSearchParams(window.location.search).get(`src`)?.trim()??``;if(e)try{let t=await x3(e);t&&y3(t)}catch{}}var C3=eu();S3(),d3.afterEach(()=>{S3()}),document.documentElement.dataset.adminBuildMarker=`2026-06-19-frontend-rebuild`,Ae(P1).use(C3).use(d3).use(EQ,{locale:DQ}).mount(`#app`);export{gs as S,Cw as _,W4 as a,hu as b,R1 as c,ZZ as d,NZ as f,yw as g,uw as h,G4 as i,N1 as l,lw as m,c3 as n,z1 as o,iw as p,$4 as r,V1 as s,b3 as t,M1 as u,jw as v,Co as x,mu as y}; \ No newline at end of file +`+n)}}catch{}}throw e}}_request(e,t){typeof e==`string`?(t||={},t.url=e):t=e||{},t=s4(this.defaults,t);let{transitional:n,paramsSerializer:r,headers:i}=t;n!==void 0&&I4.assertOptions(n,{silentJSONParsing:L4.transitional(L4.boolean),forcedJSONParsing:L4.transitional(L4.boolean),clarifyTimeoutError:L4.transitional(L4.boolean),legacyInterceptorReqResOrdering:L4.transitional(L4.boolean)},!1),r!=null&&($.isFunction(r)?t.paramsSerializer={serialize:r}:I4.assertOptions(r,{encode:L4.function,serialize:L4.function},!0)),t.allowAbsoluteUrls!==void 0||(this.defaults.allowAbsoluteUrls===void 0?t.allowAbsoluteUrls=!0:t.allowAbsoluteUrls=this.defaults.allowAbsoluteUrls),I4.assertOptions(t,{baseUrl:L4.spelling(`baseURL`),withXsrfToken:L4.spelling(`withXSRFToken`)},!0),t.method=(t.method||this.defaults.method||`get`).toLowerCase();let a=i&&$.merge(i.common,i[t.method]);i&&$.forEach([`delete`,`get`,`head`,`post`,`put`,`patch`,`query`,`common`],e=>{delete i[e]}),t.headers=f2.concat(a,i);let o=[],s=!0;this.interceptors.request.forEach(function(e){if(typeof e.runWhen==`function`&&e.runWhen(t)===!1)return;s&&=e.synchronous;let n=t.transitional||k2;n&&n.legacyInterceptorReqResOrdering?o.unshift(e.fulfilled,e.rejected):o.push(e.fulfilled,e.rejected)});let c=[];this.interceptors.response.forEach(function(e){c.push(e.fulfilled,e.rejected)});let l,u=0,d;if(!s){let e=[M4.bind(this),void 0];for(e.unshift(...o),e.push(...c),d=e.length,l=Promise.resolve(t);u{if(!n._listeners)return;let t=n._listeners.length;for(;t-- >0;)n._listeners[t](e);n._listeners=null}),this.promise.then=e=>{let t,r=new Promise(e=>{n.subscribe(e),t=e}).then(e);return r.cancel=function(){n.unsubscribe(t)},r},e(function(e,r,i){n.reason||(n.reason=new q2(e,r,i),t(n.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(e){if(this.reason){e(this.reason);return}this._listeners?this._listeners.push(e):this._listeners=[e]}unsubscribe(e){if(!this._listeners)return;let t=this._listeners.indexOf(e);t!==-1&&this._listeners.splice(t,1)}toAbortSignal(){let e=new AbortController,t=t=>{e.abort(t)};return this.subscribe(t),e.signal.unsubscribe=()=>this.unsubscribe(t),e.signal}static source(){let t;return{token:new e(function(e){t=e}),cancel:t}}};function B4(e){return function(t){return e.apply(null,t)}}function V4(e){return $.isObject(e)&&e.isAxiosError===!0}var H4={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511,WebServerIsDown:521,ConnectionTimedOut:522,OriginIsUnreachable:523,TimeoutOccurred:524,SslHandshakeFailed:525,InvalidSslCertificate:526};Object.entries(H4).forEach(([e,t])=>{H4[t]=e});function U4(e){let t=new R4(e),n=H1(R4.prototype.request,t);return $.extend(n,R4.prototype,t,{allOwnKeys:!0}),$.extend(n,t,null,{allOwnKeys:!0}),n.create=function(t){return U4(s4(e,t))},n}var W4=U4(W2);W4.Axios=R4,W4.CanceledError=q2,W4.CancelToken=z4,W4.isCancel=K2,W4.VERSION=y4,W4.toFormData=S2,W4.AxiosError=g2,W4.Cancel=W4.CanceledError,W4.all=function(e){return Promise.all(e)},W4.spread=B4,W4.isAxiosError=V4,W4.mergeConfig=s4,W4.AxiosHeaders=f2,W4.formToJSON=e=>V2($.isHTMLForm(e)?new FormData(e):e),W4.getAdapter=A4.getAdapter,W4.HttpStatusCode=H4,W4.default=W4;var G4=W4.create({baseURL:Ze(),headers:{Accept:`application/json`,"Content-Type":`application/json`}});G4.interceptors.request.use(e=>{let t=localStorage.getItem(Qe);return t&&(e.headers.Authorization=`Bearer ${t}`),e}),G4.interceptors.response.use(e=>e,e=>{if(W4.isAxiosError(e)&&e.response?.status===401){localStorage.removeItem(Qe);let e=window.location.pathname,t=Ke();e.startsWith(t)||window.location.assign(`${t}?redirect=${encodeURIComponent(e+window.location.search)}`)}return Promise.reject(e)});async function K4(){let{data:e}=await G4.get(`/me/menus`);return q4(e)}function q4(e){let t=e?.data??e;if(!Array.isArray(t))throw Error(`菜单接口返回格式无效(expect data 为数组)`);return t}var J4=`modulepreload`,Y4=function(e){return`/admin/`+e},X4={},Z4=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e=document.getElementsByTagName(`link`),i=document.querySelector(`meta[property=csp-nonce]`),a=i?.nonce||i?.getAttribute(`nonce`);function o(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}r=o(t.map(t=>{if(t=Y4(t,n),t in X4)return;X4[t]=!0;let r=t.endsWith(`.css`),i=r?`[rel="stylesheet"]`:``;if(n)for(let n=e.length-1;n>=0;n--){let i=e[n];if(i.href===t&&(!r||i.rel===`stylesheet`))return}else if(document.querySelector(`link[href="${t}"]${i}`))return;let o=document.createElement(`link`);if(o.rel=r?`stylesheet`:J4,r||(o.as=`script`),o.crossOrigin=``,o.href=t,a&&o.setAttribute(`nonce`,a),document.head.appendChild(o),r)return new Promise((e,n)=>{o.addEventListener(`load`,e),o.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${t}`)))})}))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})},Q4={"admin-dashboard":()=>Z4(()=>import(`./AdminDashboardView-BgnRab08.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9])),"admin-competitions-list":()=>Z4(()=>import(`./CompetitionListView-CZtFbhx_.js`),__vite__mapDeps([10,1,2,3,4,5,6,7,8,11])),"admin-competition-form":()=>Z4(()=>import(`./CompetitionFormView-B35kaWp1.js`),__vite__mapDeps([12,1,3,2,13,14,4,15,16,5,6,17,8,18])),"admin-competition-workspace":()=>Z4(()=>import(`./CompetitionFormView-B35kaWp1.js`),__vite__mapDeps([12,1,3,2,13,14,4,15,16,5,6,17,8,18])),"admin-public-source-channels":()=>Z4(()=>import(`./PublicSourceChannelManageView-B1RkKHAq.js`),__vite__mapDeps([19,1,3,2,15,20])),"admin-reviewers-list":()=>Z4(()=>import(`./ReviewerManageView-DQKBYPkH.js`).then(e=>e.n),__vite__mapDeps([21,1,3,2,4,5,6,22])),"admin-review-portal":()=>Z4(()=>import(`./ReviewPortalView-BDmXNaoO.js`),__vite__mapDeps([23,1,2,3,5,6,24])),"admin-users-list":()=>Z4(()=>import(`./AdminUserManageView-CL5A4h3-.js`),__vite__mapDeps([25,1,2,3,26]))},$4=mu(`adminMenu`,()=>{let e=B([]);function t(t){e.value=t}return{menus:e,setMenus:t}}),e3=[],t3=!1;function n3(e){e3.push(e)}function r3(e){for(let t of[...e3].reverse())e.hasRoute(t)&&e.removeRoute(t);e3.length=0,t3=!1}function i3(e,t,n){for(let r of n)if(!(r.section&&!r.name)&&r.name!==`admin-dashboard`)if(r.children?.length){if(!r.name||!r.path)continue;e.addRoute(t,{path:r.path,name:r.name,component:()=>Z4(()=>import(`./AdminMenuGroupLayout-Bb7HH6Ks.js`),__vite__mapDeps([27,1,2,3])),meta:{title:r.title,permissionCode:r.permissionCode,menuGroup:!0},children:[]}),n3(r.name),i3(e,r.name,r.children)}else{if(!r.name||!r.path)continue;let n=Q4[r.name];if(!n){console.warn(`[admin] 未注册菜单路由组件: ${r.name}`);continue}e.addRoute(t,{path:r.path,name:r.name,component:n,meta:{title:r.title,permissionCode:r.permissionCode}}),n3(r.name)}}async function a3(e){if(t3)return;let t;try{t=await K4()}catch(e){let t=e instanceof Error?e.message:`菜单加载失败`;throw NZ.error(`${t},请检查接口与登录态。`),e}$4().setMenus(t),i3(e,`AdminLayout`,t),e.addRoute(`AdminLayout`,{path:`competitions/new`,name:`admin-competition-new`,component:Q4[`admin-competition-form`],meta:{title:`新建赛事`,hideInMenu:!0}}),n3(`admin-competition-new`),e.addRoute(`AdminLayout`,{path:`competitions/:id/edit`,name:`admin-competition-edit`,component:Q4[`admin-competition-form`],meta:{title:`编辑赛事`,hideInMenu:!0}}),n3(`admin-competition-edit`),e.addRoute(`AdminLayout`,{path:`competition/workspace`,name:`admin-competition-workspace`,component:Q4[`admin-competition-workspace`],meta:{title:`赛事配置`,hideInMenu:!0}}),n3(`admin-competition-workspace`),e.addRoute(`AdminLayout`,{path:`competition/ws/:pathMatch(.*)*`,name:`admin-competition-ws-legacy-redirect`,redirect:{name:`admin-competition-workspace`}}),n3(`admin-competition-ws-legacy-redirect`),t3=!0}function o3(){return t3}function s3(){try{let e=localStorage.getItem(Ye);if(!e)return null;let t=JSON.parse(e);if(t&&typeof t.id==`number`)return t}catch{}return null}var c3=mu(`adminAuth`,()=>{let e=B(localStorage.getItem(`cxxfds_admin_token`)??``),t=B(s3()),n=H(()=>!!e.value.trim()),r=H(()=>{let e=t.value;return e&&(e.username?.trim()||e.name?.trim())||`管理员`});function i(t){e.value=t,t?localStorage.setItem(Qe,t):localStorage.removeItem(Qe)}function a(e){t.value=e,e?localStorage.setItem(Ye,JSON.stringify(e)):localStorage.removeItem(Ye)}function o(e,t){i(e),a(t??null)}function s(e){i(``),a(null),r3(e)}return{token:e,user:t,isAuthenticated:n,displayName:r,setToken:i,setUser:a,setSession:o,logout:s}}),l3=()=>Z4(()=>import(`./MainLayout-lHj0rP5r.js`),__vite__mapDeps([28,1,2,3,6,17,29,30,31]));function u3(){let e=localStorage.getItem(qe),t=localStorage.getItem(Ge);return t?e?{name:`participant-apply`,params:{slug:t},replace:!0}:{name:`participant-login`,params:{slug:t},replace:!0}:{path:`/c`,replace:!0}}var d3=j1({history:X$(`/admin/`),routes:[{path:`/`,redirect:u3},{path:`/c`,name:`participant-landing`,component:()=>Z4(()=>import(`./ParticipantLandingView-Z99ohwU5.js`),__vite__mapDeps([32,2,3,30]))},{path:`/c/:slug/login`,name:`participant-login`,component:()=>Z4(()=>import(`./LoginView-DcN2H63N.js`),__vite__mapDeps([33,2,3,6,34,17,35,31])),meta:{guestOnly:!0}},{path:`/c/:slug/impersonate-entry`,name:`participant-impersonate-entry`,component:()=>Z4(()=>import(`./ParticipantImpersonateEntryView-DKiE569p.js`),__vite__mapDeps([36,2,3,6]))},{path:`/c/:slug/review/login`,name:`reviewer-login`,component:()=>Z4(()=>import(`./ReviewerLoginView-CX0DhvO5.js`),__vite__mapDeps([37,2,3,6,17,35,31])),meta:{guestReviewerOnly:!0}},{path:`/c/:slug/review`,component:()=>Z4(()=>import(`./ReviewerLayout-BgI2L8Cl.js`),__vite__mapDeps([38,1,2,3,39,17,6,40,30,31])),meta:{requiresReviewerAuth:!0},children:[{path:`applications/:id(\\d+)`,name:`reviewer-application-detail`,component:()=>Z4(()=>import(`./ReviewerApplicationDetailView-CmzDBsR6.js`),__vite__mapDeps([41,1,2,3,42,6,14,43,44]))},{path:``,name:`reviewer-projects`,component:()=>Z4(()=>import(`./ReviewerProjectsView-Dxe9Gm-T.js`),__vite__mapDeps([45,1,2,3,46,6,43,47]))}]},{path:`/c/:slug/manage/login`,name:`manage-login`,component:()=>Z4(()=>import(`./ManageLoginView-DqZvJ9dh.js`),__vite__mapDeps([48,2,3,49,6,17,35,31])),meta:{guestManageOnly:!0}},{path:`/c/:slug/manage`,component:()=>Z4(()=>import(`./CompetitionManageLayout-B4taBN2o.js`),__vite__mapDeps([50,1,2,3,49,39,17,6,5,51,30,31])),meta:{requiresAdminAuth:!0},children:[{path:``,redirect:e=>({name:`manage-dashboard`,params:{slug:e.params.slug}})},{path:`dashboard`,name:`manage-dashboard`,component:()=>Z4(()=>import(`./ManageDashboardView-cjRK_yIm.js`),__vite__mapDeps([52,2,3]))},{path:`projects`,name:`manage-projects`,component:()=>Z4(()=>import(`./ManageProjectsView-DHJkJNz3.js`),__vite__mapDeps([53,2,3,13,14,4,15,16,46,43]))},{path:`projects/:id(\\d+)`,name:`manage-project-detail`,component:()=>Z4(()=>import(`./ManageProjectDetailView-B3JD_oG2.js`),__vite__mapDeps([54,1,2,3,13,14,42,43,55]))},{path:`reviewers`,name:`manage-reviewers`,component:()=>Z4(()=>import(`./ManageReviewersView-1PCsDj4N.js`),__vite__mapDeps([56,1,2,3,21,4,5,6,22,57]))}]},{path:`/c/:slug`,component:l3,meta:{requiresAuth:!0},children:[{path:``,redirect:e=>({name:`participant-apply`,params:{slug:e.params.slug}})},{path:`apply`,name:`participant-apply`,component:()=>Z4(()=>import(`./ApplyView-C6M85uKr.js`),__vite__mapDeps([58,1,2,3,6,34,17,14,59]))}]},{path:`/app`,redirect:()=>{let e=localStorage.getItem(Ge);return e?{name:`participant-apply`,params:{slug:e}}:{path:`/c`}}},{path:`/app/apply`,redirect:()=>{let e=localStorage.getItem(Ge);return e?{name:`participant-apply`,params:{slug:e}}:{path:`/c`}}},{path:`/admin/admin/login`,redirect:{name:`admin-login`}},{path:`/admin/admin`,redirect:{name:`admin-dashboard`}},{path:`/admin/admin/:rest(.*)`,redirect:e=>{let t=String(e.params.rest??``).replace(/^\//,``);return t?`/admin/${t}`:`/admin`}},{path:`/admin/login`,name:`admin-login`,component:()=>Z4(()=>import(`./AdminLoginView-BFANHawE.js`),__vite__mapDeps([60,1,2,3,49,6,61]))},{path:`/admin`,name:`AdminLayout`,component:()=>Z4(()=>import(`./AdminLayout-uoOYnl4f.js`),__vite__mapDeps([62,1,2,3,49,4,5,6,63])),children:[{path:``,name:`admin-dashboard`,component:()=>Z4(()=>import(`./AdminDashboardView-BgnRab08.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9])),meta:{title:`首页`,permissionCode:`admin.dashboard`}},{path:`dashboard`,redirect:{name:`admin-dashboard`}}]}]});d3.beforeEach(async e=>{let t=e.params.slug==null?``:String(e.params.slug).trim();!tt(e.path)&&!$e(e.path)&&t&&localStorage.setItem(Ge,t);let n=localStorage.getItem(qe);if($e(e.path)){let n=c3();return e.name===`manage-login`?n.isAuthenticated?{name:`manage-dashboard`,params:{slug:t},replace:!0}:!0:e.matched.some(e=>e.meta.requiresAdminAuth===!0)&&!n.isAuthenticated?{name:`manage-login`,params:{slug:t},query:t?{redirect:e.fullPath}:{}}:!0}if(tt(e.path)){if(t&&!(await B1(t)).enabled)return Je(),e.name===`reviewer-login`?!0:{name:`reviewer-login`,params:{slug:t},replace:!0};let{token:n,competitionSlug:r}=et();return e.name===`reviewer-login`?n&&r!==``&&r===t?{name:`reviewer-projects`,params:{slug:t},replace:!0}:!0:e.matched.some(e=>e.meta.requiresReviewerAuth===!0)&&(!n||r!==t)?{name:`reviewer-login`,params:{slug:t},query:t?{redirect:e.fullPath}:{}}:!0}if(e.path.startsWith(`/admin`)){let t=c3();return e.name===`admin-login`||e.path===`/admin/login`||e.path===`/admin/admin/login`?t.isAuthenticated?(o3()||await a3(d3),{name:`admin-dashboard`,replace:!0}):!0:t.isAuthenticated?o3()?!0:(await a3(d3),{...e,replace:!0}):{path:`/admin/login`,query:{redirect:e.fullPath}}}if(e.matched.some(e=>e.meta.requiresAuth)&&!n){let t=e.params.slug==null?``:String(e.params.slug);return t?{name:`participant-login`,params:{slug:t},query:{redirect:e.fullPath}}:{path:`/c`,query:{redirect:e.fullPath}}}if(e.meta.guestOnly&&n){let t=e.params.slug==null?``:String(e.params.slug);return t?{name:`participant-apply`,params:{slug:t},replace:!0}:u3()}return!0});var f3=`cxxfds_public_source_code`,p3=`cxxfds_public_source_checked_at`,m3=720*60*60*1e3;function h3(e){let t=typeof e==`string`?e.trim():``;return/^[A-Za-z0-9_-]{2,64}$/.test(t)?t:null}function g3(){return Date.now()}function _3(){try{let e=`__cxxfds_storage_probe__`;return window.localStorage.setItem(e,`1`),window.localStorage.removeItem(e),!0}catch{return!1}}function v3(){_3()&&(window.localStorage.removeItem(f3),window.localStorage.removeItem(p3))}function y3(e){_3()&&(window.localStorage.setItem(f3,e),window.localStorage.setItem(p3,String(g3())))}function b3(){let e=typeof window<`u`?h3(new URLSearchParams(window.location.search).get(`src`)):null;if(e)return e;if(!_3())return null;let t=window.localStorage.getItem(f3)?.trim()??``,n=window.localStorage.getItem(p3)?.trim()??``,r=Number.parseInt(n,10);return!t||!Number.isFinite(r)||r<=0||g3()-r>m3?(v3(),null):t}async function x3(e){let t=e.trim();if(!h3(t))return null;let n=new URLSearchParams({source_code:t}),r=await fetch(`${Xe()}/api/v1/public/source-channels/resolve?${n.toString()}`,{headers:{Accept:`application/json`}});if(!r.ok)return null;let i=await r.json().catch(()=>({}));return i.valid&&typeof i.source_code==`string`?i.source_code:null}async function S3(){if(typeof window>`u`)return;let e=new URLSearchParams(window.location.search).get(`src`)?.trim()??``;if(e)try{let t=await x3(e);t&&y3(t)}catch{}}var C3=eu();S3(),d3.afterEach(()=>{S3()}),document.documentElement.dataset.adminBuildMarker=`2026-06-19-frontend-rebuild`,Ae(P1).use(C3).use(d3).use(EQ,{locale:DQ}).mount(`#app`);export{gs as S,Cw as _,W4 as a,hu as b,R1 as c,ZZ as d,NZ as f,yw as g,uw as h,G4 as i,N1 as l,lw as m,c3 as n,z1 as o,iw as p,$4 as r,V1 as s,b3 as t,M1 as u,jw as v,Co as x,mu as y}; \ No newline at end of file diff --git a/public/admin/assets/publicSourceChannels-COAaqE-_.js b/public/admin/assets/publicSourceChannels-DRre41RG.js similarity index 82% rename from public/admin/assets/publicSourceChannels-COAaqE-_.js rename to public/admin/assets/publicSourceChannels-DRre41RG.js index 54b535d..8ff4d2a 100644 --- a/public/admin/assets/publicSourceChannels-COAaqE-_.js +++ b/public/admin/assets/publicSourceChannels-DRre41RG.js @@ -1 +1 @@ -import{i as e}from"./index-DAT5gpOZ.js";function t(e){let t=e?.data??e;if(!t||typeof t!=`object`||!(`id`in t))throw Error(`公开来源渠道响应格式无效`);return t}async function n(){let{data:t}=await e.get(`/public-source-channels`),n=t?.data??t;if(!Array.isArray(n))throw Error(`公开来源渠道列表响应格式无效`);return n}async function r(n){let{data:r}=await e.post(`/public-source-channels`,n);return t(r)}async function i(n,r){let{data:i}=await e.put(`/public-source-channels/${n}`,r);return t(i)}export{n,i as r,r as t}; \ No newline at end of file +import{i as e}from"./index-t7bgup9e.js";function t(e){let t=e?.data??e;if(!t||typeof t!=`object`||!(`id`in t))throw Error(`公开来源渠道响应格式无效`);return t}async function n(){let{data:t}=await e.get(`/public-source-channels`),n=t?.data??t;if(!Array.isArray(n))throw Error(`公开来源渠道列表响应格式无效`);return n}async function r(n){let{data:r}=await e.post(`/public-source-channels`,n);return t(r)}async function i(n,r){let{data:i}=await e.put(`/public-source-channels/${n}`,r);return t(i)}export{n,i as r,r as t}; \ No newline at end of file diff --git a/public/admin/assets/signupChannels-DsI7Cu8M.js b/public/admin/assets/signupChannels-CGEQ38uA.js similarity index 85% rename from public/admin/assets/signupChannels-DsI7Cu8M.js rename to public/admin/assets/signupChannels-CGEQ38uA.js index 9cb5e30..695c074 100644 --- a/public/admin/assets/signupChannels-DsI7Cu8M.js +++ b/public/admin/assets/signupChannels-CGEQ38uA.js @@ -1 +1 @@ -import{i as e}from"./index-DAT5gpOZ.js";function t(e){let t=e?.data??e;if(!t||typeof t!=`object`||!(`id`in t))throw Error(`渠道响应格式无效`);return t}async function n(t){let{data:n}=await e.get(`/competitions/${t}/signup-channels`),r=n?.data??n;if(!Array.isArray(r))throw Error(`渠道列表响应格式无效`);return r}async function r(n,r){let{data:i}=await e.get(`/competitions/${n}/signup-channels/${r}`);return t(i)}async function i(n,r){let{data:i}=await e.post(`/competitions/${n}/signup-channels`,r);return t(i)}async function a(n,r,i){let{data:a}=await e.put(`/competitions/${n}/signup-channels/${r}`,i);return t(a)}export{a as i,r as n,n as r,i as t}; \ No newline at end of file +import{i as e}from"./index-t7bgup9e.js";function t(e){let t=e?.data??e;if(!t||typeof t!=`object`||!(`id`in t))throw Error(`渠道响应格式无效`);return t}async function n(t){let{data:n}=await e.get(`/competitions/${t}/signup-channels`),r=n?.data??n;if(!Array.isArray(r))throw Error(`渠道列表响应格式无效`);return r}async function r(n,r){let{data:i}=await e.get(`/competitions/${n}/signup-channels/${r}`);return t(i)}async function i(n,r){let{data:i}=await e.post(`/competitions/${n}/signup-channels`,r);return t(i)}async function a(n,r,i){let{data:a}=await e.put(`/competitions/${n}/signup-channels/${r}`,i);return t(a)}export{a as i,r as n,n as r,i as t}; \ No newline at end of file diff --git a/public/admin/index.html b/public/admin/index.html index 2360905..c205c3b 100644 --- a/public/admin/index.html +++ b/public/admin/index.html @@ -5,7 +5,7 @@ 江苏创青春新消费大赛报名系统 - cxxfds-web - + diff --git a/tests/Feature/AdminApplicationExportTest.php b/tests/Feature/AdminApplicationExportTest.php index 214509b..2e81789 100644 --- a/tests/Feature/AdminApplicationExportTest.php +++ b/tests/Feature/AdminApplicationExportTest.php @@ -182,7 +182,7 @@ class AdminApplicationExportTest extends TestCase $data = $rows[1]; $this->assertSame('1/2', (string) $data[$progressIdx]); $this->assertSame('待评审', (string) $data[$totalIdx]); - $this->assertSame('-', (string) $data[$avgIdx]); + $this->assertSame('88.5', (string) $data[$avgIdx]); $this->assertStringContainsString('评委甲 88.5', (string) $data[$detailIdx]); $this->assertStringContainsString('评委乙 未评审', (string) $data[$detailIdx]);