diff --git a/public/admin/assets/AdminDashboardView-bgi9eL34.js b/public/admin/assets/AdminDashboardView-QrNIiQmE.js similarity index 97% rename from public/admin/assets/AdminDashboardView-bgi9eL34.js rename to public/admin/assets/AdminDashboardView-QrNIiQmE.js index a87c6db..c01075a 100644 --- a/public/admin/assets/AdminDashboardView-bgi9eL34.js +++ b/public/admin/assets/AdminDashboardView-QrNIiQmE.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 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{_ as v,i as y,l as b}from"./index-BCZX_WPn.js";import{t as x}from"./_plugin-vue_export-helper-CXTkFu_Z.js";import{a as S}from"./competitions-MDk8yj3i.js";import{t as ne}from"./adminCompetition-C0UX3UwR.js";import{t as re}from"./competitionAdminLabels-D6x-u-ir.js";async function ie(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`},T={class:`meta-line`},ae={class:`time-line`},oe={class:`head-actions`},se={class:`metric-grid`,"aria-label":`核心指标`},ce={class:`metric-label`},le={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`],B={key:1,class:`shortcut shortcut-button`,type:`button`,disabled:``},ue={class:`panel`},V=x(p({__name:`AdminDashboardView`,setup(p){let y=ne(),{competitions:x,selectedCompetitionId:V}=v(y),H=s(!1),U=s(null),de=[{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),fe=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`?`已结束`:`报名中`:`未发布`}),pe=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:`累计提交评分数`}]}),me=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 he(){if(x.value.length>0)return;let e=await S({page:1,per_page:100});y.setCompetitionList(e.data)}async function X(){H.value=!0;try{await he();let e=V.value;if(!e){U.value=null;return}U.value=await ie(e)}catch(e){U.value=null,b.error(e instanceof Error?e.message:`首页数据加载失败`)}finally{H.value=!1}}function Z(e){if(!e)return`未配置`;let t=new Date(e);return Number.isNaN(t.getTime())?e:t.toLocaleString()}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 ge(e){return e===`submitted`?`已提交`:e===`draft`?`草稿`:e}async function $(e){if(e)try{await navigator.clipboard.writeText(`${window.location.origin}${e}`),b.success(`已复制完整链接`)}catch{b.error(`复制失败,请手动选择文本`)}}return c(V,()=>{X()}),te(()=>{X()}),(te,s)=>{let c=o(`el-tag`),l=o(`el-button`),p=o(`RouterLink`),v=o(`el-progress`),y=o(`el-table-column`),b=o(`el-table`),x=o(`el-empty`),S=ee(`loading`);return u((m(),g(`div`,C,[U.value&&G.value?(m(),g(d,{key:0},[_(`section`,w,[_(`div`,null,[s[3]||=_(`div`,{class:`eyebrow`},`运营工作台`,-1),_(`h1`,null,f(G.value.name),1),_(`div`,T,[r(c,{type:Q(G.value.status),effect:`plain`},{default:h(()=>[t(f(n(re)(G.value.status)),1)]),_:1},8,[`type`]),r(c,{type:G.value.published?`success`:`info`,effect:`plain`},{default:h(()=>[t(f(G.value.published?`已发布`:`未发布`),1)]),_:1},8,[`type`]),_(`span`,null,`当前阶段:`+f(fe.value),1),_(`span`,null,`slug:`+f(G.value.slug),1)]),_(`div`,ae,[_(`span`,null,`报名开始:`+f(Z(G.value.signup_open_at)),1),_(`span`,null,`报名截止:`+f(Z(G.value.signup_close_at)),1)])]),_(`div`,oe,[r(p,{to:{name:`admin-competition-workspace`}},{default:h(()=>[r(l,{type:`danger`},{default:h(()=>[...s[4]||=[t(`赛事配置`,-1)]]),_:1})]),_:1}),r(p,{to:{name:`admin-competitions-list`}},{default:h(()=>[r(l,null,{default:h(()=>[...s[5]||=[t(`赛事列表`,-1)]]),_:1})]),_:1})])]),_(`section`,se,[(m(!0),g(d,null,a(pe.value,e=>(m(),g(`div`,{key:e.label,class:`metric-card`},[_(`div`,ce,f(e.label),1),_(`div`,le,f(e.value),1),_(`div`,E,f(e.hint),1)]))),128))]),_(`section`,D,[_(`div`,O,[s[7]||=_(`div`,{class:`panel-head`},[_(`h2`,null,`配置完整度`),_(`span`,{class:`panel-subtitle`},`影响报名、提交和评审流转`)],-1),_(`div`,k,[(m(),g(d,null,a(de,e=>_(`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:h(()=>[t(f(U.value.setup[e.key]?`已完成`:e.key===`review_form_schema`?`默认`:`待处理`),1)]),_:2},1032,[`type`]),_(`div`,A,[_(`strong`,null,f(e.label),1),_(`span`,null,f(e.description),1)]),r(p,{to:{name:e.routeName}},{default:h(()=>[r(l,{link:``,type:`danger`},{default:h(()=>[...s[6]||=[t(`处理`,-1)]]),_:1})]),_:1},8,[`to`])])),64))])]),_(`div`,j,[s[13]||=_(`div`,{class:`panel-head`},[_(`h2`,null,`评审进度`),_(`span`,{class:`panel-subtitle`},`仅统计已提交报名`)],-1),r(v,{percentage:me.value,"stroke-width":12,"show-text":!1},null,8,[`percentage`]),_(`div`,M,[_(`div`,null,[_(`strong`,null,f(W.value?.applications_reviewed??0),1),s[8]||=_(`span`,null,`已评项目`,-1)]),_(`div`,null,[_(`strong`,null,f(W.value?.applications_pending_review??0),1),s[9]||=_(`span`,null,`待评项目`,-1)]),_(`div`,null,[_(`strong`,null,f(W.value?.reviewers_active??0)+`/`+f(W.value?.reviewers_total??0),1),s[10]||=_(`span`,null,`启用评审员`,-1)]),_(`div`,null,[_(`strong`,null,f(W.value?.reviewer_scopes_total??0),1),s[11]||=_(`span`,null,`评审范围`,-1)])]),r(p,{to:{name:`admin-reviewers-list`}},{default:h(()=>[r(l,{type:`danger`,plain:``},{default:h(()=>[...s[12]||=[t(`管理评审员与范围`,-1)]]),_:1})]),_:1})])]),_(`section`,N,[_(`div`,P,[_(`div`,F,[s[14]||=_(`h2`,null,`赛道分布`,-1),_(`span`,I,` 已启用 `+f(W.value?.tracks_enabled??0)+` / `+f(W.value?.tracks_total??0),1)]),r(b,{data:U.value.track_stats,stripe:``,style:{width:`100%`}},{empty:h(()=>[...s[15]||=[_(`span`,{class:`muted`},`暂无赛道,请进入赛事配置维护。`,-1)]]),default:h(()=>[r(y,{prop:`track_title`,label:`赛道`,"min-width":`150`,"show-overflow-tooltip":``}),r(y,{prop:`track_code`,label:`代码`,"min-width":`100`,"show-overflow-tooltip":``}),r(y,{label:`状态`,width:`90`},{default:h(({row:e})=>[r(c,{type:e.is_enabled?`success`:`info`,size:`small`,effect:`plain`},{default:h(()=>[t(f(e.is_enabled?`启用`:`停用`),1)]),_:2},1032,[`type`])]),_:1}),r(y,{prop:`applications_count`,label:`报名`,width:`90`}),r(y,{prop:`submitted_count`,label:`已提交`,width:`90`}),r(y,{prop:`reviewer_scope_count`,label:`评审范围`,width:`100`})]),_:1},8,[`data`])]),_(`div`,L,[s[23]||=_(`div`,{class:`panel-head`},[_(`h2`,null,`常用入口`),_(`span`,{class:`panel-subtitle`},`按当前赛事生成`)],-1),_(`div`,R,[r(p,{to:{name:`admin-competition-workspace`},class:`shortcut`},{default:h(()=>[...s[16]||=[_(`strong`,null,`报名列表与赛事配置`,-1),_(`span`,null,`查看报名详情、附件、分数和赛事设置`,-1)]]),_:1}),r(p,{to:{name:`admin-public-source-channels`},class:`shortcut`},{default:h(()=>[...s[17]||=[_(`strong`,null,`公开来源渠道`,-1),_(`span`,null,`生成首页入口链接和来源归因`,-1)]]),_:1}),_(`button`,{class:`shortcut shortcut-button`,type:`button`,onClick:s[0]||=e=>$(q.value)},[s[18]||=_(`strong`,null,`复制报名链接`,-1),_(`span`,null,f(q.value||`当前赛事暂无 slug`),1)]),_(`button`,{class:`shortcut shortcut-button`,type:`button`,onClick:s[1]||=e=>$(J.value)},[s[19]||=_(`strong`,null,`复制评审链接`,-1),_(`span`,null,f(J.value||`当前赛事暂无 slug`),1)]),Y.value?(m(),g(`a`,{key:0,class:`shortcut`,href:Y.value,target:`_blank`,rel:`noopener noreferrer`},[s[20]||=_(`strong`,null,`打开项目管理端`,-1),_(`span`,null,f(Y.value),1)],8,z)):(m(),g(`button`,B,[...s[21]||=[_(`strong`,null,`打开项目管理端`,-1),_(`span`,null,`当前赛事暂无 slug`,-1)]])),_(`button`,{class:`shortcut shortcut-button`,type:`button`,onClick:s[2]||=e=>$(Y.value)},[s[22]||=_(`strong`,null,`复制项目管理链接`,-1),_(`span`,null,f(Y.value||`当前赛事暂无 slug`),1)])])])]),_(`section`,ue,[s[26]||=_(`div`,{class:`panel-head`},[_(`h2`,null,`最近报名`),_(`span`,{class:`panel-subtitle`},`最近更新或提交的 8 条记录`)],-1),r(b,{data:U.value.recent_applications,stripe:``,style:{width:`100%`}},{empty:h(()=>[...s[25]||=[_(`span`,{class:`muted`},`暂无报名记录。`,-1)]]),default:h(()=>[r(y,{prop:`project_name`,label:`项目`,"min-width":`180`,"show-overflow-tooltip":``}),r(y,{prop:`player_name`,label:`负责人`,"min-width":`100`,"show-overflow-tooltip":``}),r(y,{prop:`track_title`,label:`赛道`,"min-width":`130`,"show-overflow-tooltip":``}),r(y,{label:`状态`,width:`100`},{default:h(({row:e})=>[r(c,{type:Q(e.status),size:`small`,effect:`plain`},{default:h(()=>[t(f(ge(e.status)),1)]),_:2},1032,[`type`])]),_:1}),r(y,{prop:`submitted_review_count`,label:`评分数`,width:`90`}),r(y,{label:`提交时间`,"min-width":`170`},{default:h(({row:e})=>[t(f(Z(e.submitted_at)),1)]),_:1}),r(y,{label:`操作`,width:`120`,fixed:`right`},{default:h(()=>[r(p,{to:{name:`admin-competition-workspace`}},{default:h(()=>[r(l,{type:`danger`,link:``},{default:h(()=>[...s[24]||=[t(`进入列表`,-1)]]),_:1})]),_:1})]),_:1})]),_:1},8,[`data`])])],64)):H.value?e(``,!0):(m(),i(x,{key:1,description:`暂无可管理的赛事`},{default:h(()=>[r(p,{to:{name:`admin-competition-new`}},{default:h(()=>[r(l,{type:`danger`},{default:h(()=>[...s[27]||=[t(`新建赛事`,-1)]]),_:1})]),_:1})]),_:1}))])),[[S,H.value]])}}}),[[`__scopeId`,`data-v-6ef28451`]]);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 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{_ as v,i as y,l as b}from"./index-BFG9yM8q.js";import{t as x}from"./_plugin-vue_export-helper-CXTkFu_Z.js";import{a as S}from"./competitions-BS1Y5XBa.js";import{t as ne}from"./adminCompetition-dnUmBw9X.js";import{t as re}from"./competitionAdminLabels-D6x-u-ir.js";async function ie(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`},T={class:`meta-line`},ae={class:`time-line`},oe={class:`head-actions`},se={class:`metric-grid`,"aria-label":`核心指标`},ce={class:`metric-label`},le={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`],B={key:1,class:`shortcut shortcut-button`,type:`button`,disabled:``},ue={class:`panel`},V=x(p({__name:`AdminDashboardView`,setup(p){let y=ne(),{competitions:x,selectedCompetitionId:V}=v(y),H=s(!1),U=s(null),de=[{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),fe=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`?`已结束`:`报名中`:`未发布`}),pe=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:`累计提交评分数`}]}),me=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 he(){if(x.value.length>0)return;let e=await S({page:1,per_page:100});y.setCompetitionList(e.data)}async function X(){H.value=!0;try{await he();let e=V.value;if(!e){U.value=null;return}U.value=await ie(e)}catch(e){U.value=null,b.error(e instanceof Error?e.message:`首页数据加载失败`)}finally{H.value=!1}}function Z(e){if(!e)return`未配置`;let t=new Date(e);return Number.isNaN(t.getTime())?e:t.toLocaleString()}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 ge(e){return e===`submitted`?`已提交`:e===`draft`?`草稿`:e}async function $(e){if(e)try{await navigator.clipboard.writeText(`${window.location.origin}${e}`),b.success(`已复制完整链接`)}catch{b.error(`复制失败,请手动选择文本`)}}return c(V,()=>{X()}),te(()=>{X()}),(te,s)=>{let c=o(`el-tag`),l=o(`el-button`),p=o(`RouterLink`),v=o(`el-progress`),y=o(`el-table-column`),b=o(`el-table`),x=o(`el-empty`),S=ee(`loading`);return u((m(),g(`div`,C,[U.value&&G.value?(m(),g(d,{key:0},[_(`section`,w,[_(`div`,null,[s[3]||=_(`div`,{class:`eyebrow`},`运营工作台`,-1),_(`h1`,null,f(G.value.name),1),_(`div`,T,[r(c,{type:Q(G.value.status),effect:`plain`},{default:h(()=>[t(f(n(re)(G.value.status)),1)]),_:1},8,[`type`]),r(c,{type:G.value.published?`success`:`info`,effect:`plain`},{default:h(()=>[t(f(G.value.published?`已发布`:`未发布`),1)]),_:1},8,[`type`]),_(`span`,null,`当前阶段:`+f(fe.value),1),_(`span`,null,`slug:`+f(G.value.slug),1)]),_(`div`,ae,[_(`span`,null,`报名开始:`+f(Z(G.value.signup_open_at)),1),_(`span`,null,`报名截止:`+f(Z(G.value.signup_close_at)),1)])]),_(`div`,oe,[r(p,{to:{name:`admin-competition-workspace`}},{default:h(()=>[r(l,{type:`danger`},{default:h(()=>[...s[4]||=[t(`赛事配置`,-1)]]),_:1})]),_:1}),r(p,{to:{name:`admin-competitions-list`}},{default:h(()=>[r(l,null,{default:h(()=>[...s[5]||=[t(`赛事列表`,-1)]]),_:1})]),_:1})])]),_(`section`,se,[(m(!0),g(d,null,a(pe.value,e=>(m(),g(`div`,{key:e.label,class:`metric-card`},[_(`div`,ce,f(e.label),1),_(`div`,le,f(e.value),1),_(`div`,E,f(e.hint),1)]))),128))]),_(`section`,D,[_(`div`,O,[s[7]||=_(`div`,{class:`panel-head`},[_(`h2`,null,`配置完整度`),_(`span`,{class:`panel-subtitle`},`影响报名、提交和评审流转`)],-1),_(`div`,k,[(m(),g(d,null,a(de,e=>_(`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:h(()=>[t(f(U.value.setup[e.key]?`已完成`:e.key===`review_form_schema`?`默认`:`待处理`),1)]),_:2},1032,[`type`]),_(`div`,A,[_(`strong`,null,f(e.label),1),_(`span`,null,f(e.description),1)]),r(p,{to:{name:e.routeName}},{default:h(()=>[r(l,{link:``,type:`danger`},{default:h(()=>[...s[6]||=[t(`处理`,-1)]]),_:1})]),_:1},8,[`to`])])),64))])]),_(`div`,j,[s[13]||=_(`div`,{class:`panel-head`},[_(`h2`,null,`评审进度`),_(`span`,{class:`panel-subtitle`},`仅统计已提交报名`)],-1),r(v,{percentage:me.value,"stroke-width":12,"show-text":!1},null,8,[`percentage`]),_(`div`,M,[_(`div`,null,[_(`strong`,null,f(W.value?.applications_reviewed??0),1),s[8]||=_(`span`,null,`已评项目`,-1)]),_(`div`,null,[_(`strong`,null,f(W.value?.applications_pending_review??0),1),s[9]||=_(`span`,null,`待评项目`,-1)]),_(`div`,null,[_(`strong`,null,f(W.value?.reviewers_active??0)+`/`+f(W.value?.reviewers_total??0),1),s[10]||=_(`span`,null,`启用评审员`,-1)]),_(`div`,null,[_(`strong`,null,f(W.value?.reviewer_scopes_total??0),1),s[11]||=_(`span`,null,`评审范围`,-1)])]),r(p,{to:{name:`admin-reviewers-list`}},{default:h(()=>[r(l,{type:`danger`,plain:``},{default:h(()=>[...s[12]||=[t(`管理评审员与范围`,-1)]]),_:1})]),_:1})])]),_(`section`,N,[_(`div`,P,[_(`div`,F,[s[14]||=_(`h2`,null,`赛道分布`,-1),_(`span`,I,` 已启用 `+f(W.value?.tracks_enabled??0)+` / `+f(W.value?.tracks_total??0),1)]),r(b,{data:U.value.track_stats,stripe:``,style:{width:`100%`}},{empty:h(()=>[...s[15]||=[_(`span`,{class:`muted`},`暂无赛道,请进入赛事配置维护。`,-1)]]),default:h(()=>[r(y,{prop:`track_title`,label:`赛道`,"min-width":`150`,"show-overflow-tooltip":``}),r(y,{prop:`track_code`,label:`代码`,"min-width":`100`,"show-overflow-tooltip":``}),r(y,{label:`状态`,width:`90`},{default:h(({row:e})=>[r(c,{type:e.is_enabled?`success`:`info`,size:`small`,effect:`plain`},{default:h(()=>[t(f(e.is_enabled?`启用`:`停用`),1)]),_:2},1032,[`type`])]),_:1}),r(y,{prop:`applications_count`,label:`报名`,width:`90`}),r(y,{prop:`submitted_count`,label:`已提交`,width:`90`}),r(y,{prop:`reviewer_scope_count`,label:`评审范围`,width:`100`})]),_:1},8,[`data`])]),_(`div`,L,[s[23]||=_(`div`,{class:`panel-head`},[_(`h2`,null,`常用入口`),_(`span`,{class:`panel-subtitle`},`按当前赛事生成`)],-1),_(`div`,R,[r(p,{to:{name:`admin-competition-workspace`},class:`shortcut`},{default:h(()=>[...s[16]||=[_(`strong`,null,`报名列表与赛事配置`,-1),_(`span`,null,`查看报名详情、附件、分数和赛事设置`,-1)]]),_:1}),r(p,{to:{name:`admin-public-source-channels`},class:`shortcut`},{default:h(()=>[...s[17]||=[_(`strong`,null,`公开来源渠道`,-1),_(`span`,null,`生成首页入口链接和来源归因`,-1)]]),_:1}),_(`button`,{class:`shortcut shortcut-button`,type:`button`,onClick:s[0]||=e=>$(q.value)},[s[18]||=_(`strong`,null,`复制报名链接`,-1),_(`span`,null,f(q.value||`当前赛事暂无 slug`),1)]),_(`button`,{class:`shortcut shortcut-button`,type:`button`,onClick:s[1]||=e=>$(J.value)},[s[19]||=_(`strong`,null,`复制评审链接`,-1),_(`span`,null,f(J.value||`当前赛事暂无 slug`),1)]),Y.value?(m(),g(`a`,{key:0,class:`shortcut`,href:Y.value,target:`_blank`,rel:`noopener noreferrer`},[s[20]||=_(`strong`,null,`打开项目管理端`,-1),_(`span`,null,f(Y.value),1)],8,z)):(m(),g(`button`,B,[...s[21]||=[_(`strong`,null,`打开项目管理端`,-1),_(`span`,null,`当前赛事暂无 slug`,-1)]])),_(`button`,{class:`shortcut shortcut-button`,type:`button`,onClick:s[2]||=e=>$(Y.value)},[s[22]||=_(`strong`,null,`复制项目管理链接`,-1),_(`span`,null,f(Y.value||`当前赛事暂无 slug`),1)])])])]),_(`section`,ue,[s[26]||=_(`div`,{class:`panel-head`},[_(`h2`,null,`最近报名`),_(`span`,{class:`panel-subtitle`},`最近更新或提交的 8 条记录`)],-1),r(b,{data:U.value.recent_applications,stripe:``,style:{width:`100%`}},{empty:h(()=>[...s[25]||=[_(`span`,{class:`muted`},`暂无报名记录。`,-1)]]),default:h(()=>[r(y,{prop:`project_name`,label:`项目`,"min-width":`180`,"show-overflow-tooltip":``}),r(y,{prop:`player_name`,label:`负责人`,"min-width":`100`,"show-overflow-tooltip":``}),r(y,{prop:`track_title`,label:`赛道`,"min-width":`130`,"show-overflow-tooltip":``}),r(y,{label:`状态`,width:`100`},{default:h(({row:e})=>[r(c,{type:Q(e.status),size:`small`,effect:`plain`},{default:h(()=>[t(f(ge(e.status)),1)]),_:2},1032,[`type`])]),_:1}),r(y,{prop:`submitted_review_count`,label:`评分数`,width:`90`}),r(y,{label:`提交时间`,"min-width":`170`},{default:h(({row:e})=>[t(f(Z(e.submitted_at)),1)]),_:1}),r(y,{label:`操作`,width:`120`,fixed:`right`},{default:h(()=>[r(p,{to:{name:`admin-competition-workspace`}},{default:h(()=>[r(l,{type:`danger`,link:``},{default:h(()=>[...s[24]||=[t(`进入列表`,-1)]]),_:1})]),_:1})]),_:1})]),_:1},8,[`data`])])],64)):H.value?e(``,!0):(m(),i(x,{key:1,description:`暂无可管理的赛事`},{default:h(()=>[r(p,{to:{name:`admin-competition-new`}},{default:h(()=>[r(l,{type:`danger`},{default:h(()=>[...s[27]||=[t(`新建赛事`,-1)]]),_:1})]),_:1})]),_:1}))])),[[S,H.value]])}}}),[[`__scopeId`,`data-v-6ef28451`]]);export{V as default}; \ No newline at end of file diff --git a/public/admin/assets/AdminLayout-BQCX55O-.js b/public/admin/assets/AdminLayout-4ZoEmerN.js similarity index 95% rename from public/admin/assets/AdminLayout-BQCX55O-.js rename to public/admin/assets/AdminLayout-4ZoEmerN.js index 712a029..7a4d1e6 100644 --- a/public/admin/assets/AdminLayout-BQCX55O-.js +++ b/public/admin/assets/AdminLayout-4ZoEmerN.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{_ as x,l as S,n as C,o as w,r as T,s as E}from"./index-BCZX_WPn.js";import{t as D}from"./_plugin-vue_export-helper-CXTkFu_Z.js";import{n as O}from"./auth-D03dbBG8.js";import{a as k}from"./competitions-MDk8yj3i.js";import{t as A}from"./adminCompetition-C0UX3UwR.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=w(),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(),w=C(),D=T(),j=A(),{menus:M}=x(D),{competitions:B,selectedCompetitionId:V}=x(j),{displayName:H}=x(w),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(){w.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{_ as x,l as S,n as C,o as w,r as T,s as E}from"./index-BFG9yM8q.js";import{t as D}from"./_plugin-vue_export-helper-CXTkFu_Z.js";import{n as O}from"./auth-De5mltp0.js";import{a as k}from"./competitions-BS1Y5XBa.js";import{t as A}from"./adminCompetition-dnUmBw9X.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=w(),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(),w=C(),D=T(),j=A(),{menus:M}=x(D),{competitions:B,selectedCompetitionId:V}=x(j),{displayName:H}=x(w),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(){w.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-DPcFu6H5.js b/public/admin/assets/AdminLoginView-BnfIanhh.js similarity index 88% rename from public/admin/assets/AdminLoginView-DPcFu6H5.js rename to public/admin/assets/AdminLoginView-BnfIanhh.js index 3a2f449..a460e72 100644 --- a/public/admin/assets/AdminLoginView-DPcFu6H5.js +++ b/public/admin/assets/AdminLoginView-BnfIanhh.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{h as d}from"./api-Cy3G2Clw.js";import{l as f,n as p,o as m,s as h}from"./index-BCZX_WPn.js";import{t as g}from"./_plugin-vue_export-helper-CXTkFu_Z.js";import{t as _}from"./auth-D03dbBG8.js";var v={class:`login-wrap`},y=g(a({__name:`AdminLoginView`,setup(a){let g=m(),y=h(),b=p(),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{h as d}from"./api-Cy3G2Clw.js";import{l as f,n as p,o as m,s as h}from"./index-BFG9yM8q.js";import{t as g}from"./_plugin-vue_export-helper-CXTkFu_Z.js";import{t as _}from"./auth-De5mltp0.js";var v={class:`login-wrap`},y=g(a({__name:`AdminLoginView`,setup(a){let g=m(),y=h(),b=p(),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-2JJ2wAQ8.js b/public/admin/assets/AdminUserManageView-DEFhShQd.js similarity index 98% rename from public/admin/assets/AdminUserManageView-2JJ2wAQ8.js rename to public/admin/assets/AdminUserManageView-DEFhShQd.js index c867c66..772fd8d 100644 --- a/public/admin/assets/AdminUserManageView-2JJ2wAQ8.js +++ b/public/admin/assets/AdminUserManageView-DEFhShQd.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{c as g,i as _,l as v}from"./index-BCZX_WPn.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 _.get(`/admin-users`,{params:e});return b(t)}async function S(e){let{data:t}=await _.post(`/admin-users`,e);return t}async function C(e,t){let{data:n}=await _.put(`/admin-users/${e}`,t);return n}async function w(e){await _.delete(`/admin-users/${e}`)}var T={class:`toolbar`},E={class:`table-pagination`},D=y(u({__name:`AdminUserManageView`,setup(u){let _=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){_.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{_.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()}),v.success(`已创建`)):j.value&&(await C(j.value,e),v.success(`已保存`)),O.value=!1,await F(b.page)}catch(e){v.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),v.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`),v=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(v,{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,_.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{c as g,i as _,l as v}from"./index-BFG9yM8q.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 _.get(`/admin-users`,{params:e});return b(t)}async function S(e){let{data:t}=await _.post(`/admin-users`,e);return t}async function C(e,t){let{data:n}=await _.put(`/admin-users/${e}`,t);return n}async function w(e){await _.delete(`/admin-users/${e}`)}var T={class:`toolbar`},E={class:`table-pagination`},D=y(u({__name:`AdminUserManageView`,setup(u){let _=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){_.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{_.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()}),v.success(`已创建`)):j.value&&(await C(j.value,e),v.success(`已保存`)),O.value=!1,await F(b.page)}catch(e){v.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),v.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`),v=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(v,{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,_.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-CA5C6FUE.js b/public/admin/assets/ApplyView-DjjKZu7K.js similarity index 99% rename from public/admin/assets/ApplyView-CA5C6FUE.js rename to public/admin/assets/ApplyView-DjjKZu7K.js index 33fb28e..935c59b 100644 --- a/public/admin/assets/ApplyView-CA5C6FUE.js +++ b/public/admin/assets/ApplyView-DjjKZu7K.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{g as ae,p as oe,u as se}from"./api-Cy3G2Clw.js";import{o as ce,s as le,v as ue,y as de}from"./index-BCZX_WPn.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";var ye={北京市:[`北京市`],天津市:[`天津市`],上海市:[`上海市`],重庆市:[`重庆市`],河北省:[`石家庄市`,`唐山市`,`秦皇岛市`,`邯郸市`,`邢台市`,`保定市`,`张家口市`,`承德市`,`沧州市`,`廊坊市`,`衡水市`],山西省:[`太原市`,`大同市`,`阳泉市`,`长治市`,`晋城市`,`朔州市`,`晋中市`,`运城市`,`忻州市`,`临汾市`,`吕梁市`],内蒙古自治区:[`呼和浩特市`,`包头市`,`乌海市`,`赤峰市`,`通辽市`,`鄂尔多斯市`,`呼伦贝尔市`,`巴彦淖尔市`,`乌兰察布市`,`兴安盟`,`锡林郭勒盟`,`阿拉善盟`],辽宁省:[`沈阳市`,`大连市`,`鞍山市`,`抚顺市`,`本溪市`,`丹东市`,`锦州市`,`营口市`,`阜新市`,`辽阳市`,`盘锦市`,`铁岭市`,`朝阳市`,`葫芦岛市`],吉林省:[`长春市`,`吉林市`,`四平市`,`辽源市`,`通化市`,`白山市`,`松原市`,`白城市`,`延边朝鲜族自治州`],黑龙江省:[`哈尔滨市`,`齐齐哈尔市`,`鸡西市`,`鹤岗市`,`双鸭山市`,`大庆市`,`伊春市`,`佳木斯市`,`七台河市`,`牡丹江市`,`黑河市`,`绥化市`,`大兴安岭地区`],江苏省:[`南京市`,`无锡市`,`徐州市`,`常州市`,`苏州市`,`南通市`,`连云港市`,`淮安市`,`盐城市`,`扬州市`,`镇江市`,`泰州市`,`宿迁市`],浙江省:[`杭州市`,`宁波市`,`温州市`,`嘉兴市`,`湖州市`,`绍兴市`,`金华市`,`衢州市`,`舟山市`,`台州市`,`丽水市`],安徽省:[`合肥市`,`芜湖市`,`蚌埠市`,`淮南市`,`马鞍山市`,`淮北市`,`铜陵市`,`安庆市`,`黄山市`,`滁州市`,`阜阳市`,`宿州市`,`六安市`,`亳州市`,`池州市`,`宣城市`],福建省:[`福州市`,`厦门市`,`莆田市`,`三明市`,`泉州市`,`漳州市`,`南平市`,`龙岩市`,`宁德市`],江西省:[`南昌市`,`景德镇市`,`萍乡市`,`九江市`,`新余市`,`鹰潭市`,`赣州市`,`吉安市`,`宜春市`,`抚州市`,`上饶市`],山东省:[`济南市`,`青岛市`,`淄博市`,`枣庄市`,`东营市`,`烟台市`,`潍坊市`,`济宁市`,`泰安市`,`威海市`,`日照市`,`临沂市`,`德州市`,`聊城市`,`滨州市`,`菏泽市`],河南省:[`郑州市`,`开封市`,`洛阳市`,`平顶山市`,`安阳市`,`鹤壁市`,`新乡市`,`焦作市`,`濮阳市`,`许昌市`,`漯河市`,`三门峡市`,`南阳市`,`商丘市`,`信阳市`,`周口市`,`驻马店市`,`济源市`],湖北省:[`武汉市`,`黄石市`,`十堰市`,`宜昌市`,`襄阳市`,`鄂州市`,`荆门市`,`孝感市`,`荆州市`,`黄冈市`,`咸宁市`,`随州市`,`恩施土家族苗族自治州`,`仙桃市`,`潜江市`,`天门市`,`神农架林区`],湖南省:[`长沙市`,`株洲市`,`湘潭市`,`衡阳市`,`邵阳市`,`岳阳市`,`常德市`,`张家界市`,`益阳市`,`郴州市`,`永州市`,`怀化市`,`娄底市`,`湘西土家族苗族自治州`],广东省:[`广州市`,`韶关市`,`深圳市`,`珠海市`,`汕头市`,`佛山市`,`江门市`,`湛江市`,`茂名市`,`肇庆市`,`惠州市`,`梅州市`,`汕尾市`,`河源市`,`阳江市`,`清远市`,`东莞市`,`中山市`,`潮州市`,`揭阳市`,`云浮市`],广西壮族自治区:[`南宁市`,`柳州市`,`桂林市`,`梧州市`,`北海市`,`防城港市`,`钦州市`,`贵港市`,`玉林市`,`百色市`,`贺州市`,`河池市`,`来宾市`,`崇左市`],海南省:[`海口市`,`三亚市`,`三沙市`,`儋州市`,`五指山市`,`琼海市`,`文昌市`,`万宁市`,`东方市`,`定安县`,`屯昌县`,`澄迈县`,`临高县`,`白沙黎族自治县`,`昌江黎族自治县`,`乐东黎族自治县`,`陵水黎族自治县`,`保亭黎族苗族自治县`,`琼中黎族苗族自治县`],四川省:[`成都市`,`自贡市`,`攀枝花市`,`泸州市`,`德阳市`,`绵阳市`,`广元市`,`遂宁市`,`内江市`,`乐山市`,`南充市`,`眉山市`,`宜宾市`,`广安市`,`达州市`,`雅安市`,`巴中市`,`资阳市`,`阿坝藏族羌族自治州`,`甘孜藏族自治州`,`凉山彝族自治州`],贵州省:[`贵阳市`,`六盘水市`,`遵义市`,`安顺市`,`毕节市`,`铜仁市`,`黔西南布依族苗族自治州`,`黔东南苗族侗族自治州`,`黔南布依族苗族自治州`],云南省:[`昆明市`,`曲靖市`,`玉溪市`,`保山市`,`昭通市`,`丽江市`,`普洱市`,`临沧市`,`楚雄彝族自治州`,`红河哈尼族彝族自治州`,`文山壮族苗族自治州`,`西双版纳傣族自治州`,`大理白族自治州`,`德宏傣族景颇族自治州`,`怒江傈僳族自治州`,`迪庆藏族自治州`],西藏自治区:[`拉萨市`,`日喀则市`,`昌都市`,`林芝市`,`山南市`,`那曲市`,`阿里地区`],陕西省:[`西安市`,`铜川市`,`宝鸡市`,`咸阳市`,`渭南市`,`延安市`,`汉中市`,`榆林市`,`安康市`,`商洛市`],甘肃省:[`兰州市`,`嘉峪关市`,`金昌市`,`白银市`,`天水市`,`武威市`,`张掖市`,`平凉市`,`酒泉市`,`庆阳市`,`定西市`,`陇南市`,`临夏回族自治州`,`甘南藏族自治州`],青海省:[`西宁市`,`海东市`,`海北藏族自治州`,`黄南藏族自治州`,`海南藏族自治州`,`果洛藏族自治州`,`玉树藏族自治州`,`海西蒙古族藏族自治州`],宁夏回族自治区:[`银川市`,`石嘴山市`,`吴忠市`,`固原市`,`中卫市`],新疆维吾尔自治区:[`乌鲁木齐市`,`克拉玛依市`,`吐鲁番市`,`哈密市`,`昌吉回族自治州`,`博尔塔拉蒙古自治州`,`巴音郭楞蒙古自治州`,`阿克苏地区`,`克孜勒苏柯尔克孜自治州`,`喀什地区`,`和田地区`,`伊犁哈萨克自治州`,`塔城地区`,`阿勒泰地区`,`石河子市`,`阿拉尔市`,`图木舒克市`,`五家渠市`,`北屯市`,`铁门关市`,`双河市`,`可克达拉市`,`昆玉市`,`胡杨河市`,`新星市`],香港特别行政区:[`香港`],澳门特别行政区:[`澳门`],台湾省:[`台北市`,`新北市`,`桃园市`,`台中市`,`台南市`,`高雄市`,`新竹市`,`嘉义市`]},be=`北京市.天津市.上海市.重庆市.河北省.山西省.内蒙古自治区.辽宁省.吉林省.黑龙江省.江苏省.浙江省.安徽省.福建省.江西省.山东省.河南省.湖北省.湖南省.广东省.广西壮族自治区.海南省.四川省.贵州省.云南省.西藏自治区.陕西省.甘肃省.青海省.宁夏回族自治区.新疆维吾尔自治区.香港特别行政区.澳门特别行政区.台湾省`.split(`.`),xe=[`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 Se(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=be.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 Ce={class:`apply-form-page`},we={class:`form-page-header flex-shrink-0 mb-3`},Te={class:`mb-0 form-page-title`},Ee={key:0,class:`text-secondary prototype-subtitle mb-0 mt-2`},De={key:1,class:`text-danger small mb-0 mt-2`},Oe={key:2,class:`text-warning small mb-0 mt-2`},ke={key:0,class:`apply-form-scroll`},Ae={class:`card mb-0`},je={class:`card-body`},Me={class:`application-status-mark`,"aria-hidden":`true`},Ne={key:0,viewBox:`0 0 24 24`,width:`22`,height:`22`,fill:`none`},Pe={key:1,viewBox:`0 0 24 24`,width:`22`,height:`22`,fill:`none`},Fe={class:`application-status-copy`},Ie={class:`apply-contact-panel`,"aria-label":`咨询电话`},Le=[`href`],Re=[`href`],ze={key:0,class:`col-md-4`},Be={class:`form-label`,id:`trackFieldLabel`},Ve={key:0,class:`text-danger`},He={key:1,class:`signup-field-title-supplement ms-1 fw-normal text-secondary`},Ue={class:`track-custom-select w-100`},We=[`required`,`disabled`],Ge=[`value`],Ke={class:`dropdown w-100`},qe=[`disabled`],Je={class:`track-toggle-label text-truncate`},Ye={key:0,class:`track-selected-note`},Xe={class:`dropdown-menu w-100 border shadow-sm rounded-2 py-0 my-1 track-custom-menu`},Ze=[`onClick`],Qe={class:`track-pick-inline`},$e={class:`text-body`},et={key:0,class:`track-custom-note`},tt={key:0,class:`text-secondary prototype-subtitle d-block`},nt={key:1,class:`col-12`},rt={class:`form-label`},it={key:0,class:`text-danger`},at={key:1,class:`signup-field-title-supplement ms-1 fw-normal text-secondary`},ot=[`accept`,`disabled`],st={key:0,class:`text-secondary prototype-subtitle d-block mt-1`},ct={key:1,class:`supporting-file-list mt-2`,"aria-live":`polite`},lt={class:`supporting-file-meta`},ut=[`title`],dt={class:`supporting-file-size`},ft={class:`supporting-file-actions`},pt=[`onClick`],mt=[`disabled`,`onClick`],ht={class:`text-secondary prototype-subtitle d-block`},gt={key:2,class:`invalid-feedback d-block`},_t={key:2,class:`col-12`},vt={class:`form-label`},yt={key:0,class:`text-danger`},bt={key:1,class:`signup-field-title-supplement ms-1 fw-normal text-secondary`},xt=[`accept`,`disabled`],St={key:0,class:`text-secondary prototype-subtitle d-block mt-1`},Ct={key:1,class:`supporting-file-list mt-2`,"aria-live":`polite`},wt={class:`supporting-file-meta`},Tt=[`title`],Et={class:`supporting-file-size`},Dt={class:`supporting-file-actions`},Ot=[`onClick`],kt=[`disabled`,`onClick`],At={class:`text-secondary prototype-subtitle d-block`},jt={key:2,class:`invalid-feedback d-block`},Mt={class:`form-label`},Nt={key:0,class:`text-danger`},Pt={key:1,class:`signup-field-title-supplement ms-1 fw-normal text-secondary`},Ft=[`onUpdate:modelValue`,`required`,`disabled`],It={value:``,disabled:``},Lt=[`value`],Rt={class:`invalid-feedback`},zt={key:0,class:`text-secondary prototype-subtitle d-block`},Bt={class:`form-label`},Vt={key:0,class:`text-danger`},Ht={key:1,class:`signup-field-title-supplement ms-1 fw-normal text-secondary`},Ut=[`required`,`disabled`],Wt={value:``,disabled:``},Gt=[`value`],Kt={class:`invalid-feedback`},qt={key:0,class:`text-secondary prototype-subtitle d-block`},Jt={class:`form-label`},Yt={key:0,class:`text-danger`},Xt={key:1,class:`signup-field-title-supplement ms-1 fw-normal text-secondary`},Zt={class:`d-flex flex-wrap align-items-center gap-2 mb-1`},Qt=[`disabled`],$t={key:0,class:`badge rounded-pill px-3 py-2 promise-signed-badge`},en={key:0,class:`text-secondary prototype-subtitle d-block mt-1`},tn={class:`form-check`},nn=[`id`,`onUpdate:modelValue`,`required`,`disabled`],rn=[`for`],an={key:0,class:`text-danger ms-1`},on={key:1,class:`signup-field-title-supplement ms-1 fw-normal text-secondary`},sn={key:0,class:`text-secondary prototype-subtitle d-block mt-1`},cn={class:`form-label`},ln={key:0,class:`text-danger`},un={key:1,class:`signup-field-title-supplement ms-1 fw-normal text-secondary`},dn=[`onUpdate:modelValue`,`required`,`disabled`],fn={key:0,class:`d-flex flex-wrap align-items-baseline gap-2 mt-1 w-100`},pn={key:0,class:`apply-textarea-placeholder-hint mb-0`},mn={key:1,class:`text-secondary prototype-subtitle intro-char-count mb-0 ms-auto`},hn={class:`form-label`},gn={key:0,class:`text-danger`},_n={key:1,class:`signup-field-title-supplement ms-1 fw-normal text-secondary`},vn=[`onUpdate:modelValue`,`type`,`required`,`disabled`,`placeholder`,`pattern`,`autocomplete`],yn={class:`invalid-feedback`},bn={key:0,class:`text-secondary prototype-subtitle d-block`},xn={class:`col-12 apply-form-actions mt-3 pt-3 border-top d-flex gap-2 flex-wrap`},Sn=[`disabled`],Cn=[`disabled`],wn={class:`modal-dialog modal-dialog-centered promise-sign-modal`},Tn={class:`modal-content promise-sign-sheet`},En={class:`modal-body pt-2`},Dn={class:`promise-doc-paper`},On={class:`promise-doc-heading text-center`},kn={class:`promise-doc-scroll`},An=[`innerHTML`],jn={class:`promise-doc-signblock`},Mn={class:`promise-doc-signrow`},Nn={class:`promise-sig-wrap`},Pn={class:`promise-sig-box`},Fn={class:`promise-doc-daterow`},In={class:`promise-doc-dateline`},Ln={class:`modal-dialog modal-dialog-centered notice-modal-dialog`},Rn={class:`modal-body notice-modal-body`},zn={class:`notice-icon`,"aria-hidden":`true`},Bn={key:0,viewBox:`0 0 24 24`,width:`36`,height:`36`,fill:`none`,"aria-hidden":`true`},Vn={key:1,viewBox:`0 0 24 24`,width:`36`,height:`36`,fill:`none`,"aria-hidden":`true`},Hn={class:`notice-title`},Un={key:0,class:`notice-text text-break`,style:{"white-space":`pre-wrap`}},Wn=20*1024*1024,Gn=`^1[3-9]\\d{9}$`,Kn=`

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

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

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

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

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

`,qn=2097152,w=fe(g({__name:`ApplyFormView`,setup(a){let g=ue,fe=le(),b=ce(),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 oe()}function E(){let e=x.value;return e?`?competition_slug=${encodeURIComponent(e)}`:``}function Jn(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 Yn=Promise.resolve();async function D(e,t){let n=()=>fetch(e,t),r=Yn.then(n,n);return Yn=r.then(()=>void 0,()=>void 0),r}function O(){localStorage.removeItem(se);let e=x.value;e?fe.push({name:`participant-login`,params:{slug:e},query:{redirect:b.fullPath}}):fe.push(`/c`)}let k=l(Se([]));function Xn(e){let t=xe.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 Zn(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 Qn(e){return k.value.find(t=>t.type===`file`&&t.key===e)}function $n(e){return Xn(e).map(e=>`.`+e).join(`,`)}let A=l([]),er=l(!1),tr=l(``),nr=l(``),rr=d(()=>nr.value.trim()||Kn),ir=l(he()),j=l(``),M=m({});function ar(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 or=d(()=>`jscc_signup_form_draft_v2_${x.value||`x`}`),sr=l(`draft`),cr=l(``),N=l(!0),P=d(()=>sr.value===`submitted`),lr=d(()=>zr(cr.value)),ur=d(()=>P.value&&N.value?`报名已提交,可继续修改`:P.value?`报名已提交,已锁定`:N.value?`报名信息未提交`:`报名未提交,当前不可编辑`),dr=d(()=>P.value&&N.value?`${lr.value?`上次提交时间:${lr.value}。`:``}在报名截止且没有任一评委提交评分前,你仍可修改资料、增删附件,并点击“更新报名”覆盖提交。评审开始后报名会自动锁定,请保持联系方式畅通。`:P.value?`${lr.value?`提交时间:${lr.value}。`:``}报名已因截止或评审记录产生而锁定,不能再修改资料、增删附件或重复提交。后续请等待赛事组委会通知;如需更正请联系组委会。`:N.value?`请完整填写报名信息、上传商业计划书并签署承诺书;点击“保存”只暂存草稿,点击“提交报名”后才进入已提交状态。`:`当前报名窗口已关闭或报名已被锁定,无法新建、保存或提交报名。如认为状态异常,请联系赛事组委会。`),fr=l(!1),pr=l(null),mr=l(null),hr=d(()=>{let e=M.track,t=A.value.find(t=>t.track_code===e);return t?t.title:e||`请选择主题赛道`}),gr=d(()=>M.track?`text-body`:`text-secondary`),_r=d(()=>{let e=M.track;return(A.value.find(t=>t.track_code===e)?.description??``).trim()});function vr(e){return(e??``).trim()}function yr(e){M.track=e,fr.value=!1;let t=S(mr);t&&g.getInstance(t)?.hide()}let F=d(()=>M.location_country===`中国`),br=d(()=>M.location_country===`海外`),xr=d(()=>be.map(e=>({label:e,value:e}))),Sr=d(()=>{let e=M.location_province;return e?(ye[e]||[]).map(e=>({label:e,value:e})):[]});function Cr(){br.value?(M.location_province=``,M.location_city=``):F.value||(M.location_province=``,M.location_city=``,M.oversea_country=``)}u(()=>M.location_country,()=>{Cr()}),u(()=>M.location_province,(e,t)=>{F.value&&e!==t&&(t==null||String(t).trim()===``||(M.location_city=``))}),u(()=>M.entry_group,e=>{e===`创新组`&&(M.company_name=``)});let I=l([]),L=l([]),R=l([]),z=l(!1),B=l(``),V=l(``),wr=l(``),Tr=l(``),H=l(!1),U=d(()=>!N.value),Er=l(null),Dr=l(null),Or=l(null),kr=d(()=>(M.intro||``).length),Ar=d(()=>pe(ir.value,tr.value)),jr=d(()=>{let e=ir.value.apply?.headerSubtitle;return me(e)?String(e).trim():``});function Mr(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 W(e){return e.type===`textarea`||e.type===`file`||e.type===`checkbox`?`col-12`:`col-md-4`}function Nr(e){return e.type===`textarea`?String(e.placeholder??``).trim():``}function Pr(e){return e.type===`file`?!0:e.key===`company_name`?M.entry_group!==`创新组`:e.key===`location_province`||e.key===`location_city`?F.value:e.key===`oversea_country`?br.value:!0}function G(e){if(e.key===`location_province`||e.key===`location_city`)return F.value;if(e.key===`oversea_country`)return br.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 Fr=d(()=>k.value.filter(e=>Pr(e)));function Ir(e){return e.key===`track`?A.value.map(e=>({label:e.title,value:e.track_code})):e.key===`location_province`?xr.value:e.key===`location_city`&&F.value?Sr.value:e.options??[]}function Lr(e){return e.key===`location_city`&&F.value}function Rr(e){return e>=1024*1024?`${(e/1024/1024).toFixed(1).replace(/\.0$/,``)}M`:e>=1024?`${Math.ceil(e/1024)}K`:`${e}B`}function K(e){return e.file?e.file.name:e.original_name||``}function zr(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 Br(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 Vr(e){return`请选择${e.label}`}function Hr(e){let t=e.message||``,n=e.errors;return n&&Object.keys(n).length?`${t}\n${JSON.stringify(n)}`:t||`操作失败`}let Ur=l(null),Wr=l(`提示`),Gr=l(``),Kr=l(!1);function q(e,t=`提示`,n=`warning`){return Wr.value=t,Gr.value=e,Kr.value=n===`success`,new Promise(e=>{i(()=>{let t=Ur.value;if(!t){e();return}t.addEventListener(`hidden.bs.modal`,()=>e(),{once:!0}),de.getOrCreateInstance(t).show()})})}function qr(e){return e===`navigateTo`||e===`reLaunch`||e===`switchTab`?e:`redirectTo`}function Jr(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:qr(e.method)}:null}let t=typeof e.redirect_url==`string`?e.redirect_url.trim():``;return t?{type:`web`,redirectUrl:t}:null}let Yr=null;function Xr(){if(window.wx?.miniProgram)return Promise.resolve(window.wx);if(Yr)return Yr;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(()=>{Yr=null});return Yr=e,e}async function Zr(e,t){try{let n=(await Xr()).miniProgram?.[t];return typeof n==`function`?(n({url:e}),!0):!1}catch{return!1}}let Qr=l(null),J=l(null),$r=l(``),ei=l(!0),Y=null,X=520,Z=140,ti=!1,ni=!1,ri=null,ii=null;function ai(){ri?.abort(),ri=null}let oi=d(()=>M.commitment_accepted===`1`&&String(M.promise_signature??``).trim()!==``),si=d(()=>{let e=tr.value.trim();return e?`${e} 赛事承诺书`:`赛事承诺书`});function ci(e){return`${e.getFullYear()}年${e.getMonth()+1}月${e.getDate()}日`}function li(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 ui(){let e=J.value;if(!e)return;let t=e.closest(`.promise-sig-wrap`),n=window.devicePixelRatio||1,r=window.getComputedStyle(e);X=Math.max(280,Math.floor(t?.clientWidth||520)),Z=Math.max(76,Math.floor(parseFloat(r.height)||110)),e.style.width=`${X}px`,e.style.height=`${Z}px`,e.width=Math.floor(X*n),e.height=Math.floor(Z*n),Y=e.getContext(`2d`),Y&&(Y.setTransform(1,0,0,1,0,0),Y.scale(n,n),Y.fillStyle=`#ffffff`,Y.fillRect(0,0,X,Z),Y.strokeStyle=`#111111`,Y.lineWidth=2,Y.lineCap=`round`,Y.lineJoin=`round`,ni=!1,ei.value=!0)}function di(){let e=String(M.promise_signature??``).trim();if(!e||!Y)return;let t=new Image;t.onload=()=>{Y&&(Y.drawImage(t,0,0,X,Z),ni=!0,ei.value=!1)},t.src=e}function fi(){let e=J.value;if(!e||!Y)return;ai(),ri=new AbortController;let{signal:t}=ri,n=t=>{if(`touches`in t&&t.preventDefault(),!Y)return;ti=!0;let n=li(t,e);Y.beginPath(),Y.moveTo(n.x,n.y)},r=t=>{if(!ti||!Y)return;`touches`in t&&t.preventDefault();let n=li(t,e);Y.lineTo(n.x,n.y),Y.stroke(),ni=!0,ei.value=!1},i=()=>{ti=!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 pi(){$r.value=ci(new Date);let e=t=>{if(!J.value){t<40&&requestAnimationFrame(()=>e(t+1));return}ui(),fi(),String(M.promise_signature??``).trim()&&M.commitment_accepted===`1`&&di()};i(()=>{requestAnimationFrame(()=>e(0))})}function mi(e){ii?.();let t=()=>{pi()},n=()=>{ai()};e.addEventListener(`shown.bs.modal`,t),e.addEventListener(`hidden.bs.modal`,n),ii=()=>{e.removeEventListener(`shown.bs.modal`,t),e.removeEventListener(`hidden.bs.modal`,n),ii=null}}u(Qr,e=>{ii?.(),e&&mi(e)},{flush:`post`});function hi(){if(U.value)return;let e=Qr.value;e&&de.getOrCreateInstance(e).show()}function gi(){ui(),fi()}function _i(){let e=J.value;if(!ni||!e){q(`请先在签名区域内手写签名后再确认。`,`请确认`,`warning`);return}let t=e.toDataURL(`image/png`);if(t.length>qn){q(`签名数据过大,请清除后重新签名或联系管理员。`,`提示`,`warning`);return}M.promise_signature=t,M.commitment_accepted=`1`;let n=Qr.value;n&&de.getInstance(n)?.hide()}function vi(){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 yi(e,t,n,r){let i=Xn(r),a=Zn(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>Wn);return l?{ok:!1,feedback:`“${l.name}”大小不能超过20M`}:{ok:!0,feedback:``}}function bi(){return k.value.some(e=>e.key===`plan`&&e.type===`file`)}function xi(){return k.value.some(e=>e.key===`supporting`&&e.type===`file`)}function Q(){if(!bi())return S(Dr)?.setCustomValidity(``),!0;let e=Qn(`plan`),t=yi(I.value,`请上传商业计划书`,!1,e);return wr.value=t.feedback,S(Dr)?.setCustomValidity(t.ok?``:`missing`),t.ok}function $(){if(!xi())return S(Or)?.setCustomValidity(``),!0;let e=Qn(`supporting`),t=yi(L.value,`文件格式或大小不符合要求`,!0,e);return Tr.value=t.feedback,S(Or)?.setCustomValidity(t.ok?``:`bad`),t.ok}function Si(){H.value=!0,Q(),$();let e=k.value.find(e=>e.key===`track`);if(e&&Pr(e)){fr.value=!M.track;let e=S(pr);e&&e.setCustomValidity(M.track?``:`请选择主题赛道`)}else fr.value=!1,S(pr)?.setCustomValidity(``);return!(Er.value?.checkValidity()??!1)||e&&G(e)&&!M.track||!Q()||!$()?!1:k.value.find(e=>e.key===`commitment_accepted`)&&(M.commitment_accepted!==`1`||!String(M.promise_signature??``).trim())?(q(`请先阅读并完成参赛承诺书的手写签署。`,`提示`,`warning`),!1):!0}async function Ci(e){let t=localStorage.getItem(se);if(!t)return;let n=(e===`plan`?I.value:L.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){q(Hr(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}q(`文件已上传。`,`上传成功`,`success`),e===`plan`?Q():$()}}function wi(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 Ti(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){if(!e.fromServer){window.open(t,`_blank`,`noopener,noreferrer`);return}try{let n=await fetch(t,{credentials:`omit`});if(!n.ok)throw Error(`fetch failed`);let r=await n.blob(),i=URL.createObjectURL(r);e.localBlobUrl=i,window.open(i,`_blank`,`noopener,noreferrer`)}catch{window.open(t,`_blank`,`noopener,noreferrer`)}}}async function Ei(e,t){let n=String(e);if(R.value.includes(n))return;let r=t===`plan`?[...I.value]:[...L.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}R.value=[...R.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:Jn(!1),signal:e.signal});if(window.clearTimeout(t),n.status===401){O();return}if(n.status!==404&&!n.ok){q(`删除失败`,`提示`,`warning`);return}}catch(e){q(e instanceof DOMException&&e.name===`AbortError`?`删除超时,请关闭已打开的预览窗口后重试`:`删除失败`,`提示`,`warning`);return}finally{R.value=R.value.filter(e=>e!==n)}}wi(i),r=r.filter(t=>String(t.id)!==String(e)),t===`plan`?I.value=r:L.value=r,H.value=!0,t===`plan`?Q():$()}function Di(e,t){if(!e?.length)return;let n=Zn(Qn(t)),r=t===`plan`?[...I.value]:[...L.value],i=Array.from(e),a=n===null?i.length:Math.max(0,n-r.length);if(i.length>a&&n!==null&&q(`该栏最多上传 ${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`){I.value=[...r],B.value=``;let e=S(Dr);e&&(e.value=``),H.value=!0,Q()}else{L.value=[...r],V.value=``;let e=S(Or);e&&(e.value=``),H.value=!0,$()}Ci(t)}function Oi(){return{formModel:{...M},planFileNames:I.value.map(K).filter(Boolean),supportingFileNames:L.value.map(K).filter(Boolean)}}function ki(){let e=Oi();localStorage.setItem(or.value,JSON.stringify(e)),e.planFileNames.length?B.value=`已保存商业计划书名称:${e.planFileNames.join(`、`)}`:B.value=``,e.supportingFileNames.length?V.value=`已保存其他佐证材料名称:${e.supportingFileNames.join(`、`)}`:V.value=``}function Ai(){let e=localStorage.getItem(or.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&&(B.value=`上次保存商业计划书名称:${n.join(`、`)}(浏览器限制,需重新选择后预览或删除)`);let r=t.supportingFileNames;r?.length&&(V.value=`上次保存其他佐证材料名称:${r.join(`、`)}(浏览器限制,需重新选择后预览或删除)`),Cr()}catch{localStorage.removeItem(or.value)}}async function ji(){er.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;tr.value=String(r.name??``),nr.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=Se(a),ar(k.value),ir.value=ge(r.branding_json??null);let o=ir.value.documentTitle;me(o)&&typeof document<`u`&&(document.title=o.trim()),er.value=!0}catch{j.value=`网络错误,无法加载赛事`}}function Mi(e){sr.value=e.status||`draft`,cr.value=typeof e.submitted_at==`string`?e.submitted_at:``,N.value=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`:``,Cr(),I.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}}),L.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 Ni(){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:Jn(!1),signal:e.signal});return t.status===401?(localStorage.removeItem(se),O(),!1):t.ok?(Mi(await t.json()),!0):!1}catch{return!1}finally{window.clearTimeout(t)}}async function Pi(){if(z.value)return!1;z.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:Jn(!0),body:JSON.stringify(vi()),signal:e.signal});if(t.status===401)return O(),!1;if(!t.ok)return t.json().catch(()=>({})),q(`草稿未能保存,请检查网络或稍后重试。`,`保存失败`,`warning`),!1;try{Mi(await t.json())}catch{}return!0}catch(e){return q(e instanceof DOMException&&e.name===`AbortError`?`保存超时,请稍后重试`:`草稿未能保存,请检查网络或稍后重试。`,`保存失败`,`warning`),!1}finally{window.clearTimeout(t),z.value=!1}}function Fi(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 Ii(e){let t=e.trim();return t===`The given data was invalid.`||t===`The given data was invalid`||t===`给定的数据无效。`||t===`给定的数据无效`}function Li(e,t){let n=Fi(t.errors);if(n.length>0)return n[0];let r=t.message;if(typeof r==`string`&&r.trim()){let e=r.trim();if(!Ii(e))return e}return e===404?`赛事不存在或未发布,请返回重新进入报名页。`:e===403?`当前账号无权限提交,请确认登录状态或联系管理员。`:e===409?`报名状态已变更或发生冲突,请刷新页面后重试。`:e===429?`请求过于频繁,请稍后再试。`:e>=500?`服务暂时不可用,请稍后重试。`:e===422?`提交失败,请填写完整信息。`:`报名未能提交,请检查网络或稍后重试。`}async function Ri(){let e=new AbortController,t=window.setTimeout(()=>e.abort(),3e4);try{let t=await D(`${T()}/api/applications/current/submit${E()}`,{method:`POST`,headers:Jn(!0),body:JSON.stringify(vi()),signal:e.signal});if(t.status===401)return O(),!1;if(!t.ok){let e={};try{e=await t.json()}catch{}return q(Li(t.status,e),`提交失败`,`warning`),!1}let n=await t.json();Mi(n);let r=n.success_notice,i=r?.enabled===!0&&typeof r.message==`string`?r.message.trim():``;return{channelCallback:Jr(n.channel_callback),successNoticeMessage:i}}catch(e){return q(e instanceof DOMException&&e.name===`AbortError`?`提交超时,请稍后重试`:`报名未能提交,请检查网络或稍后重试。`,`提交失败`,`warning`),!1}finally{window.clearTimeout(t)}}async function zi(){if(!localStorage.getItem(`cxxfds_token`)){O();return}await Pi()&&(ki(),q(`已保存草稿(按当前已填写信息暂存)。`,`保存成功`,`success`))}async function Bi(){if(!localStorage.getItem(`cxxfds_token`)){O();return}if(!Si())return;let e=await Ri();if(!e)return;let t=e.successNoticeMessage||`已提交报名`;if(e.channelCallback){if(await q(t,`提交成功`,`success`),e.channelCallback.type===`mini_program`){await Zr(e.channelCallback.path,e.channelCallback.method)||q(`未检测到微信小程序回跳能力,请从小程序内重新进入或联系管理员。`,`回跳失败`,`warning`);return}window.location.href=e.channelCallback.redirectUrl;return}q(t,`提交成功`,`success`)}return o(()=>{ii?.(),ai()}),s(()=>{(async()=>{await ji(),!j.value&&(await Ni()||Ai(),Cr())})()}),(i,a)=>(_(),v(`div`,Ce,[y(`div`,we,[y(`h5`,Te,h(Ar.value),1),!j.value&&jr.value?(_(),v(`p`,Ee,h(jr.value),1)):t(``,!0),j.value?(_(),v(`p`,De,h(j.value),1)):er.value&&A.value.length===0&&k.value.some(e=>e.key===`track`)?(_(),v(`p`,Oe,` 本场赛事尚未在「赛道管理」中配置可用赛道,提交时可能会失败,请联系管理员。 `)):t(``,!0)]),j.value?t(``,!0):(_(),v(`div`,ke,[y(`div`,Ae,[y(`div`,je,[y(`div`,{class:e([`application-status-panel`,P.value?`application-status-panel--submitted`:`application-status-panel--draft`]),role:`status`,"aria-live":`polite`},[y(`div`,Me,[P.value?(_(),v(`svg`,Ne,[...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`,Pe,[...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`,Fe,[y(`strong`,null,h(ur.value),1),y(`span`,null,h(dr.value),1)])],2),y(`div`,Ie,[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,Le))),128)),y(`a`,{href:`tel:${r(_e).tel}`},`技术咨询:`+h(r(_e).display),9,Re)]),y(`form`,{id:`applyForm`,ref_key:`applyFormEl`,ref:Er,class:e([`row g-3`,{"was-validated":H.value}]),onSubmit:a[4]||=ne(()=>{},[`prevent`])},[(_(!0),v(p,null,c(Fr.value,r=>(_(),v(p,{key:r.type===`file`?`f-`+r.key:r.key},[r.key===`track`?(_(),v(`div`,ze,[y(`label`,Be,[n(h(r.label)+` `,1),G(r)?(_(),v(`span`,Ve,`*`)):t(``,!0),w(r)?(_(),v(`span`,He,h(w(r)),1)):t(``,!0)]),y(`div`,Ue,[f(y(`select`,{id:`track`,ref_for:!0,ref_key:`trackHiddenSelect`,ref:pr,"onUpdate:modelValue":a[0]||=e=>M.track=e,class:`visually-hidden`,required:G(r),tabindex:`-1`,"aria-hidden":`true`,disabled:U.value},[(_(!0),v(p,null,c(A.value,e=>(_(),v(`option`,{key:e.track_code,value:e.track_code},h(e.title),9,Ge))),128))],8,We),[[ie,M.track]]),y(`div`,Ke,[y(`button`,{ref_for:!0,ref_key:`trackDropdownBtn`,ref:mr,type:`button`,class:e([`dropdown-toggle form-select track-custom-toggle editable w-100 text-start`,{"is-invalid":fr.value&&H.value}]),"aria-labelledby":`trackFieldLabel`,"aria-expanded":`false`,"data-bs-toggle":`dropdown`,"data-bs-display":`static`,"data-bs-auto-close":`true`,disabled:U.value},[y(`span`,Je,[y(`span`,{class:e(gr.value)},h(hr.value),3)])],10,qe),_r.value?(_(),v(`small`,Ye,h(_r.value),1)):t(``,!0),y(`ul`,Xe,[(_(!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=>yr(e.track_code)},[y(`span`,Qe,[y(`span`,$e,h(e.title),1),vr(e.description)?(_(),v(`span`,et,h(vr(e.description)),1)):t(``,!0)])],8,Ze)]))),128))]),a[8]||=y(`div`,{class:`invalid-feedback`},`请选择主题赛道`,-1)])]),C(r.help)?(_(),v(`small`,tt,h(C(r.help)),1)):t(``,!0)])):r.type===`file`&&r.key===`plan`?(_(),v(`div`,nt,[y(`label`,rt,[n(h(r.label)+` `,1),G(r)?(_(),v(`span`,it,`*`)):t(``,!0),w(r)?(_(),v(`span`,at,h(w(r)),1)):t(``,!0)]),y(`input`,{ref_for:!0,ref_key:`planFileInput`,ref:Dr,type:`file`,class:e([`form-control editable`,{"is-invalid":H.value&&!!wr.value}]),accept:$n(r),multiple:``,disabled:U.value,onChange:a[1]||=e=>Di(e.target.files,`plan`)},null,42,ot),y(`div`,{class:e([`apply-file-status`,{"apply-file-status--filled":I.value.length>0}])},h(Br(I.value)),3),C(r.help)?(_(),v(`small`,st,h(C(r.help)),1)):t(``,!0),I.value.length?(_(),v(`div`,ct,[(_(!0),v(p,null,c(I.value,e=>(_(),v(`div`,{key:String(e.id),class:`supporting-file-item`},[y(`div`,lt,[y(`span`,{class:`supporting-file-name`,title:K(e)},h(K(e)),9,ut),y(`span`,dt,h(Rr(e.file?e.file.size:e.size||0)),1)]),y(`div`,ft,[y(`button`,{type:`button`,class:`btn btn-sm btn-outline-primary`,onClick:t=>Ti(e)},` 查看/下载 `,8,pt),y(`button`,{type:`button`,class:`btn btn-sm btn-outline-danger`,disabled:U.value||R.value.includes(String(e.id)),onClick:t=>Ei(e.id,`plan`)},h(R.value.includes(String(e.id))?`删除中…`:`删除`),9,mt)])]))),128))])):t(``,!0),y(`small`,ht,h(B.value),1),H.value&&wr.value?(_(),v(`div`,gt,h(wr.value),1)):t(``,!0)])):r.type===`file`&&r.key===`supporting`?(_(),v(`div`,_t,[y(`label`,vt,[n(h(r.label)+` `,1),G(r)?(_(),v(`span`,yt,`*`)):t(``,!0),w(r)?(_(),v(`span`,bt,h(w(r)),1)):t(``,!0)]),y(`input`,{ref_for:!0,ref_key:`supportingFileInput`,ref:Or,type:`file`,class:e([`form-control editable`,{"is-invalid":H.value&&!!Tr.value}]),accept:$n(r),multiple:``,disabled:U.value,onChange:a[2]||=e=>Di(e.target.files,`supporting`)},null,42,xt),y(`div`,{class:e([`apply-file-status`,{"apply-file-status--filled":L.value.length>0}])},h(Br(L.value)),3),C(r.help)?(_(),v(`small`,St,h(C(r.help)),1)):t(``,!0),L.value.length?(_(),v(`div`,Ct,[(_(!0),v(p,null,c(L.value,e=>(_(),v(`div`,{key:String(e.id),class:`supporting-file-item`},[y(`div`,wt,[y(`span`,{class:`supporting-file-name`,title:K(e)},h(K(e)),9,Tt),y(`span`,Et,h(Rr(e.file?e.file.size:e.size||0)),1)]),y(`div`,Dt,[y(`button`,{type:`button`,class:`btn btn-sm btn-outline-primary`,onClick:t=>Ti(e)},` 查看/下载 `,8,Ot),y(`button`,{type:`button`,class:`btn btn-sm btn-outline-danger`,disabled:U.value||R.value.includes(String(e.id)),onClick:t=>Ei(e.id,`supporting`)},h(R.value.includes(String(e.id))?`删除中…`:`删除`),9,kt)])]))),128))])):t(``,!0),y(`small`,At,h(V.value),1),H.value&&Tr.value?(_(),v(`div`,jt,h(Tr.value),1)):t(``,!0)])):r.type===`select`&&!Lr(r)?(_(),v(`div`,{key:3,class:e(W(r))},[y(`label`,Mt,[n(h(r.label)+` `,1),G(r)?(_(),v(`span`,Nt,`*`)):t(``,!0),w(r)?(_(),v(`span`,Pt,h(w(r)),1)):t(``,!0)]),f(y(`select`,{"onUpdate:modelValue":e=>M[r.key]=e,class:`form-select editable`,required:G(r),disabled:U.value},[y(`option`,It,h(Vr(r)),1),(_(!0),v(p,null,c(Ir(r),e=>(_(),v(`option`,{key:`${r.key}-${e.value}`,value:e.value},h(e.label),9,Lt))),128))],8,Ft),[[ie,M[r.key]]]),y(`div`,Rt,`请选择`+h(r.label),1),C(r.help)?(_(),v(`small`,zt,h(C(r.help)),1)):t(``,!0)],2)):Lr(r)?(_(),v(`div`,{key:4,class:e(W(r))},[y(`label`,Bt,[n(h(r.label)+` `,1),G(r)?(_(),v(`span`,Vt,`*`)):t(``,!0),w(r)?(_(),v(`span`,Ht,h(w(r)),1)):t(``,!0)]),f(y(`select`,{"onUpdate:modelValue":a[3]||=e=>M.location_city=e,class:`form-select editable`,required:G(r),disabled:U.value||!F.value||!String(M.location_province??``).trim()},[y(`option`,Wt,h(String(M.location_province??``).trim()?Vr(r):`请先选择省份`),1),(_(!0),v(p,null,c(Ir(r),e=>(_(),v(`option`,{key:e.value,value:e.value},h(e.label),9,Gt))),128))],8,Ut),[[ie,M.location_city]]),y(`div`,Kt,`请选择`+h(r.label),1),C(r.help)?(_(),v(`small`,qt,h(C(r.help)),1)):t(``,!0)],2)):r.type===`checkbox`&&r.key===`commitment_accepted`?(_(),v(`div`,{key:5,class:e(W(r))},[y(`label`,Jt,[n(h(r.label)+` `,1),G(r)?(_(),v(`span`,Yt,`*`)):t(``,!0),w(r)?(_(),v(`span`,Xt,h(w(r)),1)):t(``,!0)]),a[9]||=y(`p`,{class:`small text-secondary mb-2`},` 请点击按钮打开承诺书全文,阅读后在文末手写签名并点击「确认签署」。 `,-1),y(`div`,Zt,[y(`button`,{type:`button`,class:`btn btn-outline-primary btn-sm editable`,disabled:U.value,onClick:hi},h(oi.value?`重新查看承诺书`:`查看并签署参赛承诺书`),9,Qt),oi.value?(_(),v(`span`,$t,`已完成签署`)):t(``,!0)]),C(r.help)?(_(),v(`small`,en,h(C(r.help)),1)):t(``,!0)],2)):r.type===`checkbox`?(_(),v(`div`,{key:6,class:e(W(r))},[y(`div`,tn,[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:G(r),disabled:U.value},null,8,nn),[[re,M[r.key]]]),y(`label`,{class:`form-check-label`,for:`signup-field-`+r.key},[n(h(r.label)+` `,1),G(r)?(_(),v(`span`,an,`*`)):t(``,!0),w(r)?(_(),v(`span`,on,h(w(r)),1)):t(``,!0)],8,rn),a[10]||=y(`div`,{class:`invalid-feedback`},`请勾选此项以继续`,-1)]),C(r.help)?(_(),v(`small`,sn,h(C(r.help)),1)):t(``,!0)],2)):r.type===`textarea`?(_(),v(`div`,{key:7,class:e(W(r))},[y(`label`,cn,[n(h(r.label)+` `,1),G(r)?(_(),v(`span`,ln,`*`)):t(``,!0),w(r)?(_(),v(`span`,un,h(w(r)),1)):t(``,!0)]),f(y(`textarea`,{"onUpdate:modelValue":e=>M[r.key]=e,class:`form-control editable`,rows:`4`,placeholder:``,required:G(r),disabled:U.value},null,8,dn),[[te,M[r.key]]]),Nr(r)||r.key===`intro`?(_(),v(`div`,fn,[Nr(r)?(_(),v(`small`,pn,h(Nr(r)),1)):t(``,!0),r.key===`intro`?(_(),v(`small`,mn,h(kr.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`||Nr(r)}])},h(C(r.help)),3)):t(``,!0)],2)):(_(),v(`div`,{key:8,class:e(W(r))},[y(`label`,hn,[n(h(r.label)+` `,1),G(r)?(_(),v(`span`,gn,`*`)):t(``,!0),w(r)?(_(),v(`span`,_n,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:G(r),disabled:U.value,placeholder:(r.placeholder??``).trim(),pattern:r.key===`contact_mobile`?Gn:void 0,autocomplete:r.key===`company_name`?`organization`:void 0},null,10,vn),[[ee,M[r.key]]]),y(`div`,yn,h(Mr(r)),1),C(r.help)?(_(),v(`small`,bn,h(C(r.help)),1)):t(``,!0)],2))],64))),128)),y(`div`,xn,[y(`button`,{type:`button`,class:`btn btn-outline-primary`,disabled:U.value||z.value,onClick:zi},h(z.value?`保存中…`:P.value?`保存修改`:`保存`),9,Sn),y(`button`,{type:`button`,class:`btn btn-success`,disabled:U.value,onClick:Bi},h(P.value?`更新报名`:`提交报名`),9,Cn)])],34)])])])),!j.value&&k.value.some(e=>e.key===`commitment_accepted`)?(_(),v(`div`,{key:1,id:`promiseSignModal`,ref_key:`promiseSignModalRef`,ref:Qr,class:`modal fade`,tabindex:`-1`,"aria-hidden":`true`,"data-bs-backdrop":`static`},[y(`div`,wn,[y(`div`,Tn,[y(`div`,En,[y(`div`,Dn,[y(`h1`,On,h(si.value),1),y(`div`,kn,[y(`div`,{class:`promise-doc-body promise-doc-body--rich`,innerHTML:rr.value},null,8,An)]),y(`div`,jn,[y(`div`,Mn,[a[11]||=y(`span`,{class:`promise-doc-signlabel`},`参赛人签名:`,-1),y(`div`,Nn,[y(`div`,Pn,[y(`canvas`,{ref_key:`promiseCanvasRef`,ref:J,class:`promise-sig-canvas`,width:`520`,height:`140`,"aria-label":`手写签名区域`},null,512),y(`span`,{class:e([`promise-sig-hint`,{"d-none":!ei.value}])},`请在框内手写签名`,2)]),y(`div`,{class:`promise-sig-tools`},[y(`button`,{type:`button`,class:`btn btn-sm btn-outline-secondary`,onClick:gi},` 清除签名 `)])])]),y(`div`,Fn,[y(`span`,In,[a[12]||=n(`日期:`,-1),y(`strong`,null,h($r.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:_i},`确认签署`)])])])])])],512)):t(``,!0),y(`div`,{ref_key:`noticeModalEl`,ref:Ur,id:`applyNoticeModal`,class:`modal fade`,tabindex:`-1`,"aria-hidden":`true`},[y(`div`,Ln,[y(`div`,{class:e([`modal-content notice-modal-content`,Kr.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`,Rn,[y(`div`,zn,[Kr.value?(_(),v(`svg`,Bn,[...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`,Vn,[...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`,Hn,h(Wr.value),1),Gr.value.trim()?(_(),v(`p`,Un,h(Gr.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-844f6d45`]]),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-DiCgHnzp.js b/public/admin/assets/CompetitionFormView-DqNsX39q.js similarity index 99% rename from public/admin/assets/CompetitionFormView-DiCgHnzp.js rename to public/admin/assets/CompetitionFormView-DqNsX39q.js index d181604..0efc500 100644 --- a/public/admin/assets/CompetitionFormView-DiCgHnzp.js +++ b/public/admin/assets/CompetitionFormView-DqNsX39q.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 N,in as P,jt as ce,k as le,kt as ue,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{_ as xe,c as Se,i as Ce,l as L,o as we,s as R}from"./index-BCZX_WPn.js";import{t as Te}from"./_plugin-vue_export-helper-CXTkFu_Z.js";import{c as Ee,i as De,l as Oe,n as ke,o as Ae,r as je,s as Me,t as Ne}from"./competitions-MDk8yj3i.js";import{t as Pe}from"./adminCompetition-C0UX3UwR.js";import{n as Fe,r as Ie,t as Le}from"./competitionBranding-DKFkcrfF.js";import{n as Re}from"./publicSourceChannels-CrEd0c_S.js";import{i as ze,n as Be,r as Ve,t as He}from"./signupChannels-DWlgqvdP.js";import{a as Ue,n as We,r as Ge,t as Ke}from"./applications-GU2eDYYi.js";async function qe(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 Je(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 Ye(e,t){let{data:n}=await Ce.post(`/competitions/${e}/form-schemas`,t);return n}async function Xe(e,t,n){let{data:r}=await Ce.patch(`/competitions/${e}/form-schemas/${t}`,n);return r}async function Ze(e,t){await Ce.delete(`/competitions/${e}/form-schemas/${t}`)}var Qe=`commitment_accepted`,$e=`commitment_promise`,et={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:Qe,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:[]};et.all_supported_form_keys=[...et.scalar_field_keys,...et.file_field_keys,et.commitment_field_key];var tt=et;function nt(e){e&&Array.isArray(e.scalar_field_keys)&&(tt=e)}function rt(e){let t=tt;return t.scalar_type_hints[e]??t.generic_scalar_types}function it(e,t){let n=e.trim(),r=t.trim();if(!n)return`存在未填写「字段 key」的项(须与 applications 表列名一致)`;let i=tt;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=rt(n);return!r||!a.includes(r)?`字段「${n}」类型须为:${a.join(` / `)}`:null}function at(e){Object.getOwnPropertySymbols(e).forEach(t=>{ui[t]=e[t]})}function ot(e,t=``){return{type:0,source:t,children:e,helpers:new Set,components:[],directives:[],hoists:[],imports:[],cached:[],temps:0,codegenNode:void 0,loc:hi}}function st(e,t,n,r,i,a,o,s=!1,c=!1,l=!1,u=hi){return e&&(s?(e.helper(Ar),e.helper(Tt(e.inSSR,l))):e.helper(wt(e.inSSR,l)),o&&e.helper(Hr)),{type:13,tag:t,props:n,children:r,patchFlag:i,dynamicProps:a,directives:o,isBlock:s,disableTracking:c,isComponent:l,loc:u}}function ct(e,t=hi){return{type:17,loc:t,elements:e}}function lt(e,t=hi){return{type:15,loc:t,properties:e}}function ut(e,t){return{type:16,loc:hi,key:A(e)?dt(e,!0):e,value:t}}function dt(e,t=!1,n=hi,r=0){return{type:4,loc:n,content:e,isStatic:t,constType:t?3:r}}function ft(e,t){return{type:5,loc:t,content:A(e)?dt(e,!1,t):e}}function pt(e,t=hi){return{type:8,loc:t,children:e}}function mt(e,t=[],n=hi){return{type:14,loc:n,callee:e,arguments:t}}function ht(e,t=void 0,n=!1,r=!1,i=hi){return{type:18,params:e,returns:t,newline:n,isSlot:r,loc:i}}function gt(e,t,n,r=!0){return{type:19,test:e,consequent:t,alternate:n,newline:r,loc:hi}}function _t(e,t,n=!1,r=!1){return{type:20,index:e,value:t,needPauseTracking:n,inVOnce:r,needArraySpread:!1,loc:hi}}function vt(e){return{type:21,body:e,loc:hi}}function yt(e){return{type:22,elements:e,loc:hi}}function bt(e,t,n){return{type:23,test:e,consequent:t,alternate:n,loc:hi}}function xt(e,t){return{type:24,left:e,right:t,loc:hi}}function St(e){return{type:25,expressions:e,loc:hi}}function Ct(e){return{type:26,returns:e,loc:hi}}function wt(e,t){return e||t?Nr:Pr}function Tt(e,t){return e||t?jr:Mr}function Et(e,{helper:t,removeHelper:n,inSSR:r}){e.isBlock||(e.isBlock=!0,n(wt(r,e.isComponent)),t(Ar),t(Tt(r,e.isComponent)))}function Dt(e){return e>=97&&e<=122||e>=65&&e<=90}function Ot(e){return e===32||e===10||e===9||e===12||e===13}function kt(e){return e===47||e===62||Ot(e)}function At(e){let t=new Uint8Array(e.length);for(let n=0;n{ui[t]=e[t]})}function ot(e,t=``){return{type:0,source:t,children:e,helpers:new Set,components:[],directives:[],hoists:[],imports:[],cached:[],temps:0,codegenNode:void 0,loc:hi}}function st(e,t,n,r,i,a,o,s=!1,c=!1,l=!1,u=hi){return e&&(s?(e.helper(Ar),e.helper(Tt(e.inSSR,l))):e.helper(wt(e.inSSR,l)),o&&e.helper(Hr)),{type:13,tag:t,props:n,children:r,patchFlag:i,dynamicProps:a,directives:o,isBlock:s,disableTracking:c,isComponent:l,loc:u}}function ct(e,t=hi){return{type:17,loc:t,elements:e}}function lt(e,t=hi){return{type:15,loc:t,properties:e}}function ut(e,t){return{type:16,loc:hi,key:A(e)?dt(e,!0):e,value:t}}function dt(e,t=!1,n=hi,r=0){return{type:4,loc:n,content:e,isStatic:t,constType:t?3:r}}function ft(e,t){return{type:5,loc:t,content:A(e)?dt(e,!1,t):e}}function pt(e,t=hi){return{type:8,loc:t,children:e}}function mt(e,t=[],n=hi){return{type:14,loc:n,callee:e,arguments:t}}function ht(e,t=void 0,n=!1,r=!1,i=hi){return{type:18,params:e,returns:t,newline:n,isSlot:r,loc:i}}function gt(e,t,n,r=!0){return{type:19,test:e,consequent:t,alternate:n,newline:r,loc:hi}}function _t(e,t,n=!1,r=!1){return{type:20,index:e,value:t,needPauseTracking:n,inVOnce:r,needArraySpread:!1,loc:hi}}function vt(e){return{type:21,body:e,loc:hi}}function yt(e){return{type:22,elements:e,loc:hi}}function bt(e,t,n){return{type:23,test:e,consequent:t,alternate:n,loc:hi}}function xt(e,t){return{type:24,left:e,right:t,loc:hi}}function St(e){return{type:25,expressions:e,loc:hi}}function Ct(e){return{type:26,returns:e,loc:hi}}function wt(e,t){return e||t?Nr:Pr}function Tt(e,t){return e||t?jr:Mr}function Et(e,{helper:t,removeHelper:n,inSSR:r}){e.isBlock||(e.isBlock=!0,n(wt(r,e.isComponent)),t(Ar),t(Tt(r,e.isComponent)))}function Dt(e){return e>=97&&e<=122||e>=65&&e<=90}function Ot(e){return e===32||e===10||e===9||e===12||e===13}function kt(e){return e===47||e===62||Ot(e)}function At(e){let t=new Uint8Array(e.length);for(let n=0;n{e&&qt(e,t)});break;case`RestElement`:qt(e.argument,t);break;case`AssignmentPattern`:qt(e.left,t);break}return t}function Jt(e){return Di.includes(e.type)?Jt(e.expression):e}function Yt(e){switch(e){case`Teleport`:case`teleport`:return Er;case`Suspense`:case`suspense`:return Dr;case`KeepAlive`:case`keep-alive`:return Or;case`BaseTransition`:case`base-transition`:return kr}}function Xt(e,t,n=t.length){return Zt({offset:e.offset,line:e.line,column:e.column},t,n)}function Zt(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 rn(e){return e.type===5||e.type===2}function an(e){return e.type===7&&e.name===`pre`}function on(e){return e.type===7&&e.name===`slot`}function sn(e){return e.type===1&&e.tagType===3}function cn(e){return e.type===1&&e.tagType===2}function ln(e,t=[]){if(e&&!A(e)&&e.type===14){let n=e.callee;if(!A(n)&&Hi.has(n))return ln(e.arguments[0],t.concat(e))}return[e,t]}function un(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=ln(i);i=e[0],a=e[1],o=a[a.length-1]}if(i==null||A(i))r=lt([t]);else if(i.type===14){let e=i.arguments[0];!A(e)&&e.type===15?dn(t,e)||e.properties.unshift(t):i.callee===Qr?r=mt(n.helper(qr),[lt([t]),i]):i.arguments.unshift(lt([t])),!r&&(r=i)}else i.type===15?(dn(t,i)||i.properties.unshift(t),r=i):(r=mt(n.helper(qr),[lt([t]),i]),o&&o.callee===Zr&&(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 dn(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 fn(e,t){return`_${t}_${e.replace(/[^\w]/g,(t,n)=>t===`-`?`_`:e.charCodeAt(n).toString())}`}function pn(e,t){if(!e||Object.keys(t).length===0)return!1;switch(e.type){case 1:for(let n=0;npn(e,t));case 11:return pn(e.source,t)?!0:e.children.some(e=>pn(e,t));case 9:return e.branches.some(e=>pn(e,t));case 10:return pn(e.condition,t)?!0:e.children.some(e=>pn(e,t));case 4:return!e.isStatic&&Ai(e.content)&&!!t[e.content];case 8:return e.children.some(e=>w(e)&&pn(e,t));case 5:case 12:return pn(e.content,t);case 2:case 3:case 20:return!1;default:return!1}}function mn(e){return e.type===14&&e.callee===ci?e.arguments[1].returns:e}function hn(e){for(let t=0;t{let i=t.start.offset+n;return Pn(e,!1,Mn(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(aa,``).trim(),l=i.indexOf(c),u=c.match(ia);if(u){c=c.replace(ia,``).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 yn(e,t){return qi.slice(e,t)}function bn(e){ra.inSFCRoot&&(Ji.innerLoc=Mn(e+1,e+1)),jn(Ji);let{tag:t,ns:n}=Ji;n===0&&Gi.isPreTag(t)&&$i++,Gi.isVoidTag(t)?Sn(Ji,e):(na.unshift(Ji),(n===1||n===2)&&(ra.inXML=!0)),Ji=null}function xn(e,t,n){{let t=na[0]&&na[0].tag;t!==`script`&&t!==`style`&&e.includes(`&`)&&(e=Gi.decodeEntities(e,!1))}let r=na[0]||Ki,i=r.children[r.children.length-1];i&&i.type===2?(i.content+=e,Nn(i.loc,n)):r.children.push({type:2,content:e,loc:Mn(t,n)})}function Sn(e,t,n=!1){n?Nn(e.loc,wn(t,60)):Nn(e.loc,Cn(t,62)+1),ra.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=yn(e.innerLoc.start.offset,e.innerLoc.end.offset));let{tag:r,ns:i,children:a}=e;if(ea||(r===`slot`?e.tagType=2:Tn(e)?e.tagType=3:En(e)&&(e.tagType=1)),ra.inRCDATA||(e.children=On(a)),i===0&&Gi.isIgnoreNewlineTag(r)){let e=a[0];e&&e.type===2&&(e.content=e.content.replace(/^\r?\n/,``))}i===0&&Gi.isPreTag(r)&&$i--,ta===e&&(ea=ra.inVPre=!1,ta=null),ra.inXML&&(na[0]?na[0].ns:Gi.ns)===0&&(ra.inXML=!1);{let t=e.props;if(!ra.inSFCRoot&&Mt(`COMPILER_NATIVE_TEMPLATE`,Gi)&&e.tag===`template`&&!Tn(e)){let t=na[0]||Ki,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&&Nt(`COMPILER_INLINE_TEMPLATE`,Gi,n.loc)&&e.children.length&&(n.value={type:2,content:yn(e.children[0].loc.start.offset,e.children[e.children.length-1].loc.end.offset),loc:n.loc})}}function Cn(e,t){let n=e;for(;qi.charCodeAt(n)!==t&&n=0;)n--;return n}function Tn({tag:e,props:t}){if(e===`template`){for(let e=0;e64&&e<91}function On(e){let t=Gi.whitespace!==`preserve`,n=!1;for(let r=0;re.type!==3);return t.length===1&&t[0].type===1&&!cn(t[0])?t[0]:null}function zn(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)&&Hn(s,n)>=2){let t=Un(s);t&&(e.props=n.hoist(t))}e.dynamicProps&&=n.hoist(e.dynamicProps)}}}else if(s.type===12&&(r?0:Bn(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++,zn(s,e,n,!1,i),t&&n.scopes.vSlot--}else if(s.type===11)zn(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 Bn(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=Hn(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:ue,addIdentifiers(e){},removeIdentifiers(e){},hoist(e){A(e)&&(e=dt(e)),E.hoists.push(e);let t=dt(`_hoisted_${E.hoists.length}`,!1,e.loc,2);return t.hoisted=e,t},cache(e,t=!1,n=!1){let r=_t(E.cached.length,e,t,n);return E.cached.push(r),r}};return E.filters=new Set,E}function Gn(e,t){let n=Wn(e,t);Kn(e,n),t.hoistStatic&&Ln(e,n),t.ssr||ree(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 ree(e,t){let{helper:n}=t,{children:r}=e;if(r.length===1){let n=Rn(e);if(n&&n.codegenNode){let r=n.codegenNode;r.type===13&&Et(r,t),e.codegenNode=r}else e.codegenNode=r[0]}else r.length>1&&(e.codegenNode=st(t,n(Tr),void 0,e.children,64,void 0,void 0,!0,void 0,!1))}function iee(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(on))return;let a=[];for(let o=0;o0,p=!a&&r!==`module`;if(oee(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(ua).join(`, `)} } = _Vue diff --git a/public/admin/assets/CompetitionListView-Cfx3WHk3.js b/public/admin/assets/CompetitionListView-yQPlRTwU.js similarity index 92% rename from public/admin/assets/CompetitionListView-Cfx3WHk3.js rename to public/admin/assets/CompetitionListView-yQPlRTwU.js index 247d79e..93a2b28 100644 --- a/public/admin/assets/CompetitionListView-Cfx3WHk3.js +++ b/public/admin/assets/CompetitionListView-yQPlRTwU.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{l as g}from"./index-BCZX_WPn.js";import{t as _}from"./_plugin-vue_export-helper-CXTkFu_Z.js";import{a as v}from"./competitions-MDk8yj3i.js";import{t as y}from"./adminCompetition-C0UX3UwR.js";import{t as b}from"./competitionAdminLabels-D6x-u-ir.js";var x={class:`page-header`},S={key:0,class:`pager`},C={class:`total`},w=_(d({__name:`CompetitionListView`,setup(d){let _=c([]),w=y(),T=c(!1),E=c(1),D=c(1),O=c(0),k=c(15);async function A(){T.value=!0;try{let e=await v({page:E.value,per_page:k.value});_.value=e.data,D.value=e.meta.last_page,O.value=e.meta.total,k.value=e.meta.per_page}catch(e){_.value=[],g.error(e instanceof Error?e.message:`加载失败`)}finally{T.value=!1}}function j(e){e<1||e>D.value||(E.value=e,A())}function M(e){if(!e)return`—`;let t=new Date(e);return Number.isNaN(t.getTime())?e:t.toLocaleString()}return o(()=>{A()}),(o,c)=>{let d=s(`el-button`),g=s(`RouterLink`),v=s(`el-table-column`),y=s(`el-tag`),A=s(`el-table`),N=s(`el-pagination`),P=s(`el-card`),F=i(`loading`);return f(),m(`div`,null,[h(`div`,x,[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(A,{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(M(e.signup_open_at??null)),1)]),_:1}),r(v,{label:`报名截止`,"min-width":`160`},{default:p(({row:e})=>[t(u(M(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(w).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,T.value]]),D.value>1?(f(),m(`div`,S,[h(`span`,C,`共 `+u(O.value)+` 条`,1),r(N,{background:``,layout:`prev, pager, next`,"current-page":E.value,"page-size":k.value,total:O.value,onCurrentChange:j},null,8,[`current-page`,`page-size`,`total`])])):e(``,!0)]),_:1})])}}}),[[`__scopeId`,`data-v-bee3a1d5`]]);export{w 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{l as g}from"./index-BFG9yM8q.js";import{t as _}from"./_plugin-vue_export-helper-CXTkFu_Z.js";import{a as v}from"./competitions-BS1Y5XBa.js";import{t as y}from"./adminCompetition-dnUmBw9X.js";import{t as b}from"./competitionAdminLabels-D6x-u-ir.js";var x={class:`page-header`},S={key:0,class:`pager`},C={class:`total`},w=_(d({__name:`CompetitionListView`,setup(d){let _=c([]),w=y(),T=c(!1),E=c(1),D=c(1),O=c(0),k=c(15);async function A(){T.value=!0;try{let e=await v({page:E.value,per_page:k.value});_.value=e.data,D.value=e.meta.last_page,O.value=e.meta.total,k.value=e.meta.per_page}catch(e){_.value=[],g.error(e instanceof Error?e.message:`加载失败`)}finally{T.value=!1}}function j(e){e<1||e>D.value||(E.value=e,A())}function M(e){if(!e)return`—`;let t=new Date(e);return Number.isNaN(t.getTime())?e:t.toLocaleString()}return o(()=>{A()}),(o,c)=>{let d=s(`el-button`),g=s(`RouterLink`),v=s(`el-table-column`),y=s(`el-tag`),A=s(`el-table`),N=s(`el-pagination`),P=s(`el-card`),F=i(`loading`);return f(),m(`div`,null,[h(`div`,x,[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(A,{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(M(e.signup_open_at??null)),1)]),_:1}),r(v,{label:`报名截止`,"min-width":`160`},{default:p(({row:e})=>[t(u(M(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(w).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,T.value]]),D.value>1?(f(),m(`div`,S,[h(`span`,C,`共 `+u(O.value)+` 条`,1),r(N,{background:``,layout:`prev, pager, next`,"current-page":E.value,"page-size":k.value,total:O.value,onCurrentChange:j},null,8,[`current-page`,`page-size`,`total`])])):e(``,!0)]),_:1})])}}}),[[`__scopeId`,`data-v-bee3a1d5`]]);export{w as default}; \ No newline at end of file diff --git a/public/admin/assets/CompetitionManageLayout-MpAD2hVv.js b/public/admin/assets/CompetitionManageLayout-D7896D_2.js similarity index 95% rename from public/admin/assets/CompetitionManageLayout-MpAD2hVv.js rename to public/admin/assets/CompetitionManageLayout-D7896D_2.js index dd52296..de52310 100644 --- a/public/admin/assets/CompetitionManageLayout-MpAD2hVv.js +++ b/public/admin/assets/CompetitionManageLayout-D7896D_2.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{p as g}from"./api-Cy3G2Clw.js";import{l as _,n as te,o as ne,s as v,y}from"./index-BCZX_WPn.js";import{t as b}from"./_plugin-vue_export-helper-CXTkFu_Z.js";import{n as re}from"./auth-D03dbBG8.js";import{t as ie}from"./adminCompetition-C0UX3UwR.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=v(),K=te(),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&&y.getOrCreateInstance(e).show()}async function de(e){$.value=!0;try{await re(e),_.success(`密码已更新`);let t=document.getElementById(`managePasswordModal`);t&&y.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{p as g}from"./api-Cy3G2Clw.js";import{l as _,n as te,o as ne,s as v,y}from"./index-BFG9yM8q.js";import{t as b}from"./_plugin-vue_export-helper-CXTkFu_Z.js";import{n as re}from"./auth-De5mltp0.js";import{t as ie}from"./adminCompetition-dnUmBw9X.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=v(),K=te(),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&&y.getOrCreateInstance(e).show()}async function de(e){$.value=!0;try{await re(e),_.success(`密码已更新`);let t=document.getElementById(`managePasswordModal`);t&&y.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-CVK6l6R-.js b/public/admin/assets/LoginView-CiXA8l_c.js similarity index 99% rename from public/admin/assets/LoginView-CVK6l6R-.js rename to public/admin/assets/LoginView-CiXA8l_c.js index 20eb603..71a1da9 100644 --- a/public/admin/assets/LoginView-CVK6l6R-.js +++ b/public/admin/assets/LoginView-CiXA8l_c.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{a as ie,m as ae,o as oe,p as se,u as ce}from"./api-Cy3G2Clw.js";import{o as le,s as m,t as ue}from"./index-BCZX_WPn.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=m(),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 se()}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{a as ie,m as ae,o as oe,p as se,u as ce}from"./api-Cy3G2Clw.js";import{o as le,s as m,t as ue}from"./index-BFG9yM8q.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=m(),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 se()}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()}${oe}`;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()}${ie}`;try{let e=ue(),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(ce,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(V.params.slug??``).trim()),U=a(S()),W=a(``),G=s(()=>b(U.value,W.value)),K=s(()=>{if(x(U.value.login.footerCopyright))return U.value.login.footerCopyright;let e=W.value.trim();return e?`版权所有:${e}`:`版权所有`});async function q(){let e=H.value;if(!e){U.value=S(),W.value=``;return}try{let t=await fetch(`${h()}/api/v1/public/competitions/by-slug/${encodeURIComponent(e)}`,{headers:{Accept:`application/json`}});if(!t.ok){U.value=S(),W.value=``;return}let n=await t.json(),r=n.data!=null&&typeof n.data==`object`&&!Array.isArray(n.data)?n.data:n;W.value=String(r.name??``),U.value=C(r.branding_json??null)}catch{U.value=S(),W.value=``}}o(H,()=>{q()},{immediate:!0});function J(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 Y(){if(typeof document>`u`)return;let e=U.value.login.themePrimary?.trim()??``,t=x(e)?/^(?:#|rgb|hsl)/i.test(e)?e:`#${e.replace(/^#/,``)}`:B;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=J(t);e&&document.body.style.setProperty(`--bs-primary-rgb`,e)}else document.body.style.removeProperty(`--primary-soft`),document.body.style.removeProperty(`--bs-primary-rgb`)}o(U,()=>Y(),{deep:!0,immediate:!0});let X=a(``),Z=s(()=>X.value||`用户`);async function Q(){let e=localStorage.getItem(g),t=h();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();X.value=r.name||r.mobile||``}catch{}}function $(){localStorage.removeItem(g),localStorage.removeItem(`cxxfds_user`);let e=H.value;e?y.push({name:`participant-login`,params:{slug:e}}):y.push(`/c`)}return r(()=>{document.body.classList.add(`prototype-page`,`user-mobile-no-menu`),Q()}),t(()=>{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`)}),(t,r)=>{let a=i(`router-link`),o=i(`router-view`);return d(),p(`div`,w,[m(`header`,T,[m(`div`,E,[m(`span`,D,c(G.value),1),m(`div`,O,[m(`button`,k,[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`,A,c(Z.value),1)]),m(`ul`,j,[m(`li`,null,[m(`a`,{class:`dropdown-item text-danger`,href:`javascript:void(0)`,onClick:u($,[`prevent`])},[...r[1]||=[m(`span`,{class:`menu-icon`},`↪`,-1),e(`退出登录 `,-1)]])])])])])]),m(`div`,M,[m(`div`,N,[m(`aside`,P,[m(`div`,F,[m(`div`,I,[m(`nav`,L,[n(a,{class:`nav-link text-start`,"active-class":`active`,to:{name:`participant-apply`,params:{slug:H.value}}},{default:f(()=>[...r[2]||=[e(` 赛事报名 `,-1)]]),_:1},8,[`to`])])])])]),m(`main`,R,[n(o)])])]),m(`footer`,z,c(K.value),1)])}}}),[[`__scopeId`,`data-v-87706cd0`]]);export{V as default}; \ No newline at end of file +import{D as e,G as t,O as n,W as r,Z as i,_t as a,at as o,b as s,in as c,k as l,m as u,q as d,st as f,w as p,x as m}from"./vue.runtime.esm-bundler-OsdSFvn7.js";import{p as h,u as g}from"./api-Cy3G2Clw.js";import{o as _,s as v}from"./index-BFG9yM8q.js";import{t as y}from"./_plugin-vue_export-helper-CXTkFu_Z.js";/* empty css *//* empty css */import{a as b,i as x,r as S,t as C}from"./competitionBranding-DKFkcrfF.js";var w={class:`participant-layout`},T={class:`navbar navbar-expand-lg layout-header`},E={class:`container-fluid px-3 px-lg-4`},D={class:`navbar-brand mb-0 prototype-title`},O={class:`dropdown`},k={class:`header-user dropdown-toggle`,type:`button`,"data-bs-toggle":`dropdown`,"aria-expanded":`false`},A={class:`header-user-name`},j={class:`dropdown-menu dropdown-menu-end header-user-menu`},M={class:`container-fluid px-3 px-lg-4 py-3 layout-main`},N={class:`row layout-main-row g-3`},P={class:`col-12 col-md-2 col-lg-2 layout-sider`},F={class:`card h-100`},I={class:`card-body`},L={class:`nav flex-column gap-2`},R={class:`col-12 col-md-10 col-lg-10 participant-main-col`},z={id:`layoutFooter`,class:`border-top bg-white text-center py-2 small text-secondary prototype-subtitle`},B=`#052d62`,V=y(l({__name:`MainLayout`,setup(l){let y=v(),V=_(),H=s(()=>String(V.params.slug??``).trim()),U=a(S()),W=a(``),G=s(()=>b(U.value,W.value)),K=s(()=>{if(x(U.value.login.footerCopyright))return U.value.login.footerCopyright;let e=W.value.trim();return e?`版权所有:${e}`:`版权所有`});async function q(){let e=H.value;if(!e){U.value=S(),W.value=``;return}try{let t=await fetch(`${h()}/api/v1/public/competitions/by-slug/${encodeURIComponent(e)}`,{headers:{Accept:`application/json`}});if(!t.ok){U.value=S(),W.value=``;return}let n=await t.json(),r=n.data!=null&&typeof n.data==`object`&&!Array.isArray(n.data)?n.data:n;W.value=String(r.name??``),U.value=C(r.branding_json??null)}catch{U.value=S(),W.value=``}}o(H,()=>{q()},{immediate:!0});function J(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 Y(){if(typeof document>`u`)return;let e=U.value.login.themePrimary?.trim()??``,t=x(e)?/^(?:#|rgb|hsl)/i.test(e)?e:`#${e.replace(/^#/,``)}`:B;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=J(t);e&&document.body.style.setProperty(`--bs-primary-rgb`,e)}else document.body.style.removeProperty(`--primary-soft`),document.body.style.removeProperty(`--bs-primary-rgb`)}o(U,()=>Y(),{deep:!0,immediate:!0});let X=a(``),Z=s(()=>X.value||`用户`);async function Q(){let e=localStorage.getItem(g),t=h();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();X.value=r.name||r.mobile||``}catch{}}function $(){localStorage.removeItem(g),localStorage.removeItem(`cxxfds_user`);let e=H.value;e?y.push({name:`participant-login`,params:{slug:e}}):y.push(`/c`)}return r(()=>{document.body.classList.add(`prototype-page`,`user-mobile-no-menu`),Q()}),t(()=>{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`)}),(t,r)=>{let a=i(`router-link`),o=i(`router-view`);return d(),p(`div`,w,[m(`header`,T,[m(`div`,E,[m(`span`,D,c(G.value),1),m(`div`,O,[m(`button`,k,[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`,A,c(Z.value),1)]),m(`ul`,j,[m(`li`,null,[m(`a`,{class:`dropdown-item text-danger`,href:`javascript:void(0)`,onClick:u($,[`prevent`])},[...r[1]||=[m(`span`,{class:`menu-icon`},`↪`,-1),e(`退出登录 `,-1)]])])])])])]),m(`div`,M,[m(`div`,N,[m(`aside`,P,[m(`div`,F,[m(`div`,I,[m(`nav`,L,[n(a,{class:`nav-link text-start`,"active-class":`active`,to:{name:`participant-apply`,params:{slug:H.value}}},{default:f(()=>[...r[2]||=[e(` 赛事报名 `,-1)]]),_:1},8,[`to`])])])])]),m(`main`,R,[n(o)])])]),m(`footer`,z,c(K.value),1)])}}}),[[`__scopeId`,`data-v-87706cd0`]]);export{V as default}; \ No newline at end of file diff --git a/public/admin/assets/ManageDashboardView-CHXG5VYB.js b/public/admin/assets/ManageDashboardView-DFfRGoDB.js similarity index 98% rename from public/admin/assets/ManageDashboardView-CHXG5VYB.js rename to public/admin/assets/ManageDashboardView-DFfRGoDB.js index ebdf5fc..881b8a9 100644 --- a/public/admin/assets/ManageDashboardView-CHXG5VYB.js +++ b/public/admin/assets/ManageDashboardView-DFfRGoDB.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-BCZX_WPn.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-md-6 col-lg-3`},[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-BFG9yM8q.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-md-6 col-lg-3`},[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-DHArNGtJ.js b/public/admin/assets/ManageLoginView-C9JMyf5G.js similarity index 97% rename from public/admin/assets/ManageLoginView-DHArNGtJ.js rename to public/admin/assets/ManageLoginView-C9JMyf5G.js index 6d05288..eb2a178 100644 --- a/public/admin/assets/ManageLoginView-DHArNGtJ.js +++ b/public/admin/assets/ManageLoginView-C9JMyf5G.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{p as g}from"./api-Cy3G2Clw.js";import{n as _,o as v,s as y}from"./index-BCZX_WPn.js";import{t as b}from"./auth-D03dbBG8.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=v(),A=y(),j=_(),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(p.params.id)),J=o(()=>K.value?.files.find(e=>e.kind===`plan`)??null),Y=o(()=>K.value?.files.filter(e=>e.kind===`supporting`)??[]),we=o(()=>{let e=Ce.value.trim()||K.value?.competition?.name?.trim()||``;return e?`${e} 赛事承诺书`:`赛事承诺书`});function Te(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=o(()=>Te(K.value?.promise_signed_at??void 0)),Z=o(()=>{let e=K.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)}function Ee(e){if(!e)return``;let t=e.scores&&typeof e.scores==`object`&&!Array.isArray(e.scores)?e.scores:null,n=e.sheet_snapshot,r=n&&typeof n==`object`&&!Array.isArray(n)&&Array.isArray(n.items)?n.items:[];return t&&r.length?r.map(e=>{let n=String(e.key??``),r=String(e.title??n),i=t[n],a=typeof i==`number`?i:Number(i);return`${r} ${Number.isFinite(a)?a:`—`}`}).join(`;`):t?Object.entries(t).map(([e,t])=>`${e} ${typeof t==`number`?t:Number(t)}`).join(`;`):``}async function De(){let e=W.value;if(!(!e||!q.value)){G.value=!0;try{K.value=await ae(e,q.value)}finally{G.value=!1}}}function Oe(){let e={};typeof p.query.page==`string`&&p.query.page&&(e.page=p.query.page),typeof p.query.per_page==`string`&&p.query.per_page&&(e.per_page=p.query.per_page),U.push({name:`manage-projects`,params:{slug:Se.value},query:e})}async function $(e){let t=W.value,n=K.value;if(!(!t||!n))try{await m(t,n.id,e.id,e.original_name||`附件`)}catch{ne.error(`下载失败`)}}return ee([W,q],()=>void De(),{immediate:!0}),(r,a)=>(u(),d(`div`,se,[f(`div`,{class:`d-flex justify-content-between align-items-center flex-wrap gap-2 mb-3`},[a[1]||=f(`h5`,{class:`mb-0 section-title`},`项目详情`,-1),f(`button`,{type:`button`,class:`btn btn-sm btn-outline-secondary`,onClick:Oe},`返回列表`)]),G.value?(u(),d(`div`,ce,`加载中…`)):K.value?(u(),d(`div`,le,[f(`div`,ue,[n(oe,{detail:K.value},null,8,[`detail`]),f(`div`,de,[f(`div`,h,[a[2]||=f(`label`,{class:`form-label`},`评审进程`,-1),f(`input`,{class:`form-control`,value:K.value.review_progress,disabled:``},null,8,g)]),f(`div`,_,[a[3]||=f(`label`,{class:`form-label`},`总分`,-1),f(`input`,{class:`form-control`,value:K.value.review_fully_completed?Q(K.value.team_sum):`待评审`,disabled:``},null,8,v)]),f(`div`,y,[a[4]||=f(`label`,{class:`form-label`},`平均分`,-1),f(`input`,{class:`form-control`,value:K.value.review_fully_completed?Q(K.value.team_avg):`-`,disabled:``},null,8,b)]),f(`div`,x,[a[5]||=f(`label`,{class:`form-label`},`审核状态`,-1),f(`input`,{class:`form-control`,value:K.value.review_result===`passed`?`通过`:K.value.review_result===`rejected`?`未通过`:`待评定`,disabled:``},null,8,S)])]),f(`div`,C,[f(`div`,w,[a[6]||=f(`label`,{class:`form-label`},`商业计划书`,-1),J.value?(u(),d(`p`,T,[f(`a`,{role:`button`,href:`#`,class:`text-danger text-decoration-none`,onClick:a[0]||=l(e=>$(J.value),[`prevent`])},c(J.value.original_name),1)])):(u(),d(`p`,E,`—`))]),Y.value.length?(u(),d(`div`,D,[a[7]||=f(`label`,{class:`form-label`},`其他佐证材料`,-1),f(`ul`,O,[(u(!0),d(s,null,i(Y.value,e=>(u(),d(`li`,{key:e.id},[f(`a`,{role:`button`,href:`#`,class:`text-danger text-decoration-none`,onClick:l(t=>$(e),[`prevent`])},c(e.original_name),9,k)]))),128))])])):e(``,!0),f(`div`,A,[a[9]||=f(`label`,{class:`form-label`},`参赛承诺书`,-1),f(`p`,j,[K.value.promise_signed||K.value.promise_signed_at?(u(),d(s,{key:0},[a[8]||=f(`button`,{type:`button`,class:`btn btn-link btn-sm p-0 align-baseline text-danger`,"data-bs-toggle":`modal`,"data-bs-target":`#managePledgeModal`},` 已签署 · 查看承诺书与签名 `,-1),f(`span`,M,`日期:`+c(X.value),1)],64)):(u(),d(s,{key:1},[t(`未签署`)],64))])])]),K.value.review_scores?.length?(u(),d(`div`,N,[a[11]||=f(`h6`,{class:`report-section-title`},`评委打分`,-1),f(`table`,P,[a[10]||=f(`thead`,null,[f(`tr`,null,[f(`th`,null,`评委`),f(`th`,null,`项目得分`),f(`th`,null,`分项明细`),f(`th`,null,`时间`)])],-1),f(`tbody`,null,[(u(!0),d(s,null,i(K.value.review_scores,e=>(u(),d(`tr`,{key:e.id},[f(`td`,null,c(e.reviewer_name||e.reviewer_id),1),f(`td`,null,c(e.line_total??`—`),1),f(`td`,F,c(Ee(e.payload_json)||e.comment||`—`),1),f(`td`,null,c(e.updated_at||`—`),1)]))),128))])])])):e(``,!0),K.value.review_result_note?(u(),d(`div`,I,[a[12]||=f(`label`,{class:`form-label`},`审核意见`,-1),f(`textarea`,{class:`form-control`,rows:`4`,value:K.value.review_result_note,disabled:``},null,8,L)])):e(``,!0)])])):e(``,!0),f(`div`,R,[f(`div`,z,[f(`div`,B,[f(`div`,V,[K.value?(u(),d(`div`,fe,[f(`h1`,H,c(we.value),1),f(`div`,pe,[K.value.pledge_content_html?.trim()?(u(),d(`div`,{key:0,class:`promise-doc-body promise-doc-body--rich`,innerHTML:K.value.pledge_content_html},null,8,me)):(u(),d(`div`,he,[...a[13]||=[f(`p`,{class:`text-secondary mb-0`},`本场赛事未配置承诺书正文。`,-1)]]))]),K.value.promise_signed||K.value.promise_signed_at?(u(),d(`div`,ge,[f(`div`,_e,[a[14]||=f(`span`,{class:`promise-doc-signlabel`},`参赛人签名:`,-1),Z.value?(u(),d(`img`,{key:0,src:Z.value,alt:``,class:`manage-promise-sig-img`,loading:`lazy`},null,8,ve)):(u(),d(`span`,ye,`暂无`))]),f(`div`,be,[f(`span`,xe,[a[15]||=t(`日期:`,-1),f(`strong`,null,c(X.value),1)])])])):e(``,!0)])):e(``,!0),a[16]||=f(`div`,{class:`promise-sign-actions`},[f(`button`,{type:`button`,class:`btn btn-light notice-cancel-btn`,"data-bs-dismiss":`modal`},`关闭`)],-1)])])])])]))}}),[[`__scopeId`,`data-v-dda991db`]]);export{U as default}; \ No newline at end of file diff --git a/public/admin/assets/ManageProjectDetailView-BwBn2Dhm.js b/public/admin/assets/ManageProjectDetailView-BwBn2Dhm.js new file mode 100644 index 0000000..b956e95 --- /dev/null +++ b/public/admin/assets/ManageProjectDetailView-BwBn2Dhm.js @@ -0,0 +1 @@ +import{C as e,D as t,O as n,P as r,Y as i,_t as a,at as ee,b as o,g as s,in as c,k as te,m as l,q as u,w as d,x as f}from"./vue.runtime.esm-bundler-OsdSFvn7.js";import{l as ne,o as re,s as ie}from"./index-BFG9yM8q.js";import{t as p}from"./_plugin-vue_export-helper-CXTkFu_Z.js";import{r as ae,t as oe}from"./applications-B3QNZX0l.js";import{t as se}from"./ApplicationSignupDetailFields-CQfdKOn5.js";import{i as m,n as h,r as ce,t as le}from"./listPageState-u1yUuMzb.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`},g={class:`card-body`},_={class:`row g-3 mt-1`},v={class:`col-md-4`},y=[`value`],b={class:`col-md-4`},x=[`value`],S={class:`col-md-4`},C=[`value`],w={class:`col-md-4`},T=[`value`],E={class:`row g-3 mt-1`},D={class:`col-12`},O={key:0,class:`form-control-plaintext border rounded px-3 py-2 mb-0 bg-light small text-secondary`},k={key:1,class:`form-control-plaintext border rounded px-3 py-2 mb-0 bg-light small text-secondary`},A={key:0,class:`col-12`},j={class:`list-unstyled mb-0 border rounded px-3 py-2 bg-light small`},M=[`onClick`],N={class:`col-12`},P={class:`form-control-plaintext border rounded px-3 py-2 mb-0 bg-light small text-secondary`},F={class:`text-secondary ms-2`},I={key:0,class:`mt-4`},L={class:`table table-sm`},R={class:`cell-wrap small text-secondary`},z={key:1,class:`mt-3`},B=[`value`],V={id:`managePledgeModal`,class:`modal fade`,tabindex:`-1`,"aria-labelledby":`managePledgeDocHeading`,"aria-hidden":`true`},H={class:`modal-dialog modal-dialog-centered modal-dialog-scrollable manage-detail-modal manage-detail-modal--pledge`},pe={class:`modal-content promise-sign-sheet`},me={class:`modal-body pt-2`},he={key:0,class:`promise-doc-paper`},ge={id:`managePledgeDocHeading`,class:`promise-doc-heading text-center`},_e={class:`promise-doc-scroll`},ve=[`innerHTML`],ye={key:1,class:`promise-doc-body promise-doc-body--rich`},be={key:0,class:`promise-doc-signblock`},xe={class:`manage-pledge-sig-row`},Se=[`src`],Ce={key:1,class:`small text-secondary`},we={class:`promise-doc-daterow`},Te={class:`promise-doc-dateline`},U=p(te({__name:`ManageProjectDetailView`,setup(te){let p=re(),U=ie(),W=r(`manageCompetitionId`,a(null)),Ee=r(`manageCompetitionSlug`,a(``)),De=r(`manageCompetitionName`,a(``)),G=a(!1),K=a(null),q=o(()=>Number(p.params.id)),J=o(()=>K.value?.files.find(e=>e.kind===`plan`)??null),Y=o(()=>K.value?.files.filter(e=>e.kind===`supporting`)??[]),Oe=o(()=>{let e=De.value.trim()||K.value?.competition?.name?.trim()||``;return e?`${e} 赛事承诺书`:`赛事承诺书`});function ke(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=o(()=>ke(K.value?.promise_signed_at??void 0)),Z=o(()=>{let e=K.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)}function Ae(e){if(!e)return``;let t=e.scores&&typeof e.scores==`object`&&!Array.isArray(e.scores)?e.scores:null,n=e.sheet_snapshot,r=n&&typeof n==`object`&&!Array.isArray(n)&&Array.isArray(n.items)?n.items:[];return t&&r.length?r.map(e=>{let n=String(e.key??``),r=String(e.title??n),i=t[n],a=typeof i==`number`?i:Number(i);return`${r} ${Number.isFinite(a)?a:`—`}`}).join(`;`):t?Object.entries(t).map(([e,t])=>`${e} ${typeof t==`number`?t:Number(t)}`).join(`;`):``}async function je(){let e=W.value;if(!(!e||!q.value)){G.value=!0;try{K.value=await ae(e,q.value)}finally{G.value=!1}}}function Me(){let e=Ee.value,t=m(p.query.page,0),n=m(p.query.per_page,0),r={};if(t>0)r=h({page:t,perPage:n>0?n:15});else{let t=ce(le(`manage-projects`,e));t&&(r=h(t))}U.push({name:`manage-projects`,params:{slug:e},query:r})}async function $(e){let t=W.value,n=K.value;if(!(!t||!n))try{await oe(t,n.id,e.id,e.original_name||`附件`)}catch{ne.error(`下载失败`)}}return ee([W,q],()=>void je(),{immediate:!0}),(r,a)=>(u(),d(`div`,ue,[f(`div`,{class:`d-flex justify-content-between align-items-center flex-wrap gap-2 mb-3`},[a[1]||=f(`h5`,{class:`mb-0 section-title`},`项目详情`,-1),f(`button`,{type:`button`,class:`btn btn-sm btn-outline-secondary`,onClick:Me},`返回列表`)]),G.value?(u(),d(`div`,de,`加载中…`)):K.value?(u(),d(`div`,fe,[f(`div`,g,[n(se,{detail:K.value},null,8,[`detail`]),f(`div`,_,[f(`div`,v,[a[2]||=f(`label`,{class:`form-label`},`评审进程`,-1),f(`input`,{class:`form-control`,value:K.value.review_progress,disabled:``},null,8,y)]),f(`div`,b,[a[3]||=f(`label`,{class:`form-label`},`总分`,-1),f(`input`,{class:`form-control`,value:K.value.review_fully_completed?Q(K.value.team_sum):`待评审`,disabled:``},null,8,x)]),f(`div`,S,[a[4]||=f(`label`,{class:`form-label`},`平均分`,-1),f(`input`,{class:`form-control`,value:K.value.review_fully_completed?Q(K.value.team_avg):`-`,disabled:``},null,8,C)]),f(`div`,w,[a[5]||=f(`label`,{class:`form-label`},`审核状态`,-1),f(`input`,{class:`form-control`,value:K.value.review_result===`passed`?`通过`:K.value.review_result===`rejected`?`未通过`:`待评定`,disabled:``},null,8,T)])]),f(`div`,E,[f(`div`,D,[a[6]||=f(`label`,{class:`form-label`},`商业计划书`,-1),J.value?(u(),d(`p`,O,[f(`a`,{role:`button`,href:`#`,class:`text-danger text-decoration-none`,onClick:a[0]||=l(e=>$(J.value),[`prevent`])},c(J.value.original_name),1)])):(u(),d(`p`,k,`—`))]),Y.value.length?(u(),d(`div`,A,[a[7]||=f(`label`,{class:`form-label`},`其他佐证材料`,-1),f(`ul`,j,[(u(!0),d(s,null,i(Y.value,e=>(u(),d(`li`,{key:e.id},[f(`a`,{role:`button`,href:`#`,class:`text-danger text-decoration-none`,onClick:l(t=>$(e),[`prevent`])},c(e.original_name),9,M)]))),128))])])):e(``,!0),f(`div`,N,[a[9]||=f(`label`,{class:`form-label`},`参赛承诺书`,-1),f(`p`,P,[K.value.promise_signed||K.value.promise_signed_at?(u(),d(s,{key:0},[a[8]||=f(`button`,{type:`button`,class:`btn btn-link btn-sm p-0 align-baseline text-danger`,"data-bs-toggle":`modal`,"data-bs-target":`#managePledgeModal`},` 已签署 · 查看承诺书与签名 `,-1),f(`span`,F,`日期:`+c(X.value),1)],64)):(u(),d(s,{key:1},[t(`未签署`)],64))])])]),K.value.review_scores?.length?(u(),d(`div`,I,[a[11]||=f(`h6`,{class:`report-section-title`},`评委打分`,-1),f(`table`,L,[a[10]||=f(`thead`,null,[f(`tr`,null,[f(`th`,null,`评委`),f(`th`,null,`项目得分`),f(`th`,null,`分项明细`),f(`th`,null,`时间`)])],-1),f(`tbody`,null,[(u(!0),d(s,null,i(K.value.review_scores,e=>(u(),d(`tr`,{key:e.id},[f(`td`,null,c(e.reviewer_name||e.reviewer_id),1),f(`td`,null,c(e.line_total??`—`),1),f(`td`,R,c(Ae(e.payload_json)||e.comment||`—`),1),f(`td`,null,c(e.updated_at||`—`),1)]))),128))])])])):e(``,!0),K.value.review_result_note?(u(),d(`div`,z,[a[12]||=f(`label`,{class:`form-label`},`审核意见`,-1),f(`textarea`,{class:`form-control`,rows:`4`,value:K.value.review_result_note,disabled:``},null,8,B)])):e(``,!0)])])):e(``,!0),f(`div`,V,[f(`div`,H,[f(`div`,pe,[f(`div`,me,[K.value?(u(),d(`div`,he,[f(`h1`,ge,c(Oe.value),1),f(`div`,_e,[K.value.pledge_content_html?.trim()?(u(),d(`div`,{key:0,class:`promise-doc-body promise-doc-body--rich`,innerHTML:K.value.pledge_content_html},null,8,ve)):(u(),d(`div`,ye,[...a[13]||=[f(`p`,{class:`text-secondary mb-0`},`本场赛事未配置承诺书正文。`,-1)]]))]),K.value.promise_signed||K.value.promise_signed_at?(u(),d(`div`,be,[f(`div`,xe,[a[14]||=f(`span`,{class:`promise-doc-signlabel`},`参赛人签名:`,-1),Z.value?(u(),d(`img`,{key:0,src:Z.value,alt:``,class:`manage-promise-sig-img`,loading:`lazy`},null,8,Se)):(u(),d(`span`,Ce,`暂无`))]),f(`div`,we,[f(`span`,Te,[a[15]||=t(`日期:`,-1),f(`strong`,null,c(X.value),1)])])])):e(``,!0)])):e(``,!0),a[16]||=f(`div`,{class:`promise-sign-actions`},[f(`button`,{type:`button`,class:`btn btn-light notice-cancel-btn`,"data-bs-dismiss":`modal`},`关闭`)],-1)])])])])]))}}),[[`__scopeId`,`data-v-cf4a236f`]]);export{U as default}; \ No newline at end of file diff --git a/public/admin/assets/ManageProjectDetailView-Cf-BGMgD.css b/public/admin/assets/ManageProjectDetailView-CtxLicrL.css similarity index 52% rename from public/admin/assets/ManageProjectDetailView-Cf-BGMgD.css rename to public/admin/assets/ManageProjectDetailView-CtxLicrL.css index cf1c046..9775135 100644 --- a/public/admin/assets/ManageProjectDetailView-Cf-BGMgD.css +++ b/public/admin/assets/ManageProjectDetailView-CtxLicrL.css @@ -1 +1 @@ -.manage-pledge-sig-row[data-v-dda991db]{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:.35rem .65rem;display:flex}.manage-promise-sig-img[data-v-dda991db]{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-dda991db]{text-align:justify;font-size:.95rem;line-height:1.65}.promise-doc-body--rich[data-v-dda991db] 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-cf4a236f]{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:.35rem .65rem;display:flex}.manage-promise-sig-img[data-v-cf4a236f]{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-cf4a236f]{text-align:justify;font-size:.95rem;line-height:1.65}.promise-doc-body--rich[data-v-cf4a236f] 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-wmE1qy1o.js b/public/admin/assets/ManageProjectsView-wmE1qy1o.js deleted file mode 100644 index 682194f..0000000 --- a/public/admin/assets/ManageProjectsView-wmE1qy1o.js +++ /dev/null @@ -1 +0,0 @@ -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,ct as c,d as l,g as u,ht as d,in as f,k as te,p as ne,q as p,u as m,w as h,x as g}from"./vue.runtime.esm-bundler-OsdSFvn7.js";import{i as _,l as re,o as ie,s as ae}from"./index-BCZX_WPn.js";import{o as oe}from"./competitions-MDk8yj3i.js";import{n as se}from"./publicSourceChannels-CrEd0c_S.js";import{r as ce}from"./signupChannels-DWlgqvdP.js";import{a as le,i as ue,n as de}from"./applications-GU2eDYYi.js";import{t as fe}from"./PortalPagination-CP5glO9c.js";async function pe(e,t){let{data:n}=await _.post(`/competitions/${e}/applications/batch-review-result`,t);return n}var me={class:`container-fluid p-3 p-md-4`},he={class:`filter-panel mb-3`},ge={class:`row g-2`},_e={class:`col-md-3`},ve={class:`col-md-2`},ye=[`value`],be={class:`col-md-2`},xe={class:`col-md-2`},Se=[`value`],Ce={class:`col-md-2`},we=[`value`],Te={class:`col-12 col-md-auto d-flex gap-2`},Ee={class:`selection-toolbar mt-2`},De={class:`d-flex flex-wrap align-items-center gap-2`},Oe={class:`btn-group btn-group-sm portal-selection-mode-group`,role:`group`},ke={key:0,class:`badge bg-light text-dark ms-1`},Ae={key:0,class:`badge bg-light text-dark ms-1`},je=[`disabled`],Me=[`disabled`],Ne={key:1,class:`dropdown`},v={class:`dropdown-menu dropdown-menu-end`},y=[`disabled`],b={class:`small text-secondary mb-0 mt-2`},Pe={class:`portal-table-scroll table-panel`},Fe={class:`table table-hover align-middle mb-0 admin-list-table portal-data-table`},Ie={class:`text-center portal-sticky-left`,style:{width:`2.5rem`}},Le=[`checked`],Re={class:`portal-sticky-right-3`},ze={key:0},Be={key:1},Ve={class:`text-center portal-sticky-left`},He=[`checked`,`disabled`,`onChange`],Ue={class:`text-secondary`},We={class:`cell-wrap`},Ge={class:`cell-wrap`},Ke={class:`cell-wrap`},qe={class:`cell-wrap`},Je={class:`cell-wrap`},Ye={class:`cell-wrap`},Xe={class:`portal-sticky-right-4`},Ze={class:`portal-sticky-right-3`},Qe={class:`portal-sticky-right-2`},$e={key:0,class:`admin-manage-status-tag admin-manage-status-pass`},et={key:1,class:`admin-manage-status-tag admin-manage-status-fail`},tt={key:2},nt={class:`portal-sticky-right-1`},rt=[`onClick`],it={key:0,class:`modal fade show d-block`,tabindex:`-1`,style:{background:`rgba(0,0,0,.35)`}},at={class:`modal-dialog modal-dialog-centered`},ot={class:`modal-content`},st={class:`modal-header`},ct={class:`modal-body`},lt={class:`mb-0`},ut={class:`modal-footer`},dt=[`disabled`],ft={key:1,class:`modal fade show d-block`,tabindex:`-1`,style:{background:`rgba(0,0,0,.35)`}},pt={class:`modal-dialog modal-dialog-centered modal-lg`},mt={class:`modal-content`},ht={class:`modal-body`},gt={class:`modal-footer`},_t=[`disabled`],vt={key:2,class:`modal fade show d-block`,tabindex:`-1`,style:{background:`rgba(0,0,0,.35)`}},yt={class:`modal-dialog modal-dialog-centered modal-lg`},bt={class:`modal-content`},xt={class:`modal-body`},St={class:`modal-footer`},Ct=[`disabled`],x=te({__name:`ManageProjectsView`,setup(te){let _=ie(),x=ae(),S=i(`manageCompetitionId`,o(null)),wt=i(`manageCompetitionSlug`,o(``)),C=o(!1),w=o([]),T=d({page:1,perPage:15,total:0});function E(e,t){let n=typeof e==`string`?Number(e):typeof e==`number`?e:NaN;return Number.isInteger(n)&&n>0?n:t}function D(){let e={};return T.page>1&&(e.page=String(T.page)),T.perPage!==15&&(e.per_page=String(T.perPage)),e}function Tt(){T.page=E(_.query.page,1),T.perPage=E(_.query.per_page,15)}function O(){let e=D(),t=typeof _.query.page==`string`?_.query.page:void 0,n=typeof _.query.per_page==`string`?_.query.per_page:void 0,r=e.page,i=e.per_page;t===r&&n===i||x.replace({query:e})}let k=o([]),A=o([]),j=o([]),M=d({keyword:``,track:``,review_result:``,signup_channel_id:``,public_source_channel_id:``}),N=o(`desc`),P=o(`audit`),F=o([]),I=o([]),L=o(!1),R=o(`xlsx`),z=o(!1),B=o(0),V=o(!1),H=o(!1),U=o(``),W=o(!1);function G(e){let t={page:e,per_page:T.perPage,status:`submitted`,sort_by:`team_avg`,sort_dir:N.value},n=M.keyword.trim();return n&&(t.keyword=n),M.track&&(t.track=M.track),(M.review_result===`passed`||M.review_result===`rejected`||M.review_result===`pending`)&&(t.review_result=M.review_result),M.signup_channel_id!==``&&(t.signup_channel_id=Number(M.signup_channel_id)),M.public_source_channel_id!==``&&(t.public_source_channel_id=Number(M.public_source_channel_id)),t}function Et(e){return e.signup_channel?.channel_name||e.signup_channel_code||`—`}function Dt(e){return e.public_source_channel?`${e.public_source_channel.source_name}(${e.public_source_channel.source_code})`:e.public_source_code||`—`}function Ot(e){return e.submitter_name?.trim()||e.submitter_mobile?.trim()||`—`}function kt(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 At(e){return e==null||Number.isNaN(e)?`-`:e.toFixed(2)}function jt(e){return e.review_fully_completed?e.team_sum==null?`-`:e.team_sum.toFixed(2):`待评审`}function Mt(e){return e.review_fully_completed?At(e.team_avg):`-`}function K(e){return P.value===`export`?!0:e.review_fully_completed}let q=s(()=>P.value===`audit`?F.value:I.value);function J(e){P.value===`audit`?F.value=e:I.value=e}function Y(e){P.value=e}let Nt=s(()=>P.value===`audit`?`当前勾选用于批量通过/未通过`:`当前勾选用于「导出表格 + 所选附件」,与审核勾选互不影响`);function Pt(e){return q.value.includes(e)}let Ft=s(()=>{let e=w.value.filter(K),t=q.value;return e.length>0&&e.every(e=>t.includes(e.id))});function It(e){let t=e.target.checked,n=w.value.filter(K).map(e=>e.id),r=q.value;J(t?Array.from(new Set([...r,...n])):r.filter(e=>!n.includes(e)))}function Lt(e,t,n){if(!K(t)){n.target.checked=!1;return}let r=n.target.checked,i=[...q.value];if(r)i.includes(e)||i.push(e);else{let t=i.indexOf(e);t>=0&&i.splice(t,1)}J(i)}function Rt(){N.value=N.value===`desc`?`asc`:`desc`,X(1)}function zt(e){X(e)}function Bt(e){T.perPage=e,X(1)}async function Vt(){let e=S.value;if(!e)return;let[t,n,r]=await Promise.all([oe(e),ce(e),se()]);k.value=t,A.value=n,j.value=r}async function X(e=T.page){let t=S.value;if(t){C.value=!0,T.page=e,O();try{let n=await le(t,G(e));w.value=n.data,T.total=n.meta.total,n.meta.current_page&&n.meta.current_page!==T.page&&(T.page=n.meta.current_page,O())}finally{C.value=!1}}}function Z(){M.keyword=``,M.track=``,M.review_result=``,M.signup_channel_id=``,M.public_source_channel_id=``,F.value=[],I.value=[],X(1)}async function Q(e){let t=S.value;if(t){if(e===`selected`&&I.value.length===0){re.warning(`请切换到「导出选择」并勾选要导出附件的项目`);return}R.value=e,L.value=!0;try{B.value=(await ue(t,{mode:e,...G(T.page),application_ids:e===`selected`?I.value:void 0})).total}catch{B.value=T.total}}}async function Ht(){let e=S.value;if(e){z.value=!0;try{await de(e,{mode:R.value,...G(T.page),application_ids:R.value===`selected`?I.value:void 0}),L.value=!1}finally{z.value=!1}}}async function $(e){let t=S.value;if(!(!t||F.value.length===0)){W.value=!0;try{await pe(t,{application_ids:F.value,result:e,note:U.value.trim()||void 0}),V.value=!1,H.value=!1,U.value=``,F.value=[],await X(T.page)}finally{W.value=!1}}}function Ut(e){x.push({name:`manage-project-detail`,params:{slug:wt.value,id:e.id},query:D()})}return ee(S,async e=>{e&&(await Vt(),Tt(),await X(T.page))},{immediate:!0}),(i,o)=>(p(),h(`div`,me,[o[54]||=g(`div`,{class:`d-flex justify-content-between align-items-center flex-wrap gap-2 mb-3`},[g(`h5`,{class:`mb-0 section-title`},`项目管理`)],-1),g(`div`,he,[g(`div`,ge,[g(`div`,_e,[c(g(`input`,{"onUpdate:modelValue":o[0]||=e=>M.keyword=e,type:`search`,class:`form-control`,placeholder:`搜索项目、姓名、学校、手机号、推荐方`,onKeydown:o[1]||=ne(e=>X(1),[`enter`])},null,544),[[l,M.keyword]])]),g(`div`,ve,[c(g(`select`,{"onUpdate:modelValue":o[2]||=e=>M.track=e,class:`form-select`},[o[22]||=g(`option`,{value:``},`全部赛道`,-1),(p(!0),h(u,null,a(k.value,e=>(p(),h(`option`,{key:e.track_code,value:e.track_code},f(e.title),9,ye))),128))],512),[[m,M.track]])]),g(`div`,be,[c(g(`select`,{"onUpdate:modelValue":o[3]||=e=>M.review_result=e,class:`form-select`},[...o[23]||=[g(`option`,{value:``},`全部状态`,-1),g(`option`,{value:`passed`},`通过`,-1),g(`option`,{value:`rejected`},`未通过`,-1),g(`option`,{value:`pending`},`待评定`,-1)]],512),[[m,M.review_result]])]),g(`div`,xe,[c(g(`select`,{"onUpdate:modelValue":o[4]||=e=>M.signup_channel_id=e,class:`form-select`},[o[24]||=g(`option`,{value:``},`全部报名渠道`,-1),(p(!0),h(u,null,a(A.value,e=>(p(),h(`option`,{key:e.id,value:e.id},f(e.channel_name),9,Se))),128))],512),[[m,M.signup_channel_id]])]),g(`div`,Ce,[c(g(`select`,{"onUpdate:modelValue":o[5]||=e=>M.public_source_channel_id=e,class:`form-select`},[o[25]||=g(`option`,{value:``},`全部用户渠道`,-1),(p(!0),h(u,null,a(j.value,e=>(p(),h(`option`,{key:e.id,value:e.id},f(e.source_name),9,we))),128))],512),[[m,M.public_source_channel_id]])]),g(`div`,Te,[g(`button`,{type:`button`,class:`btn btn-primary px-3`,onClick:o[6]||=e=>X(1)},`查询`),g(`button`,{type:`button`,class:`btn btn-light border px-3`,onClick:Z},`重置`)])]),g(`div`,Ee,[g(`div`,De,[o[29]||=g(`span`,{class:`small text-secondary`},`勾选用途:`,-1),g(`div`,Oe,[g(`button`,{type:`button`,class:e([`btn`,P.value===`audit`?`btn-primary`:`btn-outline-primary`]),onClick:o[7]||=e=>Y(`audit`)},[o[26]||=n(` 审核选择 `,-1),F.value.length?(p(),h(`span`,ke,f(F.value.length),1)):t(``,!0)],2),g(`button`,{type:`button`,class:e([`btn`,P.value===`export`?`btn-primary`:`btn-outline-primary`]),onClick:o[8]||=e=>Y(`export`)},[o[27]||=n(` 导出选择 `,-1),I.value.length?(p(),h(`span`,Ae,f(I.value.length),1)):t(``,!0)],2)]),P.value===`audit`?(p(),h(u,{key:0},[g(`button`,{type:`button`,class:`btn btn-sm btn-manage-pass`,disabled:F.value.length===0,onClick:o[9]||=e=>{V.value=!0,U.value=`同意参赛。`}},` 通过 `,8,je),g(`button`,{type:`button`,class:`btn btn-sm btn-manage-reject`,disabled:F.value.length===0,onClick:o[10]||=e=>{H.value=!0,U.value=``}},` 未通过 `,8,Me)],64)):(p(),h(`div`,Ne,[o[28]||=g(`button`,{class:`btn btn-primary btn-sm dropdown-toggle`,type:`button`,"data-bs-toggle":`dropdown`},` 导出 `,-1),g(`ul`,v,[g(`li`,null,[g(`button`,{class:`dropdown-item`,type:`button`,onClick:o[11]||=e=>Q(`xlsx`)},`仅导出表格`)]),g(`li`,null,[g(`button`,{class:`dropdown-item`,type:`button`,disabled:I.value.length===0,onClick:o[12]||=e=>Q(`selected`)},` 导出表格 + 所选附件 `,8,y)]),g(`li`,null,[g(`button`,{class:`dropdown-item`,type:`button`,onClick:o[13]||=e=>Q(`all`)},`导出表格 + 全部附件`)])])]))]),g(`p`,b,f(Nt.value),1)])]),g(`div`,Pe,[g(`table`,Fe,[g(`thead`,null,[g(`tr`,null,[g(`th`,Ie,[(p(),h(`input`,{key:`select-all-${P.value}-${T.page}`,class:`form-check-input`,type:`checkbox`,checked:Ft.value,"aria-label":`全选本页`,onChange:It},null,40,Le))]),o[30]||=g(`th`,{style:{width:`3rem`}},`序号`,-1),o[31]||=g(`th`,null,`项目编号`,-1),o[32]||=g(`th`,null,`项目名称`,-1),o[33]||=g(`th`,null,`负责人`,-1),o[34]||=g(`th`,null,`学校`,-1),o[35]||=g(`th`,null,`组别`,-1),o[36]||=g(`th`,null,`赛道`,-1),o[37]||=g(`th`,null,`报名渠道`,-1),o[38]||=g(`th`,null,`推荐方`,-1),o[39]||=g(`th`,null,`手机号`,-1),o[40]||=g(`th`,null,`提交人`,-1),o[41]||=g(`th`,null,`提交人手机号`,-1),o[42]||=g(`th`,null,`用户渠道`,-1),o[43]||=g(`th`,null,`附件`,-1),o[44]||=g(`th`,null,`提交时间`,-1),o[45]||=g(`th`,{class:`portal-sticky-right-5`},`总分`,-1),o[46]||=g(`th`,{class:`portal-sticky-right-4`},`进程`,-1),g(`th`,Re,[g(`button`,{type:`button`,class:`btn btn-link btn-sm p-0 text-decoration-none`,onClick:Rt},` 平均分 `+f(N.value===`desc`?`↓`:`↑`),1)]),o[47]||=g(`th`,{class:`portal-sticky-right-2`},`状态`,-1),o[48]||=g(`th`,{class:`portal-sticky-right-1`},`操作`,-1)])]),g(`tbody`,null,[C.value?(p(),h(`tr`,ze,[...o[49]||=[g(`td`,{colspan:`21`,class:`text-center py-4 text-secondary`},`加载中…`,-1)]])):w.value.length===0?(p(),h(`tr`,Be,[...o[50]||=[g(`td`,{colspan:`21`,class:`text-center py-4 text-secondary`},`暂无符合条件的数据`,-1)]])):(p(!0),h(u,{key:2},a(w.value,(t,n)=>(p(),h(`tr`,{key:t.id},[g(`td`,Ve,[(p(),h(`input`,{key:`${P.value}-${T.page}-${t.id}`,class:`form-check-input`,type:`checkbox`,checked:Pt(t.id),disabled:!K(t),onChange:e=>Lt(t.id,t,e)},null,40,He))]),g(`td`,Ue,f((T.page-1)*T.perPage+n+1),1),g(`td`,null,f(t.project_code),1),g(`td`,We,f(t.project_name),1),g(`td`,null,f(t.player_name),1),g(`td`,Ge,f(t.school||`—`),1),g(`td`,null,f(t.entry_group||`—`),1),g(`td`,Ke,f(t.track_title),1),g(`td`,qe,f(Et(t)),1),g(`td`,Je,f(t.recommend||`—`),1),g(`td`,null,f(t.contact_mobile||`—`),1),g(`td`,null,f(Ot(t)),1),g(`td`,null,f(t.submitter_mobile||`—`),1),g(`td`,Ye,f(Dt(t)),1),g(`td`,null,f(t.files_count),1),g(`td`,null,f(kt(t.submitted_at)),1),g(`td`,{class:e([`portal-sticky-right-5`,{"admin-total-pending-text":!t.review_fully_completed}])},f(jt(t)),3),g(`td`,Xe,f(t.review_progress),1),g(`td`,Ze,f(Mt(t)),1),g(`td`,Qe,[t.review_result===`passed`?(p(),h(`span`,$e,`通过`)):t.review_result===`rejected`?(p(),h(`span`,et,`未通过`)):(p(),h(`span`,tt,`-`))]),g(`td`,nt,[g(`button`,{type:`button`,class:`btn btn-sm btn-outline-primary`,onClick:e=>Ut(t)},`查看`,8,rt)])]))),128))])])]),r(fe,{page:T.page,"per-page":T.perPage,total:T.total,"onUpdate:page":zt,"onUpdate:perPage":Bt},null,8,[`page`,`per-page`,`total`]),L.value?(p(),h(`div`,it,[g(`div`,at,[g(`div`,ot,[g(`div`,st,[o[51]||=g(`h5`,{class:`modal-title`},`导出报名材料`,-1),g(`button`,{type:`button`,class:`btn-close`,onClick:o[14]||=e=>L.value=!1})]),g(`div`,ct,[g(`p`,lt,`共 `+f(B.value||T.total)+` 份数据,模式:`+f(R.value),1)]),g(`div`,ut,[g(`button`,{type:`button`,class:`btn btn-light`,onClick:o[15]||=e=>L.value=!1},`取消`),g(`button`,{type:`button`,class:`btn btn-primary`,disabled:z.value,onClick:Ht},f(z.value?`导出中…`:`开始导出`),9,dt)])])])])):t(``,!0),V.value?(p(),h(`div`,ft,[g(`div`,pt,[g(`div`,mt,[o[52]||=g(`div`,{class:`modal-header`},[g(`h5`,{class:`modal-title`},`审核意见`)],-1),g(`div`,ht,[c(g(`textarea`,{"onUpdate:modelValue":o[16]||=e=>U.value=e,class:`form-control`,rows:`6`},null,512),[[l,U.value]])]),g(`div`,gt,[g(`button`,{type:`button`,class:`btn btn-secondary`,onClick:o[17]||=e=>V.value=!1},`取消`),g(`button`,{type:`button`,class:`btn btn-success`,disabled:W.value,onClick:o[18]||=e=>$(`passed`)},` 确认通过 `,8,_t)])])])])):t(``,!0),H.value?(p(),h(`div`,vt,[g(`div`,yt,[g(`div`,bt,[o[53]||=g(`div`,{class:`modal-header`},[g(`h5`,{class:`modal-title`},`审核意见`)],-1),g(`div`,xt,[c(g(`textarea`,{"onUpdate:modelValue":o[19]||=e=>U.value=e,class:`form-control`,rows:`8`},null,512),[[l,U.value]])]),g(`div`,St,[g(`button`,{type:`button`,class:`btn btn-secondary`,onClick:o[20]||=e=>H.value=!1},`取消`),g(`button`,{type:`button`,class:`btn btn-warning text-dark`,disabled:W.value,onClick:o[21]||=e=>$(`rejected`)},` 确认未通过 `,8,Ct)])])])])):t(``,!0)]))}});export{x as default}; \ No newline at end of file diff --git a/public/admin/assets/ManageProjectsView-xGQol3IC.js b/public/admin/assets/ManageProjectsView-xGQol3IC.js new file mode 100644 index 0000000..b8d5030 --- /dev/null +++ b/public/admin/assets/ManageProjectsView-xGQol3IC.js @@ -0,0 +1 @@ +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,ct as c,d as l,g as u,ht as d,in as f,k as te,p as ne,q as p,u as m,w as h,x as g}from"./vue.runtime.esm-bundler-OsdSFvn7.js";import{i as _,l as re,o as ie,s as ae}from"./index-BFG9yM8q.js";import{o as oe}from"./competitions-BS1Y5XBa.js";import{n as se}from"./publicSourceChannels-Xl9QwIAR.js";import{r as ce}from"./signupChannels-C2k0F3i5.js";import{a as le,i as ue,n as de}from"./applications-B3QNZX0l.js";import{a as fe,n as pe,o as me,t as he}from"./listPageState-u1yUuMzb.js";import{t as ge}from"./PortalPagination-BESu4Eln.js";async function _e(e,t){let{data:n}=await _.post(`/competitions/${e}/applications/batch-review-result`,t);return n}var ve={class:`container-fluid p-3 p-md-4`},ye={class:`filter-panel mb-3`},be={class:`row g-2`},xe={class:`col-md-3`},Se={class:`col-md-2`},Ce=[`value`],we={class:`col-md-2`},Te={class:`col-md-2`},Ee=[`value`],De={class:`col-md-2`},Oe=[`value`],ke={class:`col-12 col-md-auto d-flex gap-2`},Ae={class:`selection-toolbar mt-2`},je={class:`d-flex flex-wrap align-items-center gap-2`},Me={class:`btn-group btn-group-sm portal-selection-mode-group`,role:`group`},Ne={key:0,class:`badge bg-light text-dark ms-1`},Pe={key:0,class:`badge bg-light text-dark ms-1`},Fe=[`disabled`],v=[`disabled`],Ie={key:1,class:`dropdown`},Le={class:`dropdown-menu dropdown-menu-end`},Re=[`disabled`],ze={class:`small text-secondary mb-0 mt-2`},Be={class:`portal-table-scroll table-panel`},Ve={class:`table table-hover align-middle mb-0 admin-list-table portal-data-table`},He={class:`text-center portal-sticky-left`,style:{width:`2.5rem`}},Ue=[`checked`],We={class:`portal-sticky-right-3`},Ge={key:0},Ke={key:1},qe={class:`text-center portal-sticky-left`},Je=[`checked`,`disabled`,`onChange`],Ye={class:`text-secondary`},Xe={class:`cell-wrap`},Ze={class:`cell-wrap`},Qe={class:`cell-wrap`},$e={class:`cell-wrap`},et={class:`cell-wrap`},tt={class:`cell-wrap`},nt={class:`portal-sticky-right-4`},rt={class:`portal-sticky-right-3`},it={class:`portal-sticky-right-2`},at={key:0,class:`admin-manage-status-tag admin-manage-status-pass`},ot={key:1,class:`admin-manage-status-tag admin-manage-status-fail`},st={key:2},ct={class:`portal-sticky-right-1`},lt=[`onClick`],ut={key:0,class:`modal fade show d-block`,tabindex:`-1`,style:{background:`rgba(0,0,0,.35)`}},dt={class:`modal-dialog modal-dialog-centered`},ft={class:`modal-content`},pt={class:`modal-header`},mt={class:`modal-body`},ht={class:`mb-0`},gt={class:`modal-footer`},_t=[`disabled`],vt={key:1,class:`modal fade show d-block`,tabindex:`-1`,style:{background:`rgba(0,0,0,.35)`}},yt={class:`modal-dialog modal-dialog-centered modal-lg`},bt={class:`modal-content`},xt={class:`modal-body`},St={class:`modal-footer`},Ct=[`disabled`],wt={key:2,class:`modal fade show d-block`,tabindex:`-1`,style:{background:`rgba(0,0,0,.35)`}},Tt={class:`modal-dialog modal-dialog-centered modal-lg`},Et={class:`modal-content`},Dt={class:`modal-body`},Ot={class:`modal-footer`},kt=[`disabled`],y=te({__name:`ManageProjectsView`,setup(te){let _=ie(),y=ae(),b=i(`manageCompetitionId`,o(null)),x=i(`manageCompetitionSlug`,o(``)),S=o(!1),C=o([]),w=d({page:1,perPage:15,total:0});function T(){return he(`manage-projects`,x.value)}function E(){return pe({page:w.page,perPage:w.perPage})}function D(){let e=T();e.endsWith(`.`)||me(e,{page:w.page,perPage:w.perPage})}function At(){let e=fe(T(),_.query);w.page=e.page,w.perPage=e.perPage}function O(){let e=E(),t=typeof _.query.page==`string`?_.query.page:void 0,n=typeof _.query.per_page==`string`?_.query.per_page:void 0;t===e.page&&n===e.per_page||y.replace({name:`manage-projects`,params:{slug:x.value},query:e})}let k=o([]),A=o([]),j=o([]),M=d({keyword:``,track:``,review_result:``,signup_channel_id:``,public_source_channel_id:``}),N=o(`desc`),P=o(`audit`),F=o([]),I=o([]),L=o(!1),R=o(`xlsx`),z=o(!1),B=o(0),V=o(!1),H=o(!1),U=o(``),W=o(!1);function G(e){let t={page:e,per_page:w.perPage,status:`submitted`,sort_by:`team_avg`,sort_dir:N.value},n=M.keyword.trim();return n&&(t.keyword=n),M.track&&(t.track=M.track),(M.review_result===`passed`||M.review_result===`rejected`||M.review_result===`pending`)&&(t.review_result=M.review_result),M.signup_channel_id!==``&&(t.signup_channel_id=Number(M.signup_channel_id)),M.public_source_channel_id!==``&&(t.public_source_channel_id=Number(M.public_source_channel_id)),t}function jt(e){return e.signup_channel?.channel_name||e.signup_channel_code||`—`}function Mt(e){return e.public_source_channel?`${e.public_source_channel.source_name}(${e.public_source_channel.source_code})`:e.public_source_code||`—`}function Nt(e){return e.submitter_name?.trim()||e.submitter_mobile?.trim()||`—`}function Pt(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 Ft(e){return e==null||Number.isNaN(e)?`-`:e.toFixed(2)}function It(e){return e.review_fully_completed?e.team_sum==null?`-`:e.team_sum.toFixed(2):`待评审`}function Lt(e){return e.review_fully_completed?Ft(e.team_avg):`-`}function K(e){return P.value===`export`?!0:e.review_fully_completed}let q=s(()=>P.value===`audit`?F.value:I.value);function J(e){P.value===`audit`?F.value=e:I.value=e}function Y(e){P.value=e}let Rt=s(()=>P.value===`audit`?`当前勾选用于批量通过/未通过`:`当前勾选用于「导出表格 + 所选附件」,与审核勾选互不影响`);function zt(e){return q.value.includes(e)}let Bt=s(()=>{let e=C.value.filter(K),t=q.value;return e.length>0&&e.every(e=>t.includes(e.id))});function Vt(e){let t=e.target.checked,n=C.value.filter(K).map(e=>e.id),r=q.value;J(t?Array.from(new Set([...r,...n])):r.filter(e=>!n.includes(e)))}function Ht(e,t,n){if(!K(t)){n.target.checked=!1;return}let r=n.target.checked,i=[...q.value];if(r)i.includes(e)||i.push(e);else{let t=i.indexOf(e);t>=0&&i.splice(t,1)}J(i)}function X(){N.value=N.value===`desc`?`asc`:`desc`,Z(1)}function Ut(e){Z(e)}function Wt(e){w.perPage=e,Z(1)}async function Gt(){let e=b.value;if(!e)return;let[t,n,r]=await Promise.all([oe(e),ce(e),se()]);k.value=t,A.value=n,j.value=r}async function Z(e=w.page){let t=b.value;if(t){S.value=!0,w.page=e,D(),O();try{let n=await le(t,G(e));C.value=n.data,w.total=n.meta.total,n.meta.current_page&&n.meta.current_page!==w.page&&(w.page=n.meta.current_page,D(),O())}finally{S.value=!1}}}function Kt(){M.keyword=``,M.track=``,M.review_result=``,M.signup_channel_id=``,M.public_source_channel_id=``,F.value=[],I.value=[],Z(1)}async function Q(e){let t=b.value;if(t){if(e===`selected`&&I.value.length===0){re.warning(`请切换到「导出选择」并勾选要导出附件的项目`);return}R.value=e,L.value=!0;try{B.value=(await ue(t,{mode:e,...G(w.page),application_ids:e===`selected`?I.value:void 0})).total}catch{B.value=w.total}}}async function qt(){let e=b.value;if(e){z.value=!0;try{await de(e,{mode:R.value,...G(w.page),application_ids:R.value===`selected`?I.value:void 0}),L.value=!1}finally{z.value=!1}}}async function $(e){let t=b.value;if(!(!t||F.value.length===0)){W.value=!0;try{await _e(t,{application_ids:F.value,result:e,note:U.value.trim()||void 0}),V.value=!1,H.value=!1,U.value=``,F.value=[],await Z(w.page)}finally{W.value=!1}}}function Jt(e){D(),y.push({name:`manage-project-detail`,params:{slug:x.value,id:String(e.id)},query:E()})}return ee(b,async e=>{e&&(await Gt(),At(),await Z(w.page))},{immediate:!0}),(i,o)=>(p(),h(`div`,ve,[o[54]||=g(`div`,{class:`d-flex justify-content-between align-items-center flex-wrap gap-2 mb-3`},[g(`h5`,{class:`mb-0 section-title`},`项目管理`)],-1),g(`div`,ye,[g(`div`,be,[g(`div`,xe,[c(g(`input`,{"onUpdate:modelValue":o[0]||=e=>M.keyword=e,type:`search`,class:`form-control`,placeholder:`搜索项目、姓名、学校、手机号、推荐方`,onKeydown:o[1]||=ne(e=>Z(1),[`enter`])},null,544),[[l,M.keyword]])]),g(`div`,Se,[c(g(`select`,{"onUpdate:modelValue":o[2]||=e=>M.track=e,class:`form-select`},[o[22]||=g(`option`,{value:``},`全部赛道`,-1),(p(!0),h(u,null,a(k.value,e=>(p(),h(`option`,{key:e.track_code,value:e.track_code},f(e.title),9,Ce))),128))],512),[[m,M.track]])]),g(`div`,we,[c(g(`select`,{"onUpdate:modelValue":o[3]||=e=>M.review_result=e,class:`form-select`},[...o[23]||=[g(`option`,{value:``},`全部状态`,-1),g(`option`,{value:`passed`},`通过`,-1),g(`option`,{value:`rejected`},`未通过`,-1),g(`option`,{value:`pending`},`待评定`,-1)]],512),[[m,M.review_result]])]),g(`div`,Te,[c(g(`select`,{"onUpdate:modelValue":o[4]||=e=>M.signup_channel_id=e,class:`form-select`},[o[24]||=g(`option`,{value:``},`全部报名渠道`,-1),(p(!0),h(u,null,a(A.value,e=>(p(),h(`option`,{key:e.id,value:e.id},f(e.channel_name),9,Ee))),128))],512),[[m,M.signup_channel_id]])]),g(`div`,De,[c(g(`select`,{"onUpdate:modelValue":o[5]||=e=>M.public_source_channel_id=e,class:`form-select`},[o[25]||=g(`option`,{value:``},`全部用户渠道`,-1),(p(!0),h(u,null,a(j.value,e=>(p(),h(`option`,{key:e.id,value:e.id},f(e.source_name),9,Oe))),128))],512),[[m,M.public_source_channel_id]])]),g(`div`,ke,[g(`button`,{type:`button`,class:`btn btn-primary px-3`,onClick:o[6]||=e=>Z(1)},`查询`),g(`button`,{type:`button`,class:`btn btn-light border px-3`,onClick:Kt},`重置`)])]),g(`div`,Ae,[g(`div`,je,[o[29]||=g(`span`,{class:`small text-secondary`},`勾选用途:`,-1),g(`div`,Me,[g(`button`,{type:`button`,class:e([`btn`,P.value===`audit`?`btn-primary`:`btn-outline-primary`]),onClick:o[7]||=e=>Y(`audit`)},[o[26]||=n(` 审核选择 `,-1),F.value.length?(p(),h(`span`,Ne,f(F.value.length),1)):t(``,!0)],2),g(`button`,{type:`button`,class:e([`btn`,P.value===`export`?`btn-primary`:`btn-outline-primary`]),onClick:o[8]||=e=>Y(`export`)},[o[27]||=n(` 导出选择 `,-1),I.value.length?(p(),h(`span`,Pe,f(I.value.length),1)):t(``,!0)],2)]),P.value===`audit`?(p(),h(u,{key:0},[g(`button`,{type:`button`,class:`btn btn-sm btn-manage-pass`,disabled:F.value.length===0,onClick:o[9]||=e=>{V.value=!0,U.value=`同意参赛。`}},` 通过 `,8,Fe),g(`button`,{type:`button`,class:`btn btn-sm btn-manage-reject`,disabled:F.value.length===0,onClick:o[10]||=e=>{H.value=!0,U.value=``}},` 未通过 `,8,v)],64)):(p(),h(`div`,Ie,[o[28]||=g(`button`,{class:`btn btn-primary btn-sm dropdown-toggle`,type:`button`,"data-bs-toggle":`dropdown`},` 导出 `,-1),g(`ul`,Le,[g(`li`,null,[g(`button`,{class:`dropdown-item`,type:`button`,onClick:o[11]||=e=>Q(`xlsx`)},`仅导出表格`)]),g(`li`,null,[g(`button`,{class:`dropdown-item`,type:`button`,disabled:I.value.length===0,onClick:o[12]||=e=>Q(`selected`)},` 导出表格 + 所选附件 `,8,Re)]),g(`li`,null,[g(`button`,{class:`dropdown-item`,type:`button`,onClick:o[13]||=e=>Q(`all`)},`导出表格 + 全部附件`)])])]))]),g(`p`,ze,f(Rt.value),1)])]),g(`div`,Be,[g(`table`,Ve,[g(`thead`,null,[g(`tr`,null,[g(`th`,He,[(p(),h(`input`,{key:`select-all-${P.value}-${w.page}`,class:`form-check-input`,type:`checkbox`,checked:Bt.value,"aria-label":`全选本页`,onChange:Vt},null,40,Ue))]),o[30]||=g(`th`,{style:{width:`3rem`}},`序号`,-1),o[31]||=g(`th`,null,`项目编号`,-1),o[32]||=g(`th`,null,`项目名称`,-1),o[33]||=g(`th`,null,`负责人`,-1),o[34]||=g(`th`,null,`学校`,-1),o[35]||=g(`th`,null,`组别`,-1),o[36]||=g(`th`,null,`赛道`,-1),o[37]||=g(`th`,null,`报名渠道`,-1),o[38]||=g(`th`,null,`推荐方`,-1),o[39]||=g(`th`,null,`手机号`,-1),o[40]||=g(`th`,null,`提交人`,-1),o[41]||=g(`th`,null,`提交人手机号`,-1),o[42]||=g(`th`,null,`用户渠道`,-1),o[43]||=g(`th`,null,`附件`,-1),o[44]||=g(`th`,null,`提交时间`,-1),o[45]||=g(`th`,{class:`portal-sticky-right-5`},`总分`,-1),o[46]||=g(`th`,{class:`portal-sticky-right-4`},`进程`,-1),g(`th`,We,[g(`button`,{type:`button`,class:`btn btn-link btn-sm p-0 text-decoration-none`,onClick:X},` 平均分 `+f(N.value===`desc`?`↓`:`↑`),1)]),o[47]||=g(`th`,{class:`portal-sticky-right-2`},`状态`,-1),o[48]||=g(`th`,{class:`portal-sticky-right-1`},`操作`,-1)])]),g(`tbody`,null,[S.value?(p(),h(`tr`,Ge,[...o[49]||=[g(`td`,{colspan:`21`,class:`text-center py-4 text-secondary`},`加载中…`,-1)]])):C.value.length===0?(p(),h(`tr`,Ke,[...o[50]||=[g(`td`,{colspan:`21`,class:`text-center py-4 text-secondary`},`暂无符合条件的数据`,-1)]])):(p(!0),h(u,{key:2},a(C.value,(t,n)=>(p(),h(`tr`,{key:t.id},[g(`td`,qe,[(p(),h(`input`,{key:`${P.value}-${w.page}-${t.id}`,class:`form-check-input`,type:`checkbox`,checked:zt(t.id),disabled:!K(t),onChange:e=>Ht(t.id,t,e)},null,40,Je))]),g(`td`,Ye,f((w.page-1)*w.perPage+n+1),1),g(`td`,null,f(t.project_code),1),g(`td`,Xe,f(t.project_name),1),g(`td`,null,f(t.player_name),1),g(`td`,Ze,f(t.school||`—`),1),g(`td`,null,f(t.entry_group||`—`),1),g(`td`,Qe,f(t.track_title),1),g(`td`,$e,f(jt(t)),1),g(`td`,et,f(t.recommend||`—`),1),g(`td`,null,f(t.contact_mobile||`—`),1),g(`td`,null,f(Nt(t)),1),g(`td`,null,f(t.submitter_mobile||`—`),1),g(`td`,tt,f(Mt(t)),1),g(`td`,null,f(t.files_count),1),g(`td`,null,f(Pt(t.submitted_at)),1),g(`td`,{class:e([`portal-sticky-right-5`,{"admin-total-pending-text":!t.review_fully_completed}])},f(It(t)),3),g(`td`,nt,f(t.review_progress),1),g(`td`,rt,f(Lt(t)),1),g(`td`,it,[t.review_result===`passed`?(p(),h(`span`,at,`通过`)):t.review_result===`rejected`?(p(),h(`span`,ot,`未通过`)):(p(),h(`span`,st,`-`))]),g(`td`,ct,[g(`button`,{type:`button`,class:`btn btn-sm btn-outline-primary`,onClick:e=>Jt(t)},`查看`,8,lt)])]))),128))])])]),r(ge,{page:w.page,"per-page":w.perPage,total:w.total,"onUpdate:page":Ut,"onUpdate:perPage":Wt},null,8,[`page`,`per-page`,`total`]),L.value?(p(),h(`div`,ut,[g(`div`,dt,[g(`div`,ft,[g(`div`,pt,[o[51]||=g(`h5`,{class:`modal-title`},`导出报名材料`,-1),g(`button`,{type:`button`,class:`btn-close`,onClick:o[14]||=e=>L.value=!1})]),g(`div`,mt,[g(`p`,ht,`共 `+f(B.value||w.total)+` 份数据,模式:`+f(R.value),1)]),g(`div`,gt,[g(`button`,{type:`button`,class:`btn btn-light`,onClick:o[15]||=e=>L.value=!1},`取消`),g(`button`,{type:`button`,class:`btn btn-primary`,disabled:z.value,onClick:qt},f(z.value?`导出中…`:`开始导出`),9,_t)])])])])):t(``,!0),V.value?(p(),h(`div`,vt,[g(`div`,yt,[g(`div`,bt,[o[52]||=g(`div`,{class:`modal-header`},[g(`h5`,{class:`modal-title`},`审核意见`)],-1),g(`div`,xt,[c(g(`textarea`,{"onUpdate:modelValue":o[16]||=e=>U.value=e,class:`form-control`,rows:`6`},null,512),[[l,U.value]])]),g(`div`,St,[g(`button`,{type:`button`,class:`btn btn-secondary`,onClick:o[17]||=e=>V.value=!1},`取消`),g(`button`,{type:`button`,class:`btn btn-success`,disabled:W.value,onClick:o[18]||=e=>$(`passed`)},` 确认通过 `,8,Ct)])])])])):t(``,!0),H.value?(p(),h(`div`,wt,[g(`div`,Tt,[g(`div`,Et,[o[53]||=g(`div`,{class:`modal-header`},[g(`h5`,{class:`modal-title`},`审核意见`)],-1),g(`div`,Dt,[c(g(`textarea`,{"onUpdate:modelValue":o[19]||=e=>U.value=e,class:`form-control`,rows:`8`},null,512),[[l,U.value]])]),g(`div`,Ot,[g(`button`,{type:`button`,class:`btn btn-secondary`,onClick:o[20]||=e=>H.value=!1},`取消`),g(`button`,{type:`button`,class:`btn btn-warning text-dark`,disabled:W.value,onClick:o[21]||=e=>$(`rejected`)},` 确认未通过 `,8,kt)])])])])):t(``,!0)]))}});export{y as default}; \ No newline at end of file diff --git a/public/admin/assets/ManageReviewersView-BZfk3zzi.js b/public/admin/assets/ManageReviewersView-DlMOVNNt.js similarity index 69% rename from public/admin/assets/ManageReviewersView-BZfk3zzi.js rename to public/admin/assets/ManageReviewersView-DlMOVNNt.js index a0466df..8d0a0bf 100644 --- a/public/admin/assets/ManageReviewersView-BZfk3zzi.js +++ b/public/admin/assets/ManageReviewersView-DlMOVNNt.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-CxEciLGw.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-C037R0cW.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/ParticipantLandingView-Nm5ZpNux.js b/public/admin/assets/ParticipantLandingView-f-C152XD.js similarity index 93% rename from public/admin/assets/ParticipantLandingView-Nm5ZpNux.js rename to public/admin/assets/ParticipantLandingView-f-C152XD.js index c6c4cb5..75b3fc5 100644 --- a/public/admin/assets/ParticipantLandingView-Nm5ZpNux.js +++ b/public/admin/assets/ParticipantLandingView-f-C152XD.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{s as d}from"./index-BCZX_WPn.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{s as d}from"./index-BFG9yM8q.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/PortalPagination-CP5glO9c.js b/public/admin/assets/PortalPagination-BESu4Eln.js similarity index 100% rename from public/admin/assets/PortalPagination-CP5glO9c.js rename to public/admin/assets/PortalPagination-BESu4Eln.js diff --git a/public/admin/assets/PublicSourceChannelManageView-DlTlAd9z.js b/public/admin/assets/PublicSourceChannelManageView-bZ36_DCY.js similarity index 99% rename from public/admin/assets/PublicSourceChannelManageView-DlTlAd9z.js rename to public/admin/assets/PublicSourceChannelManageView-bZ36_DCY.js index 867369f..d0bc066 100644 --- a/public/admin/assets/PublicSourceChannelManageView-DlTlAd9z.js +++ b/public/admin/assets/PublicSourceChannelManageView-bZ36_DCY.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{c as x,d as S,f as C,h as ee,l as w,m as T,p as E,u as te}from"./index-BCZX_WPn.js";import{t as D}from"./_plugin-vue_export-helper-CXTkFu_Z.js";import{n as O,r as k,t as A}from"./publicSourceChannels-CrEd0c_S.js";var j=e(((e,t)=>{t.exports=function(){return typeof Promise==`function`&&Promise.prototype&&Promise.prototype.then}})),M=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)}})),N=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}}})),P=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})),F=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})),I=e((e=>{var t=M().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=M().getSymbolSize,n=7;e.getPositions=function(e){let r=t(e);return[[0,0],[r-n,0],[0,r-n]]}})),R=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=N(),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}}})),B=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]]}})),V=e((e=>{var t=B();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=V();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})),U=e((e=>{e.isValid=function(e){return!isNaN(e)&&e>=1&&e<=40}})),W=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{c as x,d as S,f as C,h as ee,l as w,m as T,p as E,u as te}from"./index-BFG9yM8q.js";import{t as D}from"./_plugin-vue_export-helper-CXTkFu_Z.js";import{n as O,r as k,t as A}from"./publicSourceChannels-Xl9QwIAR.js";var j=e(((e,t)=>{t.exports=function(){return typeof Promise==`function`&&Promise.prototype&&Promise.prototype.then}})),M=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)}})),N=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}}})),P=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})),F=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})),I=e((e=>{var t=M().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=M().getSymbolSize,n=7;e.getPositions=function(e){let r=t(e);return[[0,0],[r-n,0],[0,r-n]]}})),R=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=N(),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}}})),B=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]]}})),V=e((e=>{var t=B();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=V();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})),U=e((e=>{e.isValid=function(e){return!isNaN(e)&&e>=1&&e<=40}})),W=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)}})),G=e((e=>{var t=U(),n=W();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}}})),K=e((e=>{var t=M(),n=z(),r=N(),i=G(),a=U(),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=M(),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=G();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})),Y=e(((e,t)=>{var n=G(),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})),X=e(((e,t)=>{var n=G();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=G(),r=M();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})),Q=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)})),ne=e((e=>{var t=G(),n=J(),r=Y(),i=X(),a=Z(),o=W(),s=M(),c=Q();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=M(),n=N(),r=P(),i=F(),a=I(),o=L(),s=R(),c=z(),l=H(),u=K(),d=q(),f=G(),p=ne();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{_ as f,l as p}from"./index-BFG9yM8q.js";import{t as m}from"./_plugin-vue_export-helper-CXTkFu_Z.js";import{t as h}from"./adminCompetition-dnUmBw9X.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-C9Ec4KKZ.css b/public/admin/assets/ReviewerApplicationDetailView-Ds7NRDOB.css similarity index 50% rename from public/admin/assets/ReviewerApplicationDetailView-C9Ec4KKZ.css rename to public/admin/assets/ReviewerApplicationDetailView-Ds7NRDOB.css index 5601db1..166388d 100644 --- a/public/admin/assets/ReviewerApplicationDetailView-C9Ec4KKZ.css +++ b/public/admin/assets/ReviewerApplicationDetailView-Ds7NRDOB.css @@ -1 +1 @@ -.reviewer-detail-page[data-v-dae2e649]{padding-bottom:2rem}.reviewer-score-action-bar[data-v-dae2e649]{margin-bottom:.5rem}.reviewer-pledge-sig-row[data-v-dae2e649]{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:.35rem .65rem;display:flex}.reviewer-promise-sig-img[data-v-dae2e649]{vertical-align:middle;object-fit:contain;background:0 0;border:none;width:auto;max-width:140px;height:auto;max-height:48px;display:inline-block}.promise-doc-body--rich[data-v-dae2e649]{color:var(--bs-body-color,#212529);text-align:justify;font-size:.95rem;line-height:1.65}.promise-doc-body--rich[data-v-dae2e649] p{margin-bottom:.75rem}.promise-doc-body--rich[data-v-dae2e649] p:last-child{margin-bottom:0}.promise-doc-body--rich[data-v-dae2e649] ul,.promise-doc-body--rich[data-v-dae2e649] ol{margin-bottom:.75rem;padding-left:1.25rem}.promise-doc-body--rich[data-v-dae2e649] h1,.promise-doc-body--rich[data-v-dae2e649] h2,.promise-doc-body--rich[data-v-dae2e649] h3{margin:.75rem 0 .5rem;font-size:1rem;font-weight:600}.scoring-modal-header[data-v-dae2e649]{position:relative}.scoring-modal-title[data-v-dae2e649]{margin:0;padding-inline:2rem;font-size:1.05rem;line-height:1.4}.scoring-modal-close[data-v-dae2e649]{margin:0;position:absolute;top:50%;right:1rem;transform:translateY(-50%)}.scoring-sheet-wrap[data-v-dae2e649]{-webkit-overflow-scrolling:touch;overscroll-behavior:contain;border:1px solid var(--bs-border-color,#dee2e6);border-radius:.375rem;flex:auto;width:100%;min-height:0;max-height:min(58vh,100dvh - 14rem);overflow:auto}.scoring-sheet-table[data-v-dae2e649]{table-layout:fixed;width:100%;min-width:52rem;margin-bottom:0;font-size:.875rem}.scoring-sheet-table .col-seq[data-v-dae2e649]{width:3.5rem}.scoring-sheet-table .col-category[data-v-dae2e649]{width:6rem}.scoring-sheet-table .col-indicator[data-v-dae2e649]{width:8rem}.scoring-sheet-table .col-criteria[data-v-dae2e649]{width:auto}.scoring-sheet-table .col-max[data-v-dae2e649]{width:4.5rem}.scoring-sheet-table .col-score[data-v-dae2e649]{width:10rem}.scoring-sheet-table th[data-v-dae2e649]{text-align:center;vertical-align:middle;white-space:normal;background:#f8f9fa;font-weight:600}.scoring-category[data-v-dae2e649]{vertical-align:middle;writing-mode:horizontal-tb;background:#fafbfc;font-weight:600}.scoring-indicator[data-v-dae2e649]{vertical-align:middle}.scoring-criteria[data-v-dae2e649]{word-break:normal;overflow-wrap:break-word;white-space:normal;line-height:1.45}.scoring-score-cell[data-v-dae2e649]{vertical-align:middle}.scoring-score-input[data-v-dae2e649]{width:100%;min-width:4.5rem}.scoring-score-cell .invalid-feedback[data-v-dae2e649]{margin-top:.2rem;font-size:.75rem}.scoring-total-row td[data-v-dae2e649]{background:#f3f6fa}#reviewerPledgeModal .modal-body{max-height:none;padding:.85rem;overflow:visible}#reviewerPledgeModal .promise-sign-sheet{max-height:calc(100dvh - 1.5rem);overflow:hidden}#reviewerPledgeModal .promise-sign-sheet .modal-body{max-height:none;overflow:visible}#reviewerPledgeModal .reviewer-detail-modal--pledge{--bs-modal-width:min(32rem, calc(100vw - 1.5rem));max-width:min(32rem,100vw - 1.5rem);margin-top:.65rem;margin-bottom:.65rem}#reviewerScoreModal .reviewer-detail-modal--score{--bs-modal-width:min(72rem, calc(100vw - 1.25rem));max-width:min(72rem,100vw - 1.25rem);margin-top:.5rem;margin-bottom:.5rem}#reviewerScoreModal .modal-content{flex-direction:column;max-height:calc(100dvh - 1rem);display:flex;overflow:hidden}#reviewerScoreModal .modal-header,#reviewerScoreModal .modal-footer{flex:none}#reviewerScoreModal .modal-body{flex-direction:column;flex:auto;min-height:0;display:flex;overflow:hidden}#reviewerPledgeModal .promise-doc-scroll{-webkit-overflow-scrolling:touch;max-height:min(38vh,100dvh - 15rem);overflow:hidden auto}@media (width<=767.98px){#reviewerScoreModal .reviewer-detail-modal--score{--bs-modal-width:calc(100vw - .75rem);max-width:calc(100vw - .75rem);margin:.35rem auto}#reviewerScoreModal .modal-content{max-height:calc(100dvh - .7rem)}#reviewerScoreModal .modal-body{padding:.75rem}} +.reviewer-detail-page[data-v-e462eeb2]{padding-bottom:2rem}.reviewer-score-action-bar[data-v-e462eeb2]{margin-bottom:.5rem}.reviewer-pledge-sig-row[data-v-e462eeb2]{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:.35rem .65rem;display:flex}.reviewer-promise-sig-img[data-v-e462eeb2]{vertical-align:middle;object-fit:contain;background:0 0;border:none;width:auto;max-width:140px;height:auto;max-height:48px;display:inline-block}.promise-doc-body--rich[data-v-e462eeb2]{color:var(--bs-body-color,#212529);text-align:justify;font-size:.95rem;line-height:1.65}.promise-doc-body--rich[data-v-e462eeb2] p{margin-bottom:.75rem}.promise-doc-body--rich[data-v-e462eeb2] p:last-child{margin-bottom:0}.promise-doc-body--rich[data-v-e462eeb2] ul,.promise-doc-body--rich[data-v-e462eeb2] ol{margin-bottom:.75rem;padding-left:1.25rem}.promise-doc-body--rich[data-v-e462eeb2] h1,.promise-doc-body--rich[data-v-e462eeb2] h2,.promise-doc-body--rich[data-v-e462eeb2] h3{margin:.75rem 0 .5rem;font-size:1rem;font-weight:600}.scoring-modal-header[data-v-e462eeb2]{position:relative}.scoring-modal-title[data-v-e462eeb2]{margin:0;padding-inline:2rem;font-size:1.05rem;line-height:1.4}.scoring-modal-close[data-v-e462eeb2]{margin:0;position:absolute;top:50%;right:1rem;transform:translateY(-50%)}.scoring-sheet-wrap[data-v-e462eeb2]{-webkit-overflow-scrolling:touch;overscroll-behavior:contain;border:1px solid var(--bs-border-color,#dee2e6);border-radius:.375rem;flex:auto;width:100%;min-height:0;max-height:min(58vh,100dvh - 14rem);overflow:auto}.scoring-sheet-table[data-v-e462eeb2]{table-layout:fixed;width:100%;min-width:52rem;margin-bottom:0;font-size:.875rem}.scoring-sheet-table .col-seq[data-v-e462eeb2]{width:3.5rem}.scoring-sheet-table .col-category[data-v-e462eeb2]{width:6rem}.scoring-sheet-table .col-indicator[data-v-e462eeb2]{width:8rem}.scoring-sheet-table .col-criteria[data-v-e462eeb2]{width:auto}.scoring-sheet-table .col-max[data-v-e462eeb2]{width:4.5rem}.scoring-sheet-table .col-score[data-v-e462eeb2]{width:10rem}.scoring-sheet-table th[data-v-e462eeb2]{text-align:center;vertical-align:middle;white-space:normal;background:#f8f9fa;font-weight:600}.scoring-category[data-v-e462eeb2]{vertical-align:middle;writing-mode:horizontal-tb;background:#fafbfc;font-weight:600}.scoring-indicator[data-v-e462eeb2]{vertical-align:middle}.scoring-criteria[data-v-e462eeb2]{word-break:normal;overflow-wrap:break-word;white-space:normal;line-height:1.45}.scoring-score-cell[data-v-e462eeb2]{vertical-align:middle}.scoring-score-input[data-v-e462eeb2]{width:100%;min-width:4.5rem}.scoring-score-cell .invalid-feedback[data-v-e462eeb2]{margin-top:.2rem;font-size:.75rem}.scoring-total-row td[data-v-e462eeb2]{background:#f3f6fa}#reviewerPledgeModal .modal-body{max-height:none;padding:.85rem;overflow:visible}#reviewerPledgeModal .promise-sign-sheet{max-height:calc(100dvh - 1.5rem);overflow:hidden}#reviewerPledgeModal .promise-sign-sheet .modal-body{max-height:none;overflow:visible}#reviewerPledgeModal .reviewer-detail-modal--pledge{--bs-modal-width:min(32rem, calc(100vw - 1.5rem));max-width:min(32rem,100vw - 1.5rem);margin-top:.65rem;margin-bottom:.65rem}#reviewerScoreModal .reviewer-detail-modal--score{--bs-modal-width:min(72rem, calc(100vw - 1.25rem));max-width:min(72rem,100vw - 1.25rem);margin-top:.5rem;margin-bottom:.5rem}#reviewerScoreModal .modal-content{flex-direction:column;max-height:calc(100dvh - 1rem);display:flex;overflow:hidden}#reviewerScoreModal .modal-header,#reviewerScoreModal .modal-footer{flex:none}#reviewerScoreModal .modal-body{flex-direction:column;flex:auto;min-height:0;display:flex;overflow:hidden}#reviewerPledgeModal .promise-doc-scroll{-webkit-overflow-scrolling:touch;max-height:min(38vh,100dvh - 15rem);overflow:hidden auto}@media (width<=767.98px){#reviewerScoreModal .reviewer-detail-modal--score{--bs-modal-width:calc(100vw - .75rem);max-width:calc(100vw - .75rem);margin:.35rem auto}#reviewerScoreModal .modal-content{max-height:calc(100dvh - .7rem)}#reviewerScoreModal .modal-body{padding:.75rem}} diff --git a/public/admin/assets/ReviewerApplicationDetailView-JUv8HliQ.js b/public/admin/assets/ReviewerApplicationDetailView-JUv8HliQ.js new file mode 100644 index 0000000..501a4a9 --- /dev/null +++ b/public/admin/assets/ReviewerApplicationDetailView-JUv8HliQ.js @@ -0,0 +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,q as p,w as m,x as h}from"./vue.runtime.esm-bundler-OsdSFvn7.js";import{C as re,S as ie,b as g,x as ae}from"./api-Cy3G2Clw.js";import{l as _,o as oe,s as se,y as v}from"./index-BFG9yM8q.js";import{t as y}from"./_plugin-vue_export-helper-CXTkFu_Z.js";import{t as ce}from"./ApplicationSignupDetailFields-CQfdKOn5.js";import{i as b,n as x,r as le,t as ue}from"./listPageState-u1yUuMzb.js";var de={class:`container-fluid p-3 p-md-4 reviewer-detail-page`},fe={class:`d-flex justify-content-between align-items-center flex-wrap gap-2 mb-3`},pe={class:`d-flex align-items-center gap-2 flex-wrap`},me={key:0,class:`alert alert-warning py-2 small`,role:`alert`},he={key:1,class:`small text-secondary`},ge={key:2,class:`card mb-4 border-0 shadow-sm`},_e={class:`card-body pb-4`},ve={class:`row g-3 mt-1`},ye={class:`col-12`},be={key:0,class:`form-control-plaintext border rounded px-3 py-2 mb-0 bg-light small text-secondary`},xe={key:1,class:`form-control-plaintext border rounded px-3 py-2 mb-0 bg-light small text-secondary`},Se={class:`col-12`},Ce={key:0,class:`list-unstyled mb-0 border rounded px-3 py-2 bg-light small`},we=[`onClick`],S={key:1,class:`form-control-plaintext border rounded px-3 py-2 mb-0 bg-light small text-secondary`},C={class:`col-12`},w={class:`form-control-plaintext border rounded px-3 py-2 mb-0 bg-light small text-secondary`},T={class:`text-secondary ms-2`},E={class:`col-12 pt-3 mt-2 border-top d-flex flex-wrap gap-2 align-items-center reviewer-score-action-bar`},D=[`disabled`],O={key:0,class:`small text-danger`},k={key:1,class:`small text-secondary`},Te={id:`reviewerPledgeModal`,class:`modal fade`,tabindex:`-1`,"aria-labelledby":`reviewerPledgeDocHeading`,"aria-hidden":`true`},Ee={class:`modal-dialog modal-dialog-centered modal-dialog-scrollable reviewer-detail-modal reviewer-detail-modal--pledge`},De={class:`modal-content promise-sign-sheet`},Oe={class:`modal-body pt-2`},ke={key:0,class:`promise-doc-paper`},Ae={id:`reviewerPledgeDocHeading`,class:`promise-doc-heading text-center`},je={class:`promise-doc-scroll`},Me=[`innerHTML`],Ne={key:1,class:`promise-doc-body promise-doc-body--rich`},Pe={key:0,class:`promise-doc-signblock`},Fe={class:`reviewer-pledge-sig-row`},Ie=[`src`],Le={key:1,class:`small text-secondary`},Re={class:`promise-doc-daterow`},ze={class:`promise-doc-dateline`},Be={id:`reviewerScoreModal`,class:`modal fade`,tabindex:`-1`,"aria-labelledby":`reviewerScoreModalLabel`,"aria-hidden":`true`},Ve={class:`modal-dialog modal-dialog-centered modal-dialog-scrollable reviewer-detail-modal reviewer-detail-modal--score`},He={class:`modal-content`},Ue={class:`modal-header scoring-modal-header`},We={id:`reviewerScoreModalLabel`,class:`modal-title scoring-modal-title w-100 text-center`},Ge={class:`modal-body`},Ke={key:0,class:`small text-danger mb-3 text-center`,role:`alert`},qe={class:`table-responsive scoring-sheet-wrap`},Je={class:`table table-bordered align-middle mb-0 scoring-sheet-table`},Ye={class:`text-center text-secondary`},Xe=[`rowspan`],A={class:`text-center fw-semibold scoring-indicator`},Ze={class:`small text-secondary scoring-criteria`},Qe={class:`text-center`},$e={class:`scoring-score-cell text-center`},et=[`onUpdate:modelValue`,`max`,`aria-label`,`onBlur`],tt={key:0,class:`invalid-feedback d-block text-center`},nt={class:`scoring-total-row`},rt={class:`text-center text-secondary`},it={class:`text-center fw-semibold`},at={class:`modal-footer flex-wrap gap-2`},ot=[`disabled`],j=y(ne({__name:`ReviewerApplicationDetailView`,setup(ne){let y=oe(),j=se(),M=l(()=>String(y.params.slug??``).trim()),N=l(()=>String(y.params.id??``).trim()),st=i(`reviewerCompetitionName`,s(``)),ct=l(()=>{let e=st.value.trim();return e?`${e} 赛事承诺书`:`赛事承诺书`});function lt(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 P=s(null),F=s(!1),I=s(``),L=l(()=>lt(P.value?.promise_signed_at)),R=s({}),z=s(!1),B=s({}),V=s(!1);function ut(e){if(!e)return{};let t=e.scores;return t&&typeof t==`object`&&!Array.isArray(t)?t:e}function H(){let e=P.value,t=e?.scoring_sheet?.items;if(!t?.length){R.value={},B.value={},V.value=!1;return}let n=ut(e?.my_review_score?.payload_json),r={};for(let e of t){let t=n[e.key];typeof t==`number`&&Number.isFinite(t)?r[e.key]=String(t):typeof t==`string`&&t.trim()!==``?r[e.key]=t.trim():r[e.key]=``}R.value=r,B.value={},V.value=!1}c(P,()=>H(),{deep:!0});function U(e){return e.replace(/\.?0+$/,``)}function W(e){return U(Number(e).toFixed(4))}let G=l(()=>P.value?.scoring_sheet?.items??[]),dt=l(()=>{let e=G.value,t=[],n=0;for(;ne.max_score?`不得超过 ${W(e.max_score)} 分`:null:`须为数字`}function ft(e){B.value={...B.value,[e]:!0}}let q=l(()=>{let e=0,t=G.value.length>0;for(let n of G.value){let r=String(R.value[n.key]??``).trim();if(r===``){t=!1;continue}let i=Number(r);if(!Number.isFinite(i)||i<0||i>n.max_score){t=!1;continue}e+=i}return{sum:e,allValid:t}}),pt=l(()=>{if(!P.value?.scoring_allowed||!G.value.length)return!1;for(let e of G.value){let t=String(R.value[e.key]??``).trim();if(t===``)return!1;let n=Number(t);if(!Number.isFinite(n)||n<0||n>e.max_score)return!1}return!0}),J=l(()=>{if(!G.value.length)return``;let e=0,t=0;for(let n of G.value){let r=String(R.value[n.key]??``).trim();if(r===``){e+=1;continue}let i=Number(r);(!Number.isFinite(i)||i<0||i>n.max_score)&&(t+=1)}let n=[];return V.value&&e>0&&n.push(`${e} 项未填写`),t>0&&n.push(`${t} 项超出分值或无效`),n.join(`,`)}),mt=l(()=>{let e=P.value;return e?`项目编号:${e.project_code} · ${e.score_display}`:``}),Y=l(()=>P.value?.files.find(e=>e.kind===`plan`)??null),X=l(()=>P.value?.files.filter(e=>e.kind===`supporting`)??[]),Z=l(()=>{let e=P.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 Q(){let e=N.value,t=M.value,{token:n}=g();if(!/^\d+$/.test(e)||!t||!n){I.value=`参数无效或未登录`,P.value=null;return}F.value=!0,I.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(()=>({}));I.value=(typeof e==`object`&&e&&`message`in e?String(e.message??``):``)||`加载失败(${i.status})`,P.value=null;return}P.value=(await i.json()).data??null}catch{I.value=`网络错误`,P.value=null}finally{F.value=!1}}c([N,M],()=>void Q()),a(()=>void Q());function ht(){let e=M.value;if(!e){j.push(`/c`);return}let t=b(y.query.page,0),n=b(y.query.per_page,0),r={};if(t>0)r=x({page:t,perPage:n>0?n:15});else{let t=le(ue(`reviewer-projects`,e));t&&(r=x(t))}j.push({name:`reviewer-projects`,params:{slug:e},query:r})}async function $(e){let t=N.value,n=M.value,{token:r}=g();if(!/^\d+$/.test(t)||!n||!r){_.warning(`未登录或参数无效`);return}let i=ie(parseInt(t,10),e.id,n);try{let t=await fetch(i,{headers:{Authorization:`Bearer ${r}`,Accept:`*/*`}});if(!t.ok){_.error(`下载失败`);return}let n=await t.blob(),a=URL.createObjectURL(n),o=document.createElement(`a`);o.href=a,o.download=e.original_name?.trim()?e.original_name:`download`,o.rel=`noopener`,document.body.appendChild(o),o.click(),o.remove(),URL.revokeObjectURL(a)}catch{_.error(`网络错误,无法下载`)}}function gt(){let e={};for(let t of G.value){let n=Number(String(R.value[t.key]??``).trim());e[t.key]=Number.isFinite(n)?n:0}return{scores:e}}function _t(){if(typeof document>`u`)return;let e=document.getElementById(`reviewerScoreModal`);e&&v.getOrCreateInstance(e).hide()}function vt(){if(!P.value?.scoring_allowed){_.warning(P.value?.scoring_blocked_reason||`该赛道未配置打分表,暂不可评审`);return}if(V.value=!1,typeof document>`u`)return;let e=document.getElementById(`reviewerScoreModal`);e&&v.getOrCreateInstance(e).show()}async function yt(){let e=N.value,t=M.value,{token:n}=g();if(!/^\d+$/.test(e)||!t||!n){_.warning(`未登录或参数无效`);return}if(!P.value?.scoring_allowed||!G.value.length){_.warning(P.value?.scoring_blocked_reason||`该赛道未配置打分表,暂不可评审`);return}if(!pt.value){V.value=!0,_.warning(J.value||`请为每一项填写得分(可为 0,且不得超过该项分值)`);return}z.value=!0;try{let r=gt(),i=re(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})`;_.error(n);return}let s=o.data;P.value&&s&&(s.my_review_score!==void 0&&(P.value.my_review_score=s.my_review_score),typeof s.score_display==`string`&&(P.value.score_display=s.score_display),typeof s.score_is_pending==`boolean`&&(P.value.score_is_pending=s.score_is_pending)),H(),_.success(typeof o.message==`string`?String(o.message):`提交成功`),_t()}catch{_.error(`网络错误,提交失败`)}finally{z.value=!1}}return(i,a)=>(p(),m(`div`,de,[h(`div`,fe,[a[1]||=h(`h5`,{class:`mb-0 section-title`},`项目详情`,-1),h(`div`,pe,[P.value?(p(),m(`span`,{key:0,class:e([`status-pill`,P.value.score_is_pending?`status-pending`:`status-pass`])},d(mt.value),3)):t(``,!0),h(`button`,{type:`button`,class:`btn btn-sm btn-outline-secondary event-back-btn`,onClick:ht},` 返回列表 `)])]),I.value?(p(),m(`p`,me,d(I.value),1)):F.value?(p(),m(`p`,he,`加载中…`)):P.value?(p(),m(`div`,ge,[h(`div`,_e,[r(ce,{detail:P.value},null,8,[`detail`]),h(`div`,ve,[h(`div`,ye,[a[2]||=h(`label`,{class:`form-label`},`商业计划书`,-1),Y.value?(p(),m(`p`,be,[h(`a`,{role:`button`,href:`#`,class:`text-danger text-decoration-none`,onClick:a[0]||=f(e=>$(Y.value),[`prevent`])},d(Y.value.original_name),1)])):(p(),m(`p`,xe,`—`))]),h(`div`,Se,[a[3]||=h(`label`,{class:`form-label`},`其他佐证材料`,-1),X.value.length?(p(),m(`ul`,Ce,[(p(!0),m(u,null,o(X.value,e=>(p(),m(`li`,{key:e.id},[h(`a`,{role:`button`,href:`#`,class:`text-danger text-decoration-none`,onClick:f(t=>$(e),[`prevent`])},d(e.original_name),9,we)]))),128))])):(p(),m(`p`,S,`—`))]),h(`div`,C,[a[5]||=h(`label`,{class:`form-label`},`参赛承诺书`,-1),h(`p`,w,[P.value.promise_signed?(p(),m(u,{key:0},[a[4]||=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`,T,`日期:`+d(L.value),1)],64)):(p(),m(u,{key:1},[n(`未签署`)],64))])]),h(`div`,E,[h(`button`,{type:`button`,class:`btn btn-primary px-4`,style:{"background-color":`var(--primary, #052d62)`,"border-color":`var(--primary, #052d62)`},disabled:!P.value.scoring_allowed,onClick:vt},d(P.value.score_is_pending?`项目评分`:`修改项目评分`),9,D),P.value.scoring_allowed?P.value.my_review_score?(p(),m(`span`,k,`最近保存:`+d(P.value.my_review_score.updated_at)+` · 项目得分 `+d(U(Number(P.value.my_review_score.line_total).toFixed(4)))+` 分`,1)):t(``,!0):(p(),m(`span`,O,d(P.value.scoring_blocked_reason||`该赛道未配置打分表,暂不可评审`),1))])])])])):t(``,!0),h(`div`,Te,[h(`div`,Ee,[h(`div`,De,[h(`div`,Oe,[P.value?(p(),m(`div`,ke,[h(`h1`,Ae,d(ct.value),1),h(`div`,je,[P.value.pledge_content_html?.trim()?(p(),m(`div`,{key:0,class:`promise-doc-body promise-doc-body--rich`,innerHTML:P.value.pledge_content_html},null,8,Me)):(p(),m(`div`,Ne,[...a[6]||=[h(`p`,{class:`text-secondary mb-0`},`本场赛事未配置承诺书正文(可在管理端赛事中心维护)。`,-1)]]))]),P.value.promise_signed?(p(),m(`div`,Pe,[h(`div`,Fe,[a[7]||=h(`span`,{class:`promise-doc-signlabel`},`参赛人签名:`,-1),Z.value?(p(),m(`img`,{key:0,src:Z.value,alt:``,class:`reviewer-promise-sig-img`,loading:`lazy`},null,8,Ie)):(p(),m(`span`,Le,`暂无`))]),h(`div`,Re,[h(`span`,ze,[a[8]||=n(`日期:`,-1),h(`strong`,null,d(L.value),1)])])])):t(``,!0)])):t(``,!0),a[9]||=h(`div`,{class:`promise-sign-actions`},[h(`button`,{type:`button`,class:`btn btn-light notice-cancel-btn`,"data-bs-dismiss":`modal`},`关闭`)],-1)])])])]),h(`div`,Be,[h(`div`,Ve,[h(`div`,He,[h(`div`,Ue,[h(`h5`,We,d(P.value?.scoring_sheet?.title||`项目评分`),1),a[10]||=h(`button`,{type:`button`,class:`btn-close scoring-modal-close`,"data-bs-dismiss":`modal`,"aria-label":`关闭`},null,-1)]),h(`div`,Ge,[a[14]||=h(`p`,{class:`small text-secondary mb-2 text-center`},` 请为每一项填写得分(可为 0);单项不得超过「分值」上限;提交后自动汇总为项目得分。 `,-1),J.value?(p(),m(`p`,Ke,d(J.value),1)):t(``,!0),h(`div`,qe,[h(`table`,Je,[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`}),h(`col`,{class:`col-score`})],-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`},`分值`),h(`th`,{class:`text-nowrap text-center`},`得分`)])],-1),h(`tbody`,null,[(p(!0),m(u,null,o(dt.value,n=>(p(),m(`tr`,{key:n.item.key},[h(`td`,Ye,d(n.item.sort||n.idx+1),1),n.categoryRowspan>0?(p(),m(`td`,{key:0,rowspan:n.categoryRowspan,class:`text-center scoring-category`},d(n.item.category),9,Xe)):t(``,!0),h(`td`,A,d(n.item.title),1),h(`td`,Ze,d(n.item.criteria||`—`),1),h(`td`,Qe,d(W(n.item.max_score)),1),h(`td`,$e,[ee(h(`input`,{"onUpdate:modelValue":e=>R.value[n.item.key]=e,class:e([`form-control form-control-sm text-center scoring-score-input`,{"is-invalid":!!K(n.item)}]),type:`number`,min:`0`,max:n.item.max_score,step:`any`,required:``,autocomplete:`off`,"aria-label":`${n.item.title}得分`,onBlur:e=>ft(n.item.key)},null,42,et),[[te,R.value[n.item.key]]]),K(n.item)?(p(),m(`div`,tt,d(K(n.item)),1)):t(``,!0)])]))),128)),h(`tr`,nt,[a[11]||=h(`td`,{colspan:`4`,class:`text-end fw-semibold`},`项目得分`,-1),h(`td`,rt,d(P.value?.scoring_sheet?.full_score??100),1),h(`td`,it,d(q.value.allValid?U(q.value.sum.toFixed(4)):`—`),1)])])])])]),h(`div`,at,[a[15]||=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:z.value,onClick:yt},d(z.value?`提交中…`:`确认提交`),9,ot)])])])])]))}}),[[`__scopeId`,`data-v-e462eeb2`]]);export{j as default}; \ No newline at end of file diff --git a/public/admin/assets/ReviewerApplicationDetailView-T_1tdCwQ.js b/public/admin/assets/ReviewerApplicationDetailView-T_1tdCwQ.js deleted file mode 100644 index 16c8df4..0000000 --- a/public/admin/assets/ReviewerApplicationDetailView-T_1tdCwQ.js +++ /dev/null @@ -1 +0,0 @@ -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,q as p,w as m,x as h}from"./vue.runtime.esm-bundler-OsdSFvn7.js";import{C as re,S as ie,b as g,x as ae}from"./api-Cy3G2Clw.js";import{l as _,o as oe,s as se,y as v}from"./index-BCZX_WPn.js";import{t as y}from"./_plugin-vue_export-helper-CXTkFu_Z.js";import{t as ce}from"./ApplicationSignupDetailFields-CQfdKOn5.js";var le={class:`container-fluid p-3 p-md-4 reviewer-detail-page`},ue={class:`d-flex justify-content-between align-items-center flex-wrap gap-2 mb-3`},de={class:`d-flex align-items-center gap-2 flex-wrap`},fe={key:0,class:`alert alert-warning py-2 small`,role:`alert`},pe={key:1,class:`small text-secondary`},me={key:2,class:`card mb-4 border-0 shadow-sm`},he={class:`card-body pb-4`},ge={class:`row g-3 mt-1`},_e={class:`col-12`},ve={key:0,class:`form-control-plaintext border rounded px-3 py-2 mb-0 bg-light small text-secondary`},ye={key:1,class:`form-control-plaintext border rounded px-3 py-2 mb-0 bg-light small text-secondary`},be={class:`col-12`},xe={key:0,class:`list-unstyled mb-0 border rounded px-3 py-2 bg-light small`},Se=[`onClick`],Ce={key:1,class:`form-control-plaintext border rounded px-3 py-2 mb-0 bg-light small text-secondary`},we={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`},T={key:1,class:`small text-secondary`},E={id:`reviewerPledgeModal`,class:`modal fade`,tabindex:`-1`,"aria-labelledby":`reviewerPledgeDocHeading`,"aria-hidden":`true`},D={class:`modal-dialog modal-dialog-centered modal-dialog-scrollable reviewer-detail-modal reviewer-detail-modal--pledge`},O={class:`modal-content promise-sign-sheet`},k={class:`modal-body pt-2`},Te={key:0,class:`promise-doc-paper`},Ee={id:`reviewerPledgeDocHeading`,class:`promise-doc-heading text-center`},De={class:`promise-doc-scroll`},Oe=[`innerHTML`],ke={key:1,class:`promise-doc-body promise-doc-body--rich`},Ae={key:0,class:`promise-doc-signblock`},je={class:`reviewer-pledge-sig-row`},Me=[`src`],Ne={key:1,class:`small text-secondary`},Pe={class:`promise-doc-daterow`},Fe={class:`promise-doc-dateline`},Ie={id:`reviewerScoreModal`,class:`modal fade`,tabindex:`-1`,"aria-labelledby":`reviewerScoreModalLabel`,"aria-hidden":`true`},Le={class:`modal-dialog modal-dialog-centered modal-dialog-scrollable reviewer-detail-modal reviewer-detail-modal--score`},Re={class:`modal-content`},ze={class:`modal-header scoring-modal-header`},Be={id:`reviewerScoreModalLabel`,class:`modal-title scoring-modal-title w-100 text-center`},Ve={class:`modal-body`},He={key:0,class:`small text-danger mb-3 text-center`,role:`alert`},Ue={class:`table-responsive scoring-sheet-wrap`},We={class:`table table-bordered align-middle mb-0 scoring-sheet-table`},Ge={class:`text-center text-secondary`},Ke=[`rowspan`],qe={class:`text-center fw-semibold scoring-indicator`},Je={class:`small text-secondary scoring-criteria`},Ye={class:`text-center`},Xe={class:`scoring-score-cell text-center`},A=[`onUpdate:modelValue`,`max`,`aria-label`,`onBlur`],Ze={key:0,class:`invalid-feedback d-block text-center`},Qe={class:`scoring-total-row`},$e={class:`text-center text-secondary`},et={class:`text-center fw-semibold`},tt={class:`modal-footer flex-wrap gap-2`},nt=[`disabled`],j=y(ne({__name:`ReviewerApplicationDetailView`,setup(ne){let y=oe(),j=se(),M=l(()=>String(y.params.slug??``).trim()),N=l(()=>String(y.params.id??``).trim()),rt=i(`reviewerCompetitionName`,s(``)),it=l(()=>{let e=rt.value.trim();return e?`${e} 赛事承诺书`:`赛事承诺书`});function at(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 P=s(null),F=s(!1),I=s(``),L=l(()=>at(P.value?.promise_signed_at)),R=s({}),z=s(!1),B=s({}),V=s(!1);function ot(e){if(!e)return{};let t=e.scores;return t&&typeof t==`object`&&!Array.isArray(t)?t:e}function H(){let e=P.value,t=e?.scoring_sheet?.items;if(!t?.length){R.value={},B.value={},V.value=!1;return}let n=ot(e?.my_review_score?.payload_json),r={};for(let e of t){let t=n[e.key];typeof t==`number`&&Number.isFinite(t)?r[e.key]=String(t):typeof t==`string`&&t.trim()!==``?r[e.key]=t.trim():r[e.key]=``}R.value=r,B.value={},V.value=!1}c(P,()=>H(),{deep:!0});function U(e){return e.replace(/\.?0+$/,``)}function W(e){return U(Number(e).toFixed(4))}let G=l(()=>P.value?.scoring_sheet?.items??[]),st=l(()=>{let e=G.value,t=[],n=0;for(;ne.max_score?`不得超过 ${W(e.max_score)} 分`:null:`须为数字`}function ct(e){B.value={...B.value,[e]:!0}}let q=l(()=>{let e=0,t=G.value.length>0;for(let n of G.value){let r=String(R.value[n.key]??``).trim();if(r===``){t=!1;continue}let i=Number(r);if(!Number.isFinite(i)||i<0||i>n.max_score){t=!1;continue}e+=i}return{sum:e,allValid:t}}),lt=l(()=>{if(!P.value?.scoring_allowed||!G.value.length)return!1;for(let e of G.value){let t=String(R.value[e.key]??``).trim();if(t===``)return!1;let n=Number(t);if(!Number.isFinite(n)||n<0||n>e.max_score)return!1}return!0}),J=l(()=>{if(!G.value.length)return``;let e=0,t=0;for(let n of G.value){let r=String(R.value[n.key]??``).trim();if(r===``){e+=1;continue}let i=Number(r);(!Number.isFinite(i)||i<0||i>n.max_score)&&(t+=1)}let n=[];return V.value&&e>0&&n.push(`${e} 项未填写`),t>0&&n.push(`${t} 项超出分值或无效`),n.join(`,`)}),ut=l(()=>{let e=P.value;return e?`项目编号:${e.project_code} · ${e.score_display}`:``}),Y=l(()=>P.value?.files.find(e=>e.kind===`plan`)??null),X=l(()=>P.value?.files.filter(e=>e.kind===`supporting`)??[]),Z=l(()=>{let e=P.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 Q(){let e=N.value,t=M.value,{token:n}=g();if(!/^\d+$/.test(e)||!t||!n){I.value=`参数无效或未登录`,P.value=null;return}F.value=!0,I.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(()=>({}));I.value=(typeof e==`object`&&e&&`message`in e?String(e.message??``):``)||`加载失败(${i.status})`,P.value=null;return}P.value=(await i.json()).data??null}catch{I.value=`网络错误`,P.value=null}finally{F.value=!1}}c([N,M],()=>void Q()),a(()=>void Q());function dt(){let e=M.value;if(!e){j.push(`/c`);return}let t={};typeof y.query.page==`string`&&y.query.page&&(t.page=y.query.page),typeof y.query.per_page==`string`&&y.query.per_page&&(t.per_page=y.query.per_page),j.push({name:`reviewer-projects`,params:{slug:e},query:t})}async function $(e){let t=N.value,n=M.value,{token:r}=g();if(!/^\d+$/.test(t)||!n||!r){_.warning(`未登录或参数无效`);return}let i=ie(parseInt(t,10),e.id,n);try{let t=await fetch(i,{headers:{Authorization:`Bearer ${r}`,Accept:`*/*`}});if(!t.ok){_.error(`下载失败`);return}let n=await t.blob(),a=URL.createObjectURL(n),o=document.createElement(`a`);o.href=a,o.download=e.original_name?.trim()?e.original_name:`download`,o.rel=`noopener`,document.body.appendChild(o),o.click(),o.remove(),URL.revokeObjectURL(a)}catch{_.error(`网络错误,无法下载`)}}function ft(){let e={};for(let t of G.value){let n=Number(String(R.value[t.key]??``).trim());e[t.key]=Number.isFinite(n)?n:0}return{scores:e}}function pt(){if(typeof document>`u`)return;let e=document.getElementById(`reviewerScoreModal`);e&&v.getOrCreateInstance(e).hide()}function mt(){if(!P.value?.scoring_allowed){_.warning(P.value?.scoring_blocked_reason||`该赛道未配置打分表,暂不可评审`);return}if(V.value=!1,typeof document>`u`)return;let e=document.getElementById(`reviewerScoreModal`);e&&v.getOrCreateInstance(e).show()}async function ht(){let e=N.value,t=M.value,{token:n}=g();if(!/^\d+$/.test(e)||!t||!n){_.warning(`未登录或参数无效`);return}if(!P.value?.scoring_allowed||!G.value.length){_.warning(P.value?.scoring_blocked_reason||`该赛道未配置打分表,暂不可评审`);return}if(!lt.value){V.value=!0,_.warning(J.value||`请为每一项填写得分(可为 0,且不得超过该项分值)`);return}z.value=!0;try{let r=ft(),i=re(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})`;_.error(n);return}let s=o.data;P.value&&s&&(s.my_review_score!==void 0&&(P.value.my_review_score=s.my_review_score),typeof s.score_display==`string`&&(P.value.score_display=s.score_display),typeof s.score_is_pending==`boolean`&&(P.value.score_is_pending=s.score_is_pending)),H(),_.success(typeof o.message==`string`?String(o.message):`提交成功`),pt()}catch{_.error(`网络错误,提交失败`)}finally{z.value=!1}}return(i,a)=>(p(),m(`div`,le,[h(`div`,ue,[a[1]||=h(`h5`,{class:`mb-0 section-title`},`项目详情`,-1),h(`div`,de,[P.value?(p(),m(`span`,{key:0,class:e([`status-pill`,P.value.score_is_pending?`status-pending`:`status-pass`])},d(ut.value),3)):t(``,!0),h(`button`,{type:`button`,class:`btn btn-sm btn-outline-secondary event-back-btn`,onClick:dt},` 返回列表 `)])]),I.value?(p(),m(`p`,fe,d(I.value),1)):F.value?(p(),m(`p`,pe,`加载中…`)):P.value?(p(),m(`div`,me,[h(`div`,he,[r(ce,{detail:P.value},null,8,[`detail`]),h(`div`,ge,[h(`div`,_e,[a[2]||=h(`label`,{class:`form-label`},`商业计划书`,-1),Y.value?(p(),m(`p`,ve,[h(`a`,{role:`button`,href:`#`,class:`text-danger text-decoration-none`,onClick:a[0]||=f(e=>$(Y.value),[`prevent`])},d(Y.value.original_name),1)])):(p(),m(`p`,ye,`—`))]),h(`div`,be,[a[3]||=h(`label`,{class:`form-label`},`其他佐证材料`,-1),X.value.length?(p(),m(`ul`,xe,[(p(!0),m(u,null,o(X.value,e=>(p(),m(`li`,{key:e.id},[h(`a`,{role:`button`,href:`#`,class:`text-danger text-decoration-none`,onClick:f(t=>$(e),[`prevent`])},d(e.original_name),9,Se)]))),128))])):(p(),m(`p`,Ce,`—`))]),h(`div`,we,[a[5]||=h(`label`,{class:`form-label`},`参赛承诺书`,-1),h(`p`,b,[P.value.promise_signed?(p(),m(u,{key:0},[a[4]||=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(L.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:!P.value.scoring_allowed,onClick:mt},d(P.value.score_is_pending?`项目评分`:`修改项目评分`),9,C),P.value.scoring_allowed?P.value.my_review_score?(p(),m(`span`,T,`最近保存:`+d(P.value.my_review_score.updated_at)+` · 项目得分 `+d(U(Number(P.value.my_review_score.line_total).toFixed(4)))+` 分`,1)):t(``,!0):(p(),m(`span`,w,d(P.value.scoring_blocked_reason||`该赛道未配置打分表,暂不可评审`),1))])])])])):t(``,!0),h(`div`,E,[h(`div`,D,[h(`div`,O,[h(`div`,k,[P.value?(p(),m(`div`,Te,[h(`h1`,Ee,d(it.value),1),h(`div`,De,[P.value.pledge_content_html?.trim()?(p(),m(`div`,{key:0,class:`promise-doc-body promise-doc-body--rich`,innerHTML:P.value.pledge_content_html},null,8,Oe)):(p(),m(`div`,ke,[...a[6]||=[h(`p`,{class:`text-secondary mb-0`},`本场赛事未配置承诺书正文(可在管理端赛事中心维护)。`,-1)]]))]),P.value.promise_signed?(p(),m(`div`,Ae,[h(`div`,je,[a[7]||=h(`span`,{class:`promise-doc-signlabel`},`参赛人签名:`,-1),Z.value?(p(),m(`img`,{key:0,src:Z.value,alt:``,class:`reviewer-promise-sig-img`,loading:`lazy`},null,8,Me)):(p(),m(`span`,Ne,`暂无`))]),h(`div`,Pe,[h(`span`,Fe,[a[8]||=n(`日期:`,-1),h(`strong`,null,d(L.value),1)])])])):t(``,!0)])):t(``,!0),a[9]||=h(`div`,{class:`promise-sign-actions`},[h(`button`,{type:`button`,class:`btn btn-light notice-cancel-btn`,"data-bs-dismiss":`modal`},`关闭`)],-1)])])])]),h(`div`,Ie,[h(`div`,Le,[h(`div`,Re,[h(`div`,ze,[h(`h5`,Be,d(P.value?.scoring_sheet?.title||`项目评分`),1),a[10]||=h(`button`,{type:`button`,class:`btn-close scoring-modal-close`,"data-bs-dismiss":`modal`,"aria-label":`关闭`},null,-1)]),h(`div`,Ve,[a[14]||=h(`p`,{class:`small text-secondary mb-2 text-center`},` 请为每一项填写得分(可为 0);单项不得超过「分值」上限;提交后自动汇总为项目得分。 `,-1),J.value?(p(),m(`p`,He,d(J.value),1)):t(``,!0),h(`div`,Ue,[h(`table`,We,[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`}),h(`col`,{class:`col-score`})],-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`},`分值`),h(`th`,{class:`text-nowrap text-center`},`得分`)])],-1),h(`tbody`,null,[(p(!0),m(u,null,o(st.value,n=>(p(),m(`tr`,{key:n.item.key},[h(`td`,Ge,d(n.item.sort||n.idx+1),1),n.categoryRowspan>0?(p(),m(`td`,{key:0,rowspan:n.categoryRowspan,class:`text-center scoring-category`},d(n.item.category),9,Ke)):t(``,!0),h(`td`,qe,d(n.item.title),1),h(`td`,Je,d(n.item.criteria||`—`),1),h(`td`,Ye,d(W(n.item.max_score)),1),h(`td`,Xe,[ee(h(`input`,{"onUpdate:modelValue":e=>R.value[n.item.key]=e,class:e([`form-control form-control-sm text-center scoring-score-input`,{"is-invalid":!!K(n.item)}]),type:`number`,min:`0`,max:n.item.max_score,step:`any`,required:``,autocomplete:`off`,"aria-label":`${n.item.title}得分`,onBlur:e=>ct(n.item.key)},null,42,A),[[te,R.value[n.item.key]]]),K(n.item)?(p(),m(`div`,Ze,d(K(n.item)),1)):t(``,!0)])]))),128)),h(`tr`,Qe,[a[11]||=h(`td`,{colspan:`4`,class:`text-end fw-semibold`},`项目得分`,-1),h(`td`,$e,d(P.value?.scoring_sheet?.full_score??100),1),h(`td`,et,d(q.value.allValid?U(q.value.sum.toFixed(4)):`—`),1)])])])])]),h(`div`,tt,[a[15]||=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:z.value,onClick:ht},d(z.value?`提交中…`:`确认提交`),9,nt)])])])])]))}}),[[`__scopeId`,`data-v-dae2e649`]]);export{j as default}; \ No newline at end of file diff --git a/public/admin/assets/ReviewerLayout-DPWQlamP.js b/public/admin/assets/ReviewerLayout-DrMtHdQb.js similarity index 98% rename from public/admin/assets/ReviewerLayout-DPWQlamP.js rename to public/admin/assets/ReviewerLayout-DrMtHdQb.js index 9559fed..f48968f 100644 --- a/public/admin/assets/ReviewerLayout-DPWQlamP.js +++ b/public/admin/assets/ReviewerLayout-DrMtHdQb.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 ne,x as p}from"./vue.runtime.esm-bundler-OsdSFvn7.js";import{b as m,d as re,l as ie,p as h}from"./api-Cy3G2Clw.js";import{l as ae,o as oe,s as se,y as g}from"./index-BCZX_WPn.js";import{t as _}from"./_plugin-vue_export-helper-CXTkFu_Z.js";/* empty css *//* empty css */import{i as v,o as ce,r as y,t as le}from"./competitionBranding-DKFkcrfF.js";import{n as b,r as x,t as S}from"./PortalChangePasswordModal-DBmd4yLD.js";async function C(e){let{token:t}=m();if(!t)throw Error(`未登录`);let n=await fetch(`${h()}/api/v1/review/auth/password`,{method:`PUT`,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 w={class:`reviewer-layout-root`},T={class:`navbar navbar-expand-lg layout-header`},E={class:`container-fluid px-4`},D={class:`navbar-brand mb-0 prototype-title`},O={class:`dropdown`},k={class:`header-user dropdown-toggle`,type:`button`,"data-bs-toggle":`dropdown`,"aria-expanded":`false`},A={class:`header-user-name`},j={class:`dropdown-menu dropdown-menu-end header-user-menu`},M={id:`mobileNavSection`,class:`container-fluid px-4 pt-2 pb-1 d-lg-none`},N={class:`mobile-nav-wrap`},P={class:`container-fluid px-4 py-3 layout-main`},F={class:`row g-3 portal-layout-row`},I={class:`col-12 col-md-3 col-lg-2 layout-sider`},L={class:`card h-100 portal-sider-card`},R={class:`card-body`},z={class:`nav flex-column gap-2`},B={class:`col-12 col-md-9 col-lg-10 reviewer-main-column portal-main-column`},V={class:`reviewer-main-surface border rounded-3 bg-white h-100`},H={class:`border-top bg-white text-center py-2 small text-secondary prototype-subtitle`},U={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`},W=_(ee({__name:`ReviewerLayout`,setup(ee){let _=se(),W=oe(),G=l(()=>String(W.params.slug??``).trim()),K=l(()=>[`reviewer-projects`,`reviewer-application-detail`].includes(String(W.name??``))),q=s(y()),J=s(``),Y=s(`评审员`),Ce=l(()=>ce(q.value,J.value)),we=l(()=>{if(v(q.value.review.footerCopyright))return q.value.review.footerCopyright;if(v(q.value.login.footerCopyright))return q.value.login.footerCopyright;let e=J.value.trim();return e?`版权所有:${e}`:`版权所有`});async function Te(){let e=G.value;if(!e){q.value=y(),J.value=``;return}try{let t=await fetch(`${h()}/api/v1/public/competitions/by-slug/${encodeURIComponent(e)}`,{headers:{Accept:`application/json`}});if(!t.ok){q.value=y(),J.value=``;return}let n=await t.json(),r=n.data!=null&&typeof n.data==`object`&&!Array.isArray(n.data)?n.data:n;J.value=String(r.name??``),q.value=le(r.branding_json??null)}catch{q.value=y(),J.value=``}}c(q,()=>b(q.value.login.themePrimary),{deep:!0,immediate:!0}),c(G,()=>void Te(),{immediate:!0}),r(`reviewerCompetitionName`,J);let X=s({name:`—`,mobile:`—`,username:`—`});async function Z(){let{token:e}=m();if(e)try{let t=await fetch(`${h()}${ie}`,{headers:{Authorization:`Bearer ${e}`,Accept:`application/json`}});if(!t.ok)return;let n=(await t.json()).reviewer;Y.value=n?.name?.trim()||n?.username?.trim()||`评审员`,X.value={name:n?.name??`—`,mobile:n?.mobile??`—`,username:n?.username??`—`}}catch{}}function Ee(){re();let e=G.value;e?_.replace({name:`reviewer-login`,params:{slug:e}}):_.replace(`/c`)}let Q=s(null),$=s(!1);function De(){Q.value?.reset();let e=document.getElementById(`reviewerPasswordModal`);e&&g.getOrCreateInstance(e).show()}async function Oe(e){$.value=!0;try{await C(e),ae.success(`密码已更新`);let t=document.getElementById(`reviewerPasswordModal`);t&&g.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`),Z()}),n(()=>{document.body.classList.remove(`prototype-page`,`participant-portal-theme`,`reviewer-mode`,`admin-desktop-page`,`reviewer-score-2colors`),x()}),(n,r)=>{let a=o(`router-link`),s=o(`router-view`);return te(),ne(`div`,w,[p(`header`,T,[p(`div`,E,[p(`span`,D,u(Ce.value),1),p(`div`,O,[p(`button`,k,[r[0]||=p(`svg`,{width:`22`,height:`22`,viewBox:`0 0 24 24`,fill:`none`,"aria-hidden":`true`},[p(`circle`,{cx:`12`,cy:`12`,r:`9.5`,stroke:`currentColor`,"stroke-width":`2`}),p(`circle`,{cx:`12`,cy:`9`,r:`3.2`,fill:`currentColor`}),p(`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),p(`span`,A,u(Y.value),1)]),p(`ul`,j,[r[3]||=p(`li`,null,[p(`a`,{class:`dropdown-item`,href:`javascript:void(0)`,"data-bs-toggle":`modal`,"data-bs-target":`#reviewerProfileModal`},[p(`span`,{class:`menu-icon`},`👤`),t(`个人信息 `)])],-1),p(`li`,null,[p(`a`,{class:`dropdown-item`,href:`javascript:void(0)`,onClick:d(De,[`prevent`])},[...r[1]||=[p(`span`,{class:`menu-icon`},`🔒`,-1),t(`修改密码 `,-1)]])]),r[4]||=p(`li`,null,[p(`hr`,{class:`dropdown-divider`})],-1),p(`li`,null,[p(`a`,{class:`dropdown-item text-danger`,href:`javascript:void(0)`,onClick:d(Ee,[`prevent`])},[...r[2]||=[p(`span`,{class:`menu-icon`},`↪`,-1),t(`退出登录 `,-1)]])])])])])]),p(`div`,M,[p(`div`,N,[i(a,{class:e([`mobile-nav-link`,{active:K.value}]),to:{name:`reviewer-projects`,params:{slug:G.value}}},{default:f(()=>[...r[5]||=[t(` 项目评审 `,-1)]]),_:1},8,[`class`,`to`])])]),p(`div`,P,[p(`div`,F,[p(`aside`,I,[p(`div`,L,[p(`div`,R,[p(`nav`,z,[i(a,{class:e([`nav-link text-start`,{active:K.value}]),to:{name:`reviewer-projects`,params:{slug:G.value}}},{default:f(()=>[...r[6]||=[t(` 项目评审 `,-1)]]),_:1},8,[`class`,`to`])])])])]),p(`main`,B,[p(`div`,V,[i(s)])])])]),p(`footer`,H,u(we.value),1),p(`div`,U,[p(`div`,ue,[p(`div`,de,[r[10]||=p(`div`,{class:`modal-header profile-modal-header`},[p(`h5`,{class:`modal-title profile-modal-title`},`个人信息`),p(`button`,{type:`button`,class:`btn-close`,"data-bs-dismiss":`modal`,"aria-label":`关闭`})],-1),p(`div`,fe,[p(`div`,pe,[p(`div`,me,[p(`div`,he,[r[7]||=p(`div`,{class:`profile-field-label`},`姓名`,-1),p(`div`,ge,u(X.value.name),1)])]),p(`div`,_e,[p(`div`,ve,[r[8]||=p(`div`,{class:`profile-field-label`},`手机号`,-1),p(`div`,ye,u(X.value.mobile),1)])]),p(`div`,be,[p(`div`,xe,[r[9]||=p(`div`,{class:`profile-field-label`},`登录账号`,-1),p(`div`,Se,u(X.value.username),1)])])])])])])]),i(S,{ref_key:`passwordModalRef`,ref:Q,"modal-id":`reviewerPasswordModal`,submitting:$.value,onSubmit:Oe},null,8,[`submitting`])])}}}),[[`__scopeId`,`data-v-71116384`]]);export{W 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 ne,x as p}from"./vue.runtime.esm-bundler-OsdSFvn7.js";import{b as m,d as re,l as ie,p as h}from"./api-Cy3G2Clw.js";import{l as ae,o as oe,s as se,y as g}from"./index-BFG9yM8q.js";import{t as _}from"./_plugin-vue_export-helper-CXTkFu_Z.js";/* empty css *//* empty css */import{i as v,o as ce,r as y,t as le}from"./competitionBranding-DKFkcrfF.js";import{n as b,r as x,t as S}from"./PortalChangePasswordModal-DBmd4yLD.js";async function C(e){let{token:t}=m();if(!t)throw Error(`未登录`);let n=await fetch(`${h()}/api/v1/review/auth/password`,{method:`PUT`,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 w={class:`reviewer-layout-root`},T={class:`navbar navbar-expand-lg layout-header`},E={class:`container-fluid px-4`},D={class:`navbar-brand mb-0 prototype-title`},O={class:`dropdown`},k={class:`header-user dropdown-toggle`,type:`button`,"data-bs-toggle":`dropdown`,"aria-expanded":`false`},A={class:`header-user-name`},j={class:`dropdown-menu dropdown-menu-end header-user-menu`},M={id:`mobileNavSection`,class:`container-fluid px-4 pt-2 pb-1 d-lg-none`},N={class:`mobile-nav-wrap`},P={class:`container-fluid px-4 py-3 layout-main`},F={class:`row g-3 portal-layout-row`},I={class:`col-12 col-md-3 col-lg-2 layout-sider`},L={class:`card h-100 portal-sider-card`},R={class:`card-body`},z={class:`nav flex-column gap-2`},B={class:`col-12 col-md-9 col-lg-10 reviewer-main-column portal-main-column`},V={class:`reviewer-main-surface border rounded-3 bg-white h-100`},H={class:`border-top bg-white text-center py-2 small text-secondary prototype-subtitle`},U={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`},W=_(ee({__name:`ReviewerLayout`,setup(ee){let _=se(),W=oe(),G=l(()=>String(W.params.slug??``).trim()),K=l(()=>[`reviewer-projects`,`reviewer-application-detail`].includes(String(W.name??``))),q=s(y()),J=s(``),Y=s(`评审员`),Ce=l(()=>ce(q.value,J.value)),we=l(()=>{if(v(q.value.review.footerCopyright))return q.value.review.footerCopyright;if(v(q.value.login.footerCopyright))return q.value.login.footerCopyright;let e=J.value.trim();return e?`版权所有:${e}`:`版权所有`});async function Te(){let e=G.value;if(!e){q.value=y(),J.value=``;return}try{let t=await fetch(`${h()}/api/v1/public/competitions/by-slug/${encodeURIComponent(e)}`,{headers:{Accept:`application/json`}});if(!t.ok){q.value=y(),J.value=``;return}let n=await t.json(),r=n.data!=null&&typeof n.data==`object`&&!Array.isArray(n.data)?n.data:n;J.value=String(r.name??``),q.value=le(r.branding_json??null)}catch{q.value=y(),J.value=``}}c(q,()=>b(q.value.login.themePrimary),{deep:!0,immediate:!0}),c(G,()=>void Te(),{immediate:!0}),r(`reviewerCompetitionName`,J);let X=s({name:`—`,mobile:`—`,username:`—`});async function Z(){let{token:e}=m();if(e)try{let t=await fetch(`${h()}${ie}`,{headers:{Authorization:`Bearer ${e}`,Accept:`application/json`}});if(!t.ok)return;let n=(await t.json()).reviewer;Y.value=n?.name?.trim()||n?.username?.trim()||`评审员`,X.value={name:n?.name??`—`,mobile:n?.mobile??`—`,username:n?.username??`—`}}catch{}}function Ee(){re();let e=G.value;e?_.replace({name:`reviewer-login`,params:{slug:e}}):_.replace(`/c`)}let Q=s(null),$=s(!1);function De(){Q.value?.reset();let e=document.getElementById(`reviewerPasswordModal`);e&&g.getOrCreateInstance(e).show()}async function Oe(e){$.value=!0;try{await C(e),ae.success(`密码已更新`);let t=document.getElementById(`reviewerPasswordModal`);t&&g.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`),Z()}),n(()=>{document.body.classList.remove(`prototype-page`,`participant-portal-theme`,`reviewer-mode`,`admin-desktop-page`,`reviewer-score-2colors`),x()}),(n,r)=>{let a=o(`router-link`),s=o(`router-view`);return te(),ne(`div`,w,[p(`header`,T,[p(`div`,E,[p(`span`,D,u(Ce.value),1),p(`div`,O,[p(`button`,k,[r[0]||=p(`svg`,{width:`22`,height:`22`,viewBox:`0 0 24 24`,fill:`none`,"aria-hidden":`true`},[p(`circle`,{cx:`12`,cy:`12`,r:`9.5`,stroke:`currentColor`,"stroke-width":`2`}),p(`circle`,{cx:`12`,cy:`9`,r:`3.2`,fill:`currentColor`}),p(`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),p(`span`,A,u(Y.value),1)]),p(`ul`,j,[r[3]||=p(`li`,null,[p(`a`,{class:`dropdown-item`,href:`javascript:void(0)`,"data-bs-toggle":`modal`,"data-bs-target":`#reviewerProfileModal`},[p(`span`,{class:`menu-icon`},`👤`),t(`个人信息 `)])],-1),p(`li`,null,[p(`a`,{class:`dropdown-item`,href:`javascript:void(0)`,onClick:d(De,[`prevent`])},[...r[1]||=[p(`span`,{class:`menu-icon`},`🔒`,-1),t(`修改密码 `,-1)]])]),r[4]||=p(`li`,null,[p(`hr`,{class:`dropdown-divider`})],-1),p(`li`,null,[p(`a`,{class:`dropdown-item text-danger`,href:`javascript:void(0)`,onClick:d(Ee,[`prevent`])},[...r[2]||=[p(`span`,{class:`menu-icon`},`↪`,-1),t(`退出登录 `,-1)]])])])])])]),p(`div`,M,[p(`div`,N,[i(a,{class:e([`mobile-nav-link`,{active:K.value}]),to:{name:`reviewer-projects`,params:{slug:G.value}}},{default:f(()=>[...r[5]||=[t(` 项目评审 `,-1)]]),_:1},8,[`class`,`to`])])]),p(`div`,P,[p(`div`,F,[p(`aside`,I,[p(`div`,L,[p(`div`,R,[p(`nav`,z,[i(a,{class:e([`nav-link text-start`,{active:K.value}]),to:{name:`reviewer-projects`,params:{slug:G.value}}},{default:f(()=>[...r[6]||=[t(` 项目评审 `,-1)]]),_:1},8,[`class`,`to`])])])])]),p(`main`,B,[p(`div`,V,[i(s)])])])]),p(`footer`,H,u(we.value),1),p(`div`,U,[p(`div`,ue,[p(`div`,de,[r[10]||=p(`div`,{class:`modal-header profile-modal-header`},[p(`h5`,{class:`modal-title profile-modal-title`},`个人信息`),p(`button`,{type:`button`,class:`btn-close`,"data-bs-dismiss":`modal`,"aria-label":`关闭`})],-1),p(`div`,fe,[p(`div`,pe,[p(`div`,me,[p(`div`,he,[r[7]||=p(`div`,{class:`profile-field-label`},`姓名`,-1),p(`div`,ge,u(X.value.name),1)])]),p(`div`,_e,[p(`div`,ve,[r[8]||=p(`div`,{class:`profile-field-label`},`手机号`,-1),p(`div`,ye,u(X.value.mobile),1)])]),p(`div`,be,[p(`div`,xe,[r[9]||=p(`div`,{class:`profile-field-label`},`登录账号`,-1),p(`div`,Se,u(X.value.username),1)])])])])])])]),i(S,{ref_key:`passwordModalRef`,ref:Q,"modal-id":`reviewerPasswordModal`,submitting:$.value,onSubmit:Oe},null,8,[`submitting`])])}}}),[[`__scopeId`,`data-v-71116384`]]);export{W as default}; \ No newline at end of file diff --git a/public/admin/assets/ReviewerLoginView-f4fQ_qL2.js b/public/admin/assets/ReviewerLoginView-CAPuAWlm.js similarity index 98% rename from public/admin/assets/ReviewerLoginView-f4fQ_qL2.js rename to public/admin/assets/ReviewerLoginView-CAPuAWlm.js index bb04cce..8f79331 100644 --- a/public/admin/assets/ReviewerLoginView-f4fQ_qL2.js +++ b/public/admin/assets/ReviewerLoginView-CAPuAWlm.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{c as g,p as _,w as v}from"./api-Cy3G2Clw.js";import{o as y,s as b}from"./index-BCZX_WPn.js";/* empty css */import{i as x,r as S,t as C}from"./competitionBranding-DKFkcrfF.js";/* empty css */var ee={class:`login-page-wls__wrap`},te={class:`login-page-wls__inner`},ne={class:`login-page-wls__brand`,"aria-label":`赛事说明`},re={class:`login-page-wls__logo`,"aria-hidden":`true`},ie=[`src`],w={key:1,viewBox:`0 0 100 100`,width:`72`,height:`72`,xmlns:`http://www.w3.org/2000/svg`,"aria-hidden":`true`},T={key:0,class:`login-page-wls__mark`},E=[`innerHTML`],D={key:1,class:`login-page-wls__title`},O=[`innerHTML`],k={class:`login-page-wls__panel`},A={class:`login-page-wls__card`},ae={class:`login-page-wls__card-title`},oe=[`disabled`],se={key:0,class:`login-page-wls__footer`},ce={class:`login-page-wls__copyright`},j=d({__name:`ReviewerLoginView`,setup(d){let j=y(),M=b(),N=o(``),P=o(``),F=o(!1),I=o(!1),L=o(!1),R=o(``),z=o(`neutral`),B=s(()=>String(j.params.slug??``).trim()),V=o(``),H=o(S()),U=s(()=>z.value===`error`?`login-page-wls__hint login-page-wls__hint--error`:z.value===`success`?`login-page-wls__hint login-page-wls__hint--success`:`login-page-wls__hint`);function W(e){return e.replace(/&/g,`&`).replace(//g,`>`).replace(/"/g,`"`)}let le=s(()=>{let e=H.value.login.markLine;return x(e)?W(e):``}),ue=s(()=>{let e=H.value.login.headline;return x(e)?W(e):``}),G=s(()=>{if(V.value)return V.value;let e=H.value.login.slogan;return x(e)?e:``}),de=s(()=>!!V.value),fe=s(()=>x(H.value.login.cardWelcome)?H.value.login.cardWelcome.replace(/登陆/g,`登录`):`评审员登录`),K=s(()=>x(H.value.login.footerCopyright)?H.value.login.footerCopyright:``),q=s(()=>x(H.value.login.logoUrl)?H.value.login.logoUrl:``),J=null,Y=null,X=!1;function Z(){return _()}function Q(e,t=`neutral`){R.value=e,z.value=t}function $(){R.value=``,z.value=`neutral`}function pe(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 f,q as p,w as m,x as h}from"./vue.runtime.esm-bundler-OsdSFvn7.js";import{c as g,p as _,w as v}from"./api-Cy3G2Clw.js";import{o as y,s as b}from"./index-BFG9yM8q.js";/* empty css */import{i as x,r as S,t as C}from"./competitionBranding-DKFkcrfF.js";/* empty css */var ee={class:`login-page-wls__wrap`},te={class:`login-page-wls__inner`},ne={class:`login-page-wls__brand`,"aria-label":`赛事说明`},re={class:`login-page-wls__logo`,"aria-hidden":`true`},ie=[`src`],w={key:1,viewBox:`0 0 100 100`,width:`72`,height:`72`,xmlns:`http://www.w3.org/2000/svg`,"aria-hidden":`true`},T={key:0,class:`login-page-wls__mark`},E=[`innerHTML`],D={key:1,class:`login-page-wls__title`},O=[`innerHTML`],k={class:`login-page-wls__panel`},A={class:`login-page-wls__card`},ae={class:`login-page-wls__card-title`},oe=[`disabled`],se={key:0,class:`login-page-wls__footer`},ce={class:`login-page-wls__copyright`},j=d({__name:`ReviewerLoginView`,setup(d){let j=y(),M=b(),N=o(``),P=o(``),F=o(!1),I=o(!1),L=o(!1),R=o(``),z=o(`neutral`),B=s(()=>String(j.params.slug??``).trim()),V=o(``),H=o(S()),U=s(()=>z.value===`error`?`login-page-wls__hint login-page-wls__hint--error`:z.value===`success`?`login-page-wls__hint login-page-wls__hint--success`:`login-page-wls__hint`);function W(e){return e.replace(/&/g,`&`).replace(//g,`>`).replace(/"/g,`"`)}let le=s(()=>{let e=H.value.login.markLine;return x(e)?W(e):``}),ue=s(()=>{let e=H.value.login.headline;return x(e)?W(e):``}),G=s(()=>{if(V.value)return V.value;let e=H.value.login.slogan;return x(e)?e:``}),de=s(()=>!!V.value),fe=s(()=>x(H.value.login.cardWelcome)?H.value.login.cardWelcome.replace(/登陆/g,`登录`):`评审员登录`),K=s(()=>x(H.value.login.footerCopyright)?H.value.login.footerCopyright:``),q=s(()=>x(H.value.login.logoUrl)?H.value.login.logoUrl:``),J=null,Y=null,X=!1;function Z(){return _()}function Q(e,t=`neutral`){R.value=e,z.value=t}function $(){R.value=``,z.value=`neutral`}function pe(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 me(){V.value=``,H.value=S();let e=B.value,t=typeof document<`u`?document.title:``;if(!e){V.value=`缺少赛事访问地址,请从正确入口进入`;return}try{let n=await fetch(`${Z()}/api/v1/public/competitions/by-slug/${encodeURIComponent(e)}`,{headers:{Accept:`application/json`}});if(!n.ok){V.value=n.status===404?`赛事不存在或未发布,请核对访问地址`:`无法加载赛事信息`;return}let r=await n.json(),i=typeof r==`object`&&r&&`data`in r?r.data:r;H.value=C(i?.branding_json??i?.branding??null);let a=H.value.documentTitle;typeof document<`u`&&(document.title=x(a)?`${he(a)} · 评审登录`:t||`评审登录`);let o=H.value.login.themePrimary;x(o)&&typeof document<`u`&&(J===null&&(J=document.body.style.getPropertyValue(`--primary`)||``),document.body.style.setProperty(`--primary`,o),document.body.style.setProperty(`--primary-soft`,`${o}14`));let s=H.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)),Y===null&&(Y=e.getAttribute(`href`)||``),e.href=s}}catch{V.value=`网络错误,无法校验赛事链接`}}function he(e){return e.replace(/[\u200B-\u200D\uFEFF]/gu,``).trim()}async function ge(){let e=N.value.trim(),t=P.value;if(F.value=!e,I.value=!t,!e){Q(`请填写账号`,`error`);return}if(!t){Q(`请填写密码`,`error`);return}if(!B.value){Q(`缺少赛事访问地址`,`error`);return}$(),L.value=!0,Q(`登录中…`,`neutral`);try{let n=`${Z()}${g}`,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:B.value})}),i=await r.json().catch(()=>({}));if(!r.ok){Q(pe(i),`error`);return}$();let a=i.token;if(typeof a!=`string`||!a){Q(`登录响应异常:缺少令牌`,`error`);return}v(a,B.value);let o=typeof j.query.redirect==`string`?j.query.redirect:``;if(o&&o.startsWith(`/`)){await M.replace(o);return}await M.replace({name:`reviewer-projects`,params:{slug:B.value}})}catch{Q(`网络错误,请确认后端已启动`,`error`)}finally{L.value=!1}}return a(()=>{typeof document<`u`&&(document.documentElement.classList.add(`cxxfds-login-page`),X=!0),document.body.classList.add(`login-page-wls`),me()}),i(()=>{if(typeof document<`u`&&X&&(document.documentElement.classList.remove(`cxxfds-login-page`),X=!1),document.body.classList.remove(`login-page-wls`),typeof document<`u`&&(J!==null&&(J===``?(document.body.style.removeProperty(`--primary`),document.body.style.removeProperty(`--primary-soft`)):document.body.style.setProperty(`--primary`,J),J=null),Y!==null)){let e=document.querySelector(`link[rel~="icon"]`);e&&(Y===``?e.removeAttribute(`href`):e.href=Y),Y=null}}),(i,a)=>(p(),m(`div`,ee,[h(`div`,te,[h(`aside`,ne,[h(`div`,re,[q.value?(p(),m(`img`,{key:0,src:q.value,alt:``,class:`login-page-wls__logo-img`,width:`72`,height:`72`},null,8,ie)):(p(),m(`svg`,w,[...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(()=>b.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){b.value=[],S.value={},D.value=null,G.value=!1;return}try{if(b.value=(await C(e)).filter(e=>e.is_enabled).sort((e,t)=>e.sort-t.sort),!b.value.length){D.value=null,S.value={};return}(!D.value||!b.value.some(e=>e.track_code===D.value))&&(D.value=b.value[0]?.track_code??null),S.value=await O(e)}catch(e){b.value=[],x.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=[],x.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){x.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{}x.error(e instanceof Error?e.message:`绑定赛道失败`),Y.value=!1;return}x.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()}:{}}),x.success(`评审员信息已更新`)}q.value=!1,await $(),e&&(S.value=await O(e))}catch(e){x.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),x.success(`已移除`),await $();let t=p.value;t&&(S.value=await O(t))}catch(e){x.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`),x=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(b.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(b.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(x,{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{_ as v,c as y,i as b,l as x}from"./index-BFG9yM8q.js";import{t as S}from"./_plugin-vue_export-helper-CXTkFu_Z.js";import{o as C}from"./competitions-BS1Y5XBa.js";import{t as w}from"./adminCompetition-dnUmBw9X.js";async function T(e){let{data:t}=await b.post(`/reviewers`,e),n=t?.data??t;if(!n||typeof n!=`object`)throw Error(`创建响应无效`);return n}async function E(e,t){let{data:n}=await b.put(`/reviewers/${e}`,t),r=n?.data??n;if(!r||typeof r!=`object`)throw Error(`更新响应无效`);return r}async function re(e){await b.delete(`/reviewers/${e}`)}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 b.get(`/reviewer-scopes`,{params:e});return D(t)}async function O(e){let{data:t}=await b.get(`/competitions/${e}/reviewer-scope-track-counts`),n=t?.data??t;return!n||typeof n!=`object`?{}:n}async function ae(e){let{data:t}=await b.post(`/reviewer-scopes`,e),n=t?.data??t;if(!n||typeof n!=`object`)throw Error(`创建响应无效`);return n}async function oe(e){await b.delete(`/reviewer-scopes/${e}`)}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()),b=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(()=>b.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){b.value=[],S.value={},D.value=null,G.value=!1;return}try{if(b.value=(await C(e)).filter(e=>e.is_enabled).sort((e,t)=>e.sort-t.sort),!b.value.length){D.value=null,S.value={};return}(!D.value||!b.value.some(e=>e.track_code===D.value))&&(D.value=b.value[0]?.track_code??null),S.value=await O(e)}catch(e){b.value=[],x.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=[],x.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){x.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{}x.error(e instanceof Error?e.message:`绑定赛道失败`),Y.value=!1;return}x.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()}:{}}),x.success(`评审员信息已更新`)}q.value=!1,await $(),e&&(S.value=await O(e))}catch(e){x.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),x.success(`已移除`),await $();let t=p.value;t&&(S.value=await O(t))}catch(e){x.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`),x=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(b.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(b.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(x,{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-BZjHQZHX.js b/public/admin/assets/ReviewerProjectsView-BZjHQZHX.js new file mode 100644 index 0000000..61bf415 --- /dev/null +++ b/public/admin/assets/ReviewerProjectsView-BZjHQZHX.js @@ -0,0 +1 @@ +import{$t as e,C as t,D as n,O as r,Y as i,Z as ee,_t as a,at as o,b as s,ct as c,d as l,g as u,ht as te,in as d,k as ne,p as f,q as p,st as m,u as h,w as g,x as _}from"./vue.runtime.esm-bundler-OsdSFvn7.js";import{b as re,p as ie,s as ae}from"./api-Cy3G2Clw.js";import{o as oe,s as se}from"./index-BFG9yM8q.js";import{t as v}from"./_plugin-vue_export-helper-CXTkFu_Z.js";import{a as ce,n as le,o as y,t as b}from"./listPageState-u1yUuMzb.js";import{t as x}from"./PortalPagination-BESu4Eln.js";var S={class:`reviewer-projects-page`},C={class:`container-fluid p-3 p-md-4`},w={class:`filter-panel mb-3`},T={class:`row g-2`},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`},L={class:`reviewer-only-col text-nowrap`},R={class:`admin-actions-cell portal-sticky-right-1`},z=v(ne({__name:`ReviewerProjectsView`,setup(ne){let v=oe(),z=se(),B=s(()=>String(v.params.slug??``).trim()),V=a([]),H=a(!1),U=a(``),W=a(``),G=te({keyword:``,review_status:``}),K=a({current_page:1,last_page:1,per_page:20,total:0}),q=a(1),J=a(15);function Y(){return b(`reviewer-projects`,B.value)}function X(){return le({page:q.value,perPage:J.value})}function Z(){let e=Y();e.endsWith(`.`)||y(e,{page:q.value,perPage:J.value})}function ue(){let e=ce(Y(),v.query);q.value=e.page,J.value=e.perPage}function de(){let e=X(),t=typeof v.query.page==`string`?v.query.page:void 0,n=typeof v.query.per_page==`string`?v.query.per_page:void 0;t===e.page&&n===e.per_page||B.value&&z.replace({name:`reviewer-projects`,params:{slug:B.value},query:e})}function fe(){let e=new URLSearchParams;e.set(`competition_slug`,B.value),e.set(`page`,String(q.value)),e.set(`per_page`,String(J.value));let t=G.keyword.trim();return t&&e.set(`keyword`,t),(G.review_status===`pending`||G.review_status===`reviewed`)&&e.set(`review_status`,G.review_status),e}async function pe(){let e=B.value,{token:t}=re();if(!e||!t){U.value=`未登录或缺少赛事信息`;return}H.value=!0,U.value=``;try{let e=`${ie()}${ae}?${fe().toString()}`,n=await fetch(e,{headers:{Authorization:`Bearer ${t}`,Accept:`application/json`}});if(!n.ok){let e=await n.json().catch(()=>({}));U.value=(typeof e==`object`&&e&&`message`in e?String(e.message??``):``)||`加载失败(${n.status})`,V.value=[],W.value=``;return}let r=await n.json();V.value=Array.isArray(r.data)?r.data:[];let i=r.meta;i&&(K.value={current_page:i.current_page??1,last_page:i.last_page??1,per_page:i.per_page??20,total:i.total??0}),me()}catch{U.value=`网络错误,请稍后重试`,V.value=[],W.value=``}finally{H.value=!1}}function me(){let e=K.value.total;if(e<=0){W.value=`暂无符合条件的数据`;return}let t=[`共 ${e} 条`],n=G.keyword.trim();n&&t.push(`关键词「${n}」`),G.review_status===`pending`?t.push(`待评审`):G.review_status===`reviewed`&&t.push(`已评审`),W.value=t.join(` · `)}function Q(e=q.value){q.value=e}function he(){G.keyword=``,G.review_status=``,Q(1)}ue(),o([B,q,J],()=>{Z(),de(),pe()},{immediate:!0});let ge=s(()=>H.value?`加载中…`:W.value||`暂无报名数据`);function $(e){q.value=e}function _e(e){J.value=e,q.value=1}function ve(e){return(K.value.current_page-1)*K.value.per_page+e+1}function ye(e){return e.score_is_pending?`评审`:`查看`}return(a,o)=>{let s=ee(`router-link`);return p(),g(`div`,S,[_(`div`,C,[o[7]||=_(`div`,{class:`d-flex justify-content-between align-items-center flex-wrap gap-2 mb-3`},[_(`h5`,{class:`mb-0 section-title`},`项目评审`)],-1),_(`div`,w,[_(`div`,T,[_(`div`,E,[c(_(`input`,{"onUpdate:modelValue":o[0]||=e=>G.keyword=e,type:`search`,class:`form-control`,placeholder:`搜索项目、姓名、学校、手机号、推荐方`,onKeydown:o[1]||=f(e=>Q(1),[`enter`])},null,544),[[l,G.keyword]])]),_(`div`,D,[c(_(`select`,{"onUpdate:modelValue":o[2]||=e=>G.review_status=e,class:`form-select`},[...o[4]||=[_(`option`,{value:``},`全部评审状态`,-1),_(`option`,{value:`pending`},`待评审`,-1),_(`option`,{value:`reviewed`},`已评审`,-1)]],512),[[h,G.review_status]])]),_(`div`,O,[_(`button`,{type:`button`,class:`btn btn-primary px-3`,onClick:o[3]||=e=>Q(1)},`查询`),_(`button`,{type:`button`,class:`btn btn-light border px-3`,onClick:he},`重置`)])])]),U.value?(p(),g(`p`,k,d(U.value),1)):(p(),g(`p`,A,d(ge.value),1)),_(`div`,j,[_(`table`,M,[o[6]||=_(`thead`,{class:`table-light`},[_(`tr`,null,[_(`th`,{class:`text-nowrap portal-sticky-left`,style:{width:`3.5rem`}},`序号`),_(`th`,{class:`text-nowrap`},`项目编号`),_(`th`,{class:`cell-wrap`},`项目名称`),_(`th`,{class:`text-nowrap`},`姓名`),_(`th`,{class:`cell-wrap`},`项目所在地`),_(`th`,{class:`cell-wrap reviewer-only-col`},`毕业院校`),_(`th`,{class:`text-nowrap reviewer-only-col`},`最高学历`),_(`th`,{class:`cell-wrap`},`赛道`),_(`th`,{class:`text-nowrap`},`评分`),_(`th`,{class:`text-nowrap reviewer-only-col`},`提交时间`),_(`th`,{class:`text-nowrap admin-actions-head portal-sticky-right-1`},`操作`)])],-1),_(`tbody`,null,[!H.value&&V.value.length===0&&!U.value?(p(),g(`tr`,N,[...o[5]||=[_(`td`,{colspan:`11`,class:`text-center text-secondary py-4`},`暂无符合条件的数据`,-1)]])):t(``,!0),(p(!0),g(u,null,i(V.value,(t,i)=>(p(),g(`tr`,{key:t.id,"data-list-row":``},[_(`td`,P,d(ve(i)),1),_(`td`,null,d(t.project_code),1),_(`td`,null,d(t.project_name||`—`),1),_(`td`,null,d(t.player_name||`—`),1),_(`td`,null,d(t.location_label),1),_(`td`,F,d(t.school||`—`),1),_(`td`,I,d(t.degree||`—`),1),_(`td`,null,d(t.track_title||t.track_code||`—`),1),_(`td`,{class:e({"admin-total-pending-text":t.score_is_pending})},d(t.score_display),3),_(`td`,L,d(t.submitted_at||`—`),1),_(`td`,R,[r(s,{class:`btn btn-sm btn-outline-primary`,to:{name:`reviewer-application-detail`,params:{slug:B.value,id:String(t.id)},query:X()},onClick:Z},{default:m(()=>[n(d(ye(t)),1)]),_:2},1032,[`to`])])]))),128))])])]),r(x,{page:q.value,"per-page":J.value,total:K.value.total,"onUpdate:page":$,"onUpdate:perPage":_e},null,8,[`page`,`per-page`,`total`])])])}}}),[[`__scopeId`,`data-v-bdfae27a`]]);export{z as default}; \ No newline at end of file diff --git a/public/admin/assets/ReviewerProjectsView-Cfl8XHVC.css b/public/admin/assets/ReviewerProjectsView-Cfl8XHVC.css deleted file mode 100644 index ba74fd3..0000000 --- a/public/admin/assets/ReviewerProjectsView-Cfl8XHVC.css +++ /dev/null @@ -1 +0,0 @@ -.reviewer-projects-page[data-v-4ff044c8]{flex:auto;min-height:0}.reviewer-projects-page[data-v-4ff044c8] .reviewer-only-col{display:table-cell} diff --git a/public/admin/assets/ReviewerProjectsView-jPz8ApNU.js b/public/admin/assets/ReviewerProjectsView-jPz8ApNU.js deleted file mode 100644 index 13b7d8a..0000000 --- a/public/admin/assets/ReviewerProjectsView-jPz8ApNU.js +++ /dev/null @@ -1 +0,0 @@ -import{$t as e,C as t,D as n,O as r,Y as i,Z as ee,_t as a,at as o,b as s,ct as c,d as l,g as u,ht as d,in as f,k as p,p as m,q as h,st as te,u as g,w as _,x as v}from"./vue.runtime.esm-bundler-OsdSFvn7.js";import{b as y,p as b,s as x}from"./api-Cy3G2Clw.js";import{o as ne,s as re}from"./index-BCZX_WPn.js";import{t as S}from"./_plugin-vue_export-helper-CXTkFu_Z.js";import{t as ie}from"./PortalPagination-CP5glO9c.js";var C={class:`reviewer-projects-page`},w={class:`container-fluid p-3 p-md-4`},T={class:`filter-panel mb-3`},E={class:`row g-2`},D={class:`col-md-4`},O={class:`col-md-3`},k={class:`col-12 col-md-auto d-flex gap-2`},A={key:0,class:`alert alert-warning py-2 small mb-3`,role:`alert`},j={key:1,class:`small text-secondary mb-2`,"aria-live":`polite`},M={class:`portal-table-scroll table-panel mb-0`},N={class:`table table-hover align-middle mb-0 admin-list-table portal-data-table portal-reviewer-table`},P={key:0},F={class:`text-secondary text-nowrap portal-sticky-left`},I={class:`reviewer-only-col`},L={class:`reviewer-only-col`},R={class:`reviewer-only-col text-nowrap`},z={class:`admin-actions-cell portal-sticky-right-1`},B=S(p({__name:`ReviewerProjectsView`,setup(p){let S=ne(),B=re(),V=s(()=>String(S.params.slug??``).trim()),H=a([]),U=a(!1),W=a(``),G=a(``),K=d({keyword:``,review_status:``}),q=a({current_page:1,last_page:1,per_page:20,total:0}),J=a(1),Y=a(15);function X(e,t){let n=typeof e==`string`?Number(e):typeof e==`number`?e:NaN;return Number.isInteger(n)&&n>0?n:t}function Z(){let e={};return J.value>1&&(e.page=String(J.value)),Y.value!==15&&(e.per_page=String(Y.value)),e}function ae(){J.value=X(S.query.page,1),Y.value=X(S.query.per_page,15)}function oe(){let e=Z(),t=typeof S.query.page==`string`?S.query.page:void 0,n=typeof S.query.per_page==`string`?S.query.per_page:void 0;t===e.page&&n===e.per_page||B.replace({query:e})}function se(){let e=new URLSearchParams;e.set(`competition_slug`,V.value),e.set(`page`,String(J.value)),e.set(`per_page`,String(Y.value));let t=K.keyword.trim();return t&&e.set(`keyword`,t),(K.review_status===`pending`||K.review_status===`reviewed`)&&e.set(`review_status`,K.review_status),e}async function ce(){let e=V.value,{token:t}=y();if(!e||!t){W.value=`未登录或缺少赛事信息`;return}U.value=!0,W.value=``;try{let e=`${b()}${x}?${se().toString()}`,n=await fetch(e,{headers:{Authorization:`Bearer ${t}`,Accept:`application/json`}});if(!n.ok){let e=await n.json().catch(()=>({}));W.value=(typeof e==`object`&&e&&`message`in e?String(e.message??``):``)||`加载失败(${n.status})`,H.value=[],G.value=``;return}let r=await n.json();H.value=Array.isArray(r.data)?r.data:[];let i=r.meta;i&&(q.value={current_page:i.current_page??1,last_page:i.last_page??1,per_page:i.per_page??20,total:i.total??0}),le()}catch{W.value=`网络错误,请稍后重试`,H.value=[],G.value=``}finally{U.value=!1}}function le(){let e=q.value.total;if(e<=0){G.value=`暂无符合条件的数据`;return}let t=[`共 ${e} 条`],n=K.keyword.trim();n&&t.push(`关键词「${n}」`),K.review_status===`pending`?t.push(`待评审`):K.review_status===`reviewed`&&t.push(`已评审`),G.value=t.join(` · `)}function Q(e=J.value){J.value=e}function $(){K.keyword=``,K.review_status=``,Q(1)}ae(),o([V,J,Y],()=>{oe(),ce()},{immediate:!0});let ue=s(()=>U.value?`加载中…`:G.value||`暂无报名数据`);function de(e){J.value=e}function fe(e){Y.value=e,J.value=1}function pe(e){return(q.value.current_page-1)*q.value.per_page+e+1}function me(e){return e.score_is_pending?`评审`:`查看`}return(a,o)=>{let s=ee(`router-link`);return h(),_(`div`,C,[v(`div`,w,[o[7]||=v(`div`,{class:`d-flex justify-content-between align-items-center flex-wrap gap-2 mb-3`},[v(`h5`,{class:`mb-0 section-title`},`项目评审`)],-1),v(`div`,T,[v(`div`,E,[v(`div`,D,[c(v(`input`,{"onUpdate:modelValue":o[0]||=e=>K.keyword=e,type:`search`,class:`form-control`,placeholder:`搜索项目、姓名、学校、手机号、推荐方`,onKeydown:o[1]||=m(e=>Q(1),[`enter`])},null,544),[[l,K.keyword]])]),v(`div`,O,[c(v(`select`,{"onUpdate:modelValue":o[2]||=e=>K.review_status=e,class:`form-select`},[...o[4]||=[v(`option`,{value:``},`全部评审状态`,-1),v(`option`,{value:`pending`},`待评审`,-1),v(`option`,{value:`reviewed`},`已评审`,-1)]],512),[[g,K.review_status]])]),v(`div`,k,[v(`button`,{type:`button`,class:`btn btn-primary px-3`,onClick:o[3]||=e=>Q(1)},`查询`),v(`button`,{type:`button`,class:`btn btn-light border px-3`,onClick:$},`重置`)])])]),W.value?(h(),_(`p`,A,f(W.value),1)):(h(),_(`p`,j,f(ue.value),1)),v(`div`,M,[v(`table`,N,[o[6]||=v(`thead`,{class:`table-light`},[v(`tr`,null,[v(`th`,{class:`text-nowrap portal-sticky-left`,style:{width:`3.5rem`}},`序号`),v(`th`,{class:`text-nowrap`},`项目编号`),v(`th`,{class:`cell-wrap`},`项目名称`),v(`th`,{class:`text-nowrap`},`姓名`),v(`th`,{class:`cell-wrap`},`项目所在地`),v(`th`,{class:`cell-wrap reviewer-only-col`},`毕业院校`),v(`th`,{class:`text-nowrap reviewer-only-col`},`最高学历`),v(`th`,{class:`cell-wrap`},`赛道`),v(`th`,{class:`text-nowrap`},`评分`),v(`th`,{class:`text-nowrap reviewer-only-col`},`提交时间`),v(`th`,{class:`text-nowrap admin-actions-head portal-sticky-right-1`},`操作`)])],-1),v(`tbody`,null,[!U.value&&H.value.length===0&&!W.value?(h(),_(`tr`,P,[...o[5]||=[v(`td`,{colspan:`11`,class:`text-center text-secondary py-4`},`暂无符合条件的数据`,-1)]])):t(``,!0),(h(!0),_(u,null,i(H.value,(t,i)=>(h(),_(`tr`,{key:t.id,"data-list-row":``},[v(`td`,F,f(pe(i)),1),v(`td`,null,f(t.project_code),1),v(`td`,null,f(t.project_name||`—`),1),v(`td`,null,f(t.player_name||`—`),1),v(`td`,null,f(t.location_label),1),v(`td`,I,f(t.school||`—`),1),v(`td`,L,f(t.degree||`—`),1),v(`td`,null,f(t.track_title||t.track_code||`—`),1),v(`td`,{class:e({"admin-total-pending-text":t.score_is_pending})},f(t.score_display),3),v(`td`,R,f(t.submitted_at||`—`),1),v(`td`,z,[r(s,{class:`btn btn-sm btn-outline-primary`,to:{name:`reviewer-application-detail`,params:{slug:V.value,id:String(t.id)},query:Z()}},{default:te(()=>[n(f(me(t)),1)]),_:2},1032,[`to`])])]))),128))])])]),r(ie,{page:J.value,"per-page":Y.value,total:q.value.total,"onUpdate:page":de,"onUpdate:perPage":fe},null,8,[`page`,`per-page`,`total`])])])}}}),[[`__scopeId`,`data-v-4ff044c8`]]);export{B as default}; \ No newline at end of file diff --git a/public/admin/assets/ReviewerProjectsView-jrhHM-bp.css b/public/admin/assets/ReviewerProjectsView-jrhHM-bp.css new file mode 100644 index 0000000..05c2624 --- /dev/null +++ b/public/admin/assets/ReviewerProjectsView-jrhHM-bp.css @@ -0,0 +1 @@ +.reviewer-projects-page[data-v-bdfae27a]{flex:auto;min-height:0}.reviewer-projects-page[data-v-bdfae27a] .reviewer-only-col{display:table-cell} diff --git a/public/admin/assets/adminCompetition-C0UX3UwR.js b/public/admin/assets/adminCompetition-dnUmBw9X.js similarity index 86% rename from public/admin/assets/adminCompetition-C0UX3UwR.js rename to public/admin/assets/adminCompetition-dnUmBw9X.js index eea5812..3aa10f1 100644 --- a/public/admin/assets/adminCompetition-C0UX3UwR.js +++ b/public/admin/assets/adminCompetition-dnUmBw9X.js @@ -1 +1 @@ -import{_t as e,b as t}from"./vue.runtime.esm-bundler-OsdSFvn7.js";import{t as n}from"./api-Cy3G2Clw.js";import{g as r}from"./index-BCZX_WPn.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-Cy3G2Clw.js";import{g as r}from"./index-BFG9yM8q.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-GU2eDYYi.js b/public/admin/assets/applications-B3QNZX0l.js similarity index 95% rename from public/admin/assets/applications-GU2eDYYi.js rename to public/admin/assets/applications-B3QNZX0l.js index 0e35c9d..347ecb6 100644 --- a/public/admin/assets/applications-GU2eDYYi.js +++ b/public/admin/assets/applications-B3QNZX0l.js @@ -1 +1 @@ -import{a as e,i as t}from"./index-BCZX_WPn.js";function n(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 r(e,r){let{data:i}=await t.get(`/competitions/${e}/applications`,{params:r});return n(i)}async function i(e,n){let{data:r}=await t.get(`/competitions/${e}/applications/${n}`);if(!r||typeof r!=`object`)throw Error(`报名详情无效`);return r}async function a(e,n,r,i){o((await t.get(`/competitions/${e}/applications/${n}/files/${r}/download`,{responseType:`blob`})).data,i||`附件`)}function o(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 s(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 c(t){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.message||`导出失败`)}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.message||`导出失败`)}}return t instanceof Error?t:Error(`导出失败`)}function l(e){return new Promise(t=>{window.setTimeout(t,e)})}function u(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 d(e,n){try{let{data:r}=await t.get(`/competitions/${e}/applications/export/meta`,{params:u(n)});if(!r||typeof r!=`object`)throw Error(`导出信息无效`);return r}catch(e){throw await c(e)}}async function f(e,n,r){let i;try{i=await t.get(`/competitions/${e}/applications/export`,{params:u({...n,part:r}),responseType:`blob`,timeout:0})}catch(e){throw await c(e)}let a=n.mode===`xlsx`?`报名信息.xlsx`:`报名信息导出_第${r}部分.zip`,l=s(i.headers[`content-disposition`],a);o(i.data,l)}async function p(e,t,n){let r=await d(e,t);if(t.mode===`xlsx`)return n?.(1,1),await f(e,t,1),r;for(let i=1;i<=r.part_count;i+=1)n?.(i,r.part_count),await f(e,t,i),i{window.setTimeout(t,e)})}function u(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 d(e,n){try{let{data:r}=await t.get(`/competitions/${e}/applications/export/meta`,{params:u(n)});if(!r||typeof r!=`object`)throw Error(`导出信息无效`);return r}catch(e){throw await c(e)}}async function f(e,n,r){let i;try{i=await t.get(`/competitions/${e}/applications/export`,{params:u({...n,part:r}),responseType:`blob`,timeout:0})}catch(e){throw await c(e)}let a=n.mode===`xlsx`?`报名信息.xlsx`:`报名信息导出_第${r}部分.zip`,l=s(i.headers[`content-disposition`],a);o(i.data,l)}async function p(e,t,n){let r=await d(e,t);if(t.mode===`xlsx`)return n?.(1,1),await f(e,t,1),r;for(let i=1;i<=r.part_count;i+=1)n?.(i,r.part_count),await f(e,t,i),ii.map(i=>d[i]); +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/AdminDashboardView-QrNIiQmE.js","assets/_plugin-vue_export-helper-CXTkFu_Z.js","assets/vue.runtime.esm-bundler-OsdSFvn7.js","assets/rolldown-runtime-BYbx6iT9.js","assets/competitions-BS1Y5XBa.js","assets/adminCompetition-dnUmBw9X.js","assets/api-Cy3G2Clw.js","assets/competitionAdminLabels-D6x-u-ir.js","assets/AdminDashboardView-BDH7vJ-D.css","assets/CompetitionListView-yQPlRTwU.js","assets/CompetitionListView-BkKXaYfF.css","assets/CompetitionFormView-DqNsX39q.js","assets/applications-B3QNZX0l.js","assets/publicSourceChannels-Xl9QwIAR.js","assets/signupChannels-C2k0F3i5.js","assets/competitionBranding-DKFkcrfF.js","assets/CompetitionFormView-BPQuSoqE.css","assets/PublicSourceChannelManageView-bZ36_DCY.js","assets/PublicSourceChannelManageView-BlYQZ21s.css","assets/ReviewerManageView-C037R0cW.js","assets/ReviewerManageView-Df4_-0wa.css","assets/ReviewPortalView-BBBLfyIF.js","assets/ReviewPortalView-TJk8rGN4.css","assets/AdminUserManageView-DEFhShQd.js","assets/AdminUserManageView-B1YUG7sR.css","assets/AdminMenuGroupLayout-Bb7HH6Ks.js","assets/MainLayout-UF6ZpMmZ.js","assets/MainLayout-Cvj_dHyL.css","assets/bootstrap-CwawXFoc.css","assets/prototype-styles-ByAEW-uK.css","assets/ParticipantLandingView-f-C152XD.js","assets/LoginView-CiXA8l_c.js","assets/participantContact-DSzdsPPk.js","assets/login-page-overrides-DYbz0V_p.css","assets/ReviewerLoginView-CAPuAWlm.js","assets/ReviewerLayout-DrMtHdQb.js","assets/PortalChangePasswordModal-DBmd4yLD.js","assets/ReviewerLayout-JjbZt3_W.css","assets/ReviewerApplicationDetailView-JUv8HliQ.js","assets/ApplicationSignupDetailFields-CQfdKOn5.js","assets/listPageState-u1yUuMzb.js","assets/ReviewerApplicationDetailView-Ds7NRDOB.css","assets/ReviewerProjectsView-BZjHQZHX.js","assets/PortalPagination-BESu4Eln.js","assets/ReviewerProjectsView-jrhHM-bp.css","assets/ManageLoginView-C9JMyf5G.js","assets/auth-De5mltp0.js","assets/CompetitionManageLayout-D7896D_2.js","assets/CompetitionManageLayout-CZ8MKM2w.css","assets/ManageDashboardView-DFfRGoDB.js","assets/ManageProjectsView-xGQol3IC.js","assets/ManageProjectDetailView-BwBn2Dhm.js","assets/ManageProjectDetailView-CtxLicrL.css","assets/ManageReviewersView-DlMOVNNt.js","assets/ManageReviewersView-D9CF0pgU.css","assets/ApplyView-DjjKZu7K.js","assets/ApplyView-B2-GlRXn.css","assets/AdminLoginView-BnfIanhh.js","assets/AdminLoginView-CKOqnZil.css","assets/AdminLayout-4ZoEmerN.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{_ as Ge,b as Ke,f as qe,i as Je,n as Ye,p as Xe,r as Ze,u as Qe,v as $e,y as et}from"./api-Cy3G2Clw.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 tt=`bottom`,nt=`right`,rt=`left`,it=`auto`,at=[`top`,tt,nt,rt],ot=`start`,st=`clippingParents`,ct=`viewport`,lt=`popper`,ut=`reference`,dt=at.reduce(function(e,t){return e.concat([t+`-`+ot,t+`-end`])},[]),ft=[].concat(at,[it]).reduce(function(e,t){return e.concat([t,t+`-`+ot,t+`-end`])},[]),pt=`beforeRead`,mt=`read`,ht=`afterRead`,gt=`beforeMain`,_t=`main`,vt=`afterMain`,yt=`beforeWrite`,bt=`write`,xt=`afterWrite`,St=[pt,mt,ht,gt,_t,vt,yt,bt,xt];function Ct(e){return e?(e.nodeName||``).toLowerCase():null}function wt(e){if(e==null)return window;if(e.toString()!==`[object Window]`){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function Tt(e){return e instanceof wt(e).Element||e instanceof Element}function Et(e){return e instanceof wt(e).HTMLElement||e instanceof HTMLElement}function Dt(e){return typeof ShadowRoot>`u`?!1:e instanceof wt(e).ShadowRoot||e instanceof ShadowRoot}function Ot(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];!Et(i)||!Ct(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 kt(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},{});!Et(r)||!Ct(r)||(Object.assign(r.style,a),Object.keys(i).forEach(function(e){r.removeAttribute(e)}))})}}var At={name:`applyStyles`,enabled:!0,phase:`write`,fn:Ot,effect:kt,requires:[`computeStyles`]};function jt(e){return e.split(`-`)[0]}var Mt=Math.max,Nt=Math.min,Pt=Math.round;function Ft(){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 It(){return!/^((?!chrome|android).)*safari/i.test(Ft())}function Lt(e,t,n){t===void 0&&(t=!1),n===void 0&&(n=!1);var r=e.getBoundingClientRect(),i=1,a=1;t&&Et(e)&&(i=e.offsetWidth>0&&Pt(r.width)/e.offsetWidth||1,a=e.offsetHeight>0&&Pt(r.height)/e.offsetHeight||1);var o=(Tt(e)?wt(e):window).visualViewport,s=!It()&&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 Rt(e){var t=Lt(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 zt(e,t){var n=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(n&&Dt(n)){var r=t;do{if(r&&e.isSameNode(r))return!0;r=r.parentNode||r.host}while(r)}return!1}function Bt(e){return wt(e).getComputedStyle(e)}function Vt(e){return[`table`,`td`,`th`].indexOf(Ct(e))>=0}function Ht(e){return((Tt(e)?e.ownerDocument:e.document)||window.document).documentElement}function Ut(e){return Ct(e)===`html`?e:e.assignedSlot||e.parentNode||(Dt(e)?e.host:null)||Ht(e)}function Wt(e){return!Et(e)||Bt(e).position===`fixed`?null:e.offsetParent}function Gt(e){var t=/firefox/i.test(Ft());if(/Trident/i.test(Ft())&&Et(e)&&Bt(e).position===`fixed`)return null;var n=Ut(e);for(Dt(n)&&(n=n.host);Et(n)&&[`html`,`body`].indexOf(Ct(n))<0;){var r=Bt(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 Kt(e){for(var t=wt(e),n=Wt(e);n&&Vt(n)&&Bt(n).position===`static`;)n=Wt(n);return n&&(Ct(n)===`html`||Ct(n)===`body`&&Bt(n).position===`static`)?t:n||Gt(e)||t}function qt(e){return[`top`,`bottom`].indexOf(e)>=0?`x`:`y`}function Jt(e,t,n){return Mt(e,Nt(t,n))}function Yt(e,t,n){var r=Jt(e,t,n);return r>n?n:r}function Xt(){return{top:0,right:0,bottom:0,left:0}}function Zt(e){return Object.assign({},Xt(),e)}function Qt(e,t){return t.reduce(function(t,n){return t[n]=e,t},{})}var $t=function(e,t){return e=typeof e==`function`?e(Object.assign({},t.rects,{placement:t.placement})):e,Zt(typeof e==`number`?Qt(e,at):e)};function en(e){var t,n=e.state,r=e.name,i=e.options,a=n.elements.arrow,o=n.modifiersData.popperOffsets,s=jt(n.placement),c=qt(s),l=[`left`,`right`].indexOf(s)>=0?`height`:`width`;if(!(!a||!o)){var u=$t(i.padding,n),d=Rt(a),f=c===`y`?`top`:rt,p=c===`y`?tt:nt,m=n.rects.reference[l]+n.rects.reference[c]-o[c]-n.rects.popper[l],h=o[c]-n.rects.reference[c],g=Kt(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=Jt(y,x,b),C=c;n.modifiersData[r]=(t={},t[C]=S,t.centerOffset=S-x,t)}}function tn(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)||zt(t.elements.popper,r)&&(t.elements.arrow=r))}var nn={name:`arrow`,enabled:!0,phase:`main`,fn:en,effect:tn,requires:[`popperOffsets`],requiresIfExists:[`preventOverflow`]};function rn(e){return e.split(`-`)[1]}var an={top:`auto`,right:`auto`,bottom:`auto`,left:`auto`};function on(e,t){var n=e.x,r=e.y,i=t.devicePixelRatio||1;return{x:Pt(n*i)/i||0,y:Pt(r*i)/i||0}}function sn(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=rt,b=`top`,x=window;if(l){var S=Kt(n),C=`clientHeight`,w=`clientWidth`;if(S===wt(n)&&(S=Ht(n),Bt(S).position!==`static`&&s===`absolute`&&(C=`scrollHeight`,w=`scrollWidth`)),S=S,i===`top`||(i===`left`||i===`right`)&&a===`end`){b=tt;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=nt;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&&an),O=u===!0?on({x:p,y:h},wt(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 cn(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:jt(t.placement),variation:rn(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,sn(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,sn(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 ln={name:`computeStyles`,enabled:!0,phase:`beforeWrite`,fn:cn,data:{}},un={passive:!0};function dn(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=wt(t.elements.popper),l=[].concat(t.scrollParents.reference,t.scrollParents.popper);return a&&l.forEach(function(e){e.addEventListener(`scroll`,n.update,un)}),s&&c.addEventListener(`resize`,n.update,un),function(){a&&l.forEach(function(e){e.removeEventListener(`scroll`,n.update,un)}),s&&c.removeEventListener(`resize`,n.update,un)}}var fn={name:`eventListeners`,enabled:!0,phase:`write`,fn:function(){},effect:dn,data:{}},pn={left:`right`,right:`left`,bottom:`top`,top:`bottom`};function mn(e){return e.replace(/left|right|bottom|top/g,function(e){return pn[e]})}var hn={start:`end`,end:`start`};function gn(e){return e.replace(/start|end/g,function(e){return hn[e]})}function _n(e){var t=wt(e);return{scrollLeft:t.pageXOffset,scrollTop:t.pageYOffset}}function vn(e){return Lt(Ht(e)).left+_n(e).scrollLeft}function yn(e,t){var n=wt(e),r=Ht(e),i=n.visualViewport,a=r.clientWidth,o=r.clientHeight,s=0,c=0;if(i){a=i.width,o=i.height;var l=It();(l||!l&&t===`fixed`)&&(s=i.offsetLeft,c=i.offsetTop)}return{width:a,height:o,x:s+vn(e),y:c}}function bn(e){var t=Ht(e),n=_n(e),r=e.ownerDocument?.body,i=Mt(t.scrollWidth,t.clientWidth,r?r.scrollWidth:0,r?r.clientWidth:0),a=Mt(t.scrollHeight,t.clientHeight,r?r.scrollHeight:0,r?r.clientHeight:0),o=-n.scrollLeft+vn(e),s=-n.scrollTop;return Bt(r||t).direction===`rtl`&&(o+=Mt(t.clientWidth,r?r.clientWidth:0)-i),{width:i,height:a,x:o,y:s}}function xn(e){var t=Bt(e),n=t.overflow,r=t.overflowX,i=t.overflowY;return/auto|scroll|overlay|hidden/.test(n+i+r)}function Sn(e){return[`html`,`body`,`#document`].indexOf(Ct(e))>=0?e.ownerDocument.body:Et(e)&&xn(e)?e:Sn(Ut(e))}function Cn(e,t){t===void 0&&(t=[]);var n=Sn(e),r=n===e.ownerDocument?.body,i=wt(n),a=r?[i].concat(i.visualViewport||[],xn(n)?n:[]):n,o=t.concat(a);return r?o:o.concat(Cn(Ut(a)))}function wn(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function Tn(e,t){var n=Lt(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 En(e,t,n){return t===`viewport`?wn(yn(e,n)):Tt(t)?Tn(t,n):wn(bn(Ht(e)))}function Dn(e){var t=Cn(Ut(e)),n=[`absolute`,`fixed`].indexOf(Bt(e).position)>=0&&Et(e)?Kt(e):e;return Tt(n)?t.filter(function(e){return Tt(e)&&zt(e,n)&&Ct(e)!==`body`}):[]}function On(e,t,n,r){var i=t===`clippingParents`?Dn(e):[].concat(t),a=[].concat(i,[n]),o=a[0],s=a.reduce(function(t,n){var i=En(e,n,r);return t.top=Mt(i.top,t.top),t.right=Nt(i.right,t.right),t.bottom=Nt(i.bottom,t.bottom),t.left=Mt(i.left,t.left),t},En(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 kn(e){var t=e.reference,n=e.element,r=e.placement,i=r?jt(r):null,a=r?rn(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 tt:c={x:o,y:t.y+t.height};break;case nt:c={x:t.x+t.width,y:s};break;case rt:c={x:t.x-n.width,y:s};break;default:c={x:t.x,y:t.y}}var l=i?qt(i):null;if(l!=null){var u=l===`y`?`height`:`width`;switch(a){case ot: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 An(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?st:s,l=n.rootBoundary,u=l===void 0?ct:l,d=n.elementContext,f=d===void 0?lt:d,p=n.altBoundary,m=p===void 0?!1:p,h=n.padding,g=h===void 0?0:h,_=Zt(typeof g==`number`?Qt(g,at):g),v=f===`popper`?ut:lt,y=e.rects.popper,b=e.elements[m?v:f],x=On(Tt(b)?b:b.contextElement||Ht(e.elements.popper),c,u,o),S=Lt(e.elements.reference),C=kn({reference:S,element:y,strategy:`absolute`,placement:i}),w=wn(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 jn(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?ft:c,u=rn(r),d=u?s?dt:dt.filter(function(e){return rn(e)===u}):at,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]=An(e,{placement:n,boundary:i,rootBoundary:a,padding:o})[jt(n)],t},{});return Object.keys(p).sort(function(e,t){return p[e]-p[t]})}function Mn(e){if(jt(e)===`auto`)return[];var t=mn(e);return[gn(e),t,gn(t)]}function Nn(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,_=jt(g)===g,v=c||(_||!m?[mn(g)]:Mn(g)),y=[g].concat(v).reduce(function(e,n){return e.concat(jt(n)===`auto`?jn(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=An(t,{placement:E,boundary:u,rootBoundary:d,altBoundary:f,padding:l}),M=k?O?nt:rt:O?tt:`top`;b[A]>x[A]&&(M=mn(M));var ee=mn(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 Pn={name:`flip`,enabled:!0,phase:`main`,fn:Nn,requiresIfExists:[`offset`],data:{_skip:!1}};function Fn(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 In(e){return[`top`,nt,tt,rt].some(function(t){return e[t]>=0})}function Ln(e){var t=e.state,n=e.name,r=t.rects.reference,i=t.rects.popper,a=t.modifiersData.preventOverflow,o=An(t,{elementContext:`reference`}),s=An(t,{altBoundary:!0}),c=Fn(o,r),l=Fn(s,i,a),u=In(c),d=In(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 Rn={name:`hide`,enabled:!0,phase:`main`,requiresIfExists:[`preventOverflow`],fn:Ln};function zn(e,t,n){var r=jt(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 Bn(e){var t=e.state,n=e.options,r=e.name,i=n.offset,a=i===void 0?[0,0]:i,o=ft.reduce(function(e,n){return e[n]=zn(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 Vn={name:`offset`,enabled:!0,phase:`main`,requires:[`popperOffsets`],fn:Bn};function Hn(e){var t=e.state,n=e.name;t.modifiersData[n]=kn({reference:t.rects.reference,element:t.rects.popper,strategy:`absolute`,placement:t.placement})}var Un={name:`popperOffsets`,enabled:!0,phase:`read`,fn:Hn,data:{}};function Wn(e){return e===`x`?`y`:`x`}function Gn(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=An(t,{boundary:c,rootBoundary:l,padding:d,altBoundary:u}),_=jt(t.placement),v=rn(t.placement),y=!v,b=qt(_),x=Wn(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`:rt,A=b===`y`?tt:nt,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?Rt(I):{width:0,height:0},ne=t.modifiersData[`arrow#persistent`]?t.modifiersData[`arrow#persistent`].padding:Xt(),R=ne[k],z=ne[A],re=Jt(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&&Kt(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=Jt(p?Nt(ee,oe):ee,M,p?Mt(te,se):te);S[b]=ce,O[b]=ce-M}if(s){var le=b===`x`?`top`:rt,ue=b===`x`?tt:nt,de=S[x],fe=x===`y`?`height`:`width`,pe=de+g[le],me=de-g[ue],he=[`top`,rt].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?Yt(_e,de,U):Jt(p?_e:pe,de,p?U:me);S[x]=ve,O[x]=ve-de}t.modifiersData[r]=O}}var Kn={name:`preventOverflow`,enabled:!0,phase:`main`,fn:Gn,requiresIfExists:[`offset`]};function qn(e){return{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}}function Jn(e){return e===wt(e)||!Et(e)?_n(e):qn(e)}function Yn(e){var t=e.getBoundingClientRect(),n=Pt(t.width)/e.offsetWidth||1,r=Pt(t.height)/e.offsetHeight||1;return n!==1||r!==1}function Xn(e,t,n){n===void 0&&(n=!1);var r=Et(t),i=Et(t)&&Yn(t),a=Ht(t),o=Lt(e,i,n),s={scrollLeft:0,scrollTop:0},c={x:0,y:0};return(r||!r&&!n)&&((Ct(t)!==`body`||xn(a))&&(s=Jn(t)),Et(t)?(c=Lt(t,!0),c.x+=t.clientLeft,c.y+=t.clientTop):a&&(c.x=vn(a))),{x:o.left+s.scrollLeft-c.x,y:o.top+s.scrollTop-c.y,width:o.width,height:o.height}}function Zn(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 Qn(e){var t=Zn(e);return St.reduce(function(e,n){return e.concat(t.filter(function(e){return e.phase===n}))},[])}function $n(e){var t;return function(){return t||=new Promise(function(n){Promise.resolve().then(function(){t=void 0,n(e())})}),t}}function er(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 tr={placement:`bottom`,modifiers:[],strategy:`absolute`};function nr(){return![...arguments].some(function(e){return!(e&&typeof e.getBoundingClientRect==`function`)})}function rr(e){e===void 0&&(e={});var t=e,n=t.defaultModifiers,r=n===void 0?[]:n,i=t.defaultOptions,a=i===void 0?tr:i;return function(e,t,n){n===void 0&&(n=a);var i={placement:`bottom`,orderedModifiers:[],options:Object.assign({},tr,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:Tt(e)?Cn(e):e.contextElement?Cn(e.contextElement):[],popper:Cn(t)};var s=Qn(er([].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(nr(t,n)){i.rects={reference:Xn(t,Kt(n),i.options.strategy===`fixed`),popper:Rt(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;rvt,afterRead:()=>ht,afterWrite:()=>xt,applyStyles:()=>At,arrow:()=>nn,auto:()=>it,basePlacements:()=>at,beforeMain:()=>gt,beforeRead:()=>pt,beforeWrite:()=>yt,bottom:()=>tt,clippingParents:()=>st,computeStyles:()=>ln,createPopper:()=>or,createPopperBase:()=>ir,createPopperLite:()=>ar,detectOverflow:()=>An,end:()=>`end`,eventListeners:()=>fn,flip:()=>Pn,hide:()=>Rn,left:()=>rt,main:()=>_t,modifierPhases:()=>St,offset:()=>Vn,placements:()=>ft,popper:()=>lt,popperGenerator:()=>rr,popperOffsets:()=>Un,preventOverflow:()=>Kn,read:()=>mt,reference:()=>ut,right:()=>nt,start:()=>ot,top:()=>`top`,variationPlacements:()=>dt,viewport:()=>ct,write:()=>bt}),cr=new Map,lr={set(e,t,n){cr.has(e)||cr.set(e,new Map);let r=cr.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 cr.has(e)&&cr.get(e).get(t)||null},remove(e,t){if(!cr.has(e))return;let n=cr.get(e);n.delete(t),n.size===0&&cr.delete(e)}},ur=1e6,dr=1e3,fr=`transitionend`,pr=e=>(e&&window.CSS&&window.CSS.escape&&(e=e.replace(/#([^\s"#']+)/g,(e,t)=>`#${CSS.escape(t)}`)),e),mr=e=>e==null?`${e}`:Object.prototype.toString.call(e).match(/\s([a-z]+)/i)[1].toLowerCase(),hr=e=>{do e+=Math.floor(Math.random()*ur);while(document.getElementById(e));return e},gr=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))*dr)},_r=e=>{e.dispatchEvent(new Event(fr))},vr=e=>!e||typeof e!=`object`?!1:(e.jquery!==void 0&&(e=e[0]),e.nodeType!==void 0),yr=e=>vr(e)?e.jquery?e[0]:e:typeof e==`string`&&e.length>0?document.querySelector(pr(e)):null,br=e=>{if(!vr(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},xr=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,Sr=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?Sr(e.parentNode):null},Cr=()=>{},wr=e=>{e.offsetHeight},Tr=()=>window.jQuery&&!document.body.hasAttribute(`data-bs-no-jquery`)?window.jQuery:null,Er=[],Dr=e=>{document.readyState===`loading`?(Er.length||document.addEventListener(`DOMContentLoaded`,()=>{for(let e of Er)e()}),Er.push(e)):e()},Or=()=>document.documentElement.dir===`rtl`,kr=e=>{Dr(()=>{let t=Tr();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)}})},Ar=(e,t=[],n=e)=>typeof e==`function`?e(...t):n,jr=(e,t,n=!0)=>{if(!n){Ar(e);return}let r=gr(t)+5,i=!1,a=({target:n})=>{n===t&&(i=!0,t.removeEventListener(fr,a),Ar(e))};t.addEventListener(fr,a),setTimeout(()=>{i||_r(t)},r)},Mr=(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))])},Nr=/[^.]*(?=\..*)\.|.*/,Pr=/\..*/,Fr=/::\d+$/,Ir={},Lr=1,Rr={mouseenter:`mouseover`,mouseleave:`mouseout`},zr=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 Br(e,t){return t&&`${t}::${Lr++}`||e.uidEvent||Lr++}function Vr(e){let t=Br(e);return e.uidEvent=t,Ir[t]=Ir[t]||{},Ir[t]}function Hr(e,t){return function n(r){return Zr(r,{delegateTarget:e}),n.oneOff&&Xr.off(e,r.type,t),t.apply(e,[r])}}function Ur(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 Zr(i,{delegateTarget:o}),r.oneOff&&Xr.off(e,i.type,t,n),n.apply(o,[i])}}function Wr(e,t,n=null){return Object.values(e).find(e=>e.callable===t&&e.delegationSelector===n)}function Gr(e,t,n){let r=typeof t==`string`,i=r?n:t||n,a=Yr(e);return zr.has(a)||(a=e),[r,i,a]}function Kr(e,t,n,r,i){if(typeof t!=`string`||!e)return;let[a,o,s]=Gr(t,n,r);t in Rr&&(o=(e=>function(t){if(!t.relatedTarget||t.relatedTarget!==t.delegateTarget&&!t.delegateTarget.contains(t.relatedTarget))return e.call(this,t)})(o));let c=Vr(e),l=c[s]||(c[s]={}),u=Wr(l,o,a?n:null);if(u){u.oneOff=u.oneOff&&i;return}let d=Br(o,t.replace(Nr,``)),f=a?Ur(e,n,o):Hr(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 qr(e,t,n,r,i){let a=Wr(t[n],r,i);a&&(e.removeEventListener(n,a,!!i),delete t[n][a.uidEvent])}function Jr(e,t,n,r){let i=t[n]||{};for(let[a,o]of Object.entries(i))a.includes(r)&&qr(e,t,n,o.callable,o.delegationSelector)}function Yr(e){return e=e.replace(Pr,``),Rr[e]||e}var Xr={on(e,t,n,r){Kr(e,t,n,r,!1)},one(e,t,n,r){Kr(e,t,n,r,!0)},off(e,t,n,r){if(typeof t!=`string`||!e)return;let[i,a,o]=Gr(t,n,r),s=o!==t,c=Vr(e),l=c[o]||{},u=t.startsWith(`.`);if(a!==void 0){if(!Object.keys(l).length)return;qr(e,c,o,a,i?n:null);return}if(u)for(let n of Object.keys(c))Jr(e,c,n,t.slice(1));for(let[n,r]of Object.entries(l)){let i=n.replace(Fr,``);(!s||t.includes(i))&&qr(e,c,o,r.callable,r.delegationSelector)}},trigger(e,t,n){if(typeof t!=`string`||!e)return null;let r=Tr(),i=t!==Yr(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=Zr(new Event(t,{bubbles:o,cancelable:!0}),n);return c&&l.preventDefault(),s&&e.dispatchEvent(l),l.defaultPrevented&&a&&a.preventDefault(),l}};function Zr(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 Qr(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 $r(e){return e.replace(/[A-Z]/g,e=>`-${e.toLowerCase()}`)}var ei={setDataAttribute(e,t,n){e.setAttribute(`data-bs-${$r(t)}`,n)},removeDataAttribute(e,t){e.removeAttribute(`data-bs-${$r(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]=Qr(e.dataset[r])}return t},getDataAttribute(e,t){return Qr(e.getAttribute(`data-bs-${$r(t)}`))}},ti=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=vr(t)?ei.getDataAttribute(t,`config`):{};return{...this.constructor.Default,...typeof n==`object`?n:{},...vr(t)?ei.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=vr(t)?`element`:mr(t);if(!new RegExp(r).test(i))throw TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${n}" provided type "${i}" but expected type "${r}".`)}}},ni=`5.3.3`,ri=class extends ti{constructor(e,t){super(),e=yr(e),e&&(this._element=e,this._config=this._getConfig(t),lr.set(this._element,this.constructor.DATA_KEY,this))}dispose(){lr.remove(this._element,this.constructor.DATA_KEY),Xr.off(this._element,this.constructor.EVENT_KEY);for(let e of Object.getOwnPropertyNames(this))this[e]=null}_queueCallback(e,t,n=!0){jr(e,t,n)}_getConfig(e){return e=this._mergeConfigObj(e,this._element),e=this._configAfterMerge(e),this._typeCheckConfig(e),e}static getInstance(e){return lr.get(yr(e),this.DATA_KEY)}static getOrCreateInstance(e,t={}){return this.getInstance(e)||new this(e,typeof t==`object`?t:null)}static get VERSION(){return ni}static get DATA_KEY(){return`bs.${this.NAME}`}static get EVENT_KEY(){return`.${this.DATA_KEY}`}static eventName(e){return`${e}${this.EVENT_KEY}`}},ii=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=>pr(e)).join(`,`):null},ai={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=>!xr(e)&&br(e))},getSelectorFromElement(e){let t=ii(e);return t&&ai.findOne(t)?t:null},getElementFromSelector(e){let t=ii(e);return t?ai.findOne(t):null},getMultipleElementsFromSelector(e){let t=ii(e);return t?ai.find(t):[]}},oi=(e,t=`hide`)=>{let n=`click.dismiss${e.EVENT_KEY}`,r=e.NAME;Xr.on(document,n,`[data-bs-dismiss="${r}"]`,function(n){if([`A`,`AREA`].includes(this.tagName)&&n.preventDefault(),xr(this))return;let i=ai.getElementFromSelector(this)||this.closest(`.${r}`);e.getOrCreateInstance(i)[t]()})},si=`alert`,ci=`.bs.alert`,li=`close${ci}`,ui=`closed${ci}`,di=`fade`,fi=`show`,pi=class e extends ri{static get NAME(){return si}close(){if(Xr.trigger(this._element,li).defaultPrevented)return;this._element.classList.remove(fi);let e=this._element.classList.contains(di);this._queueCallback(()=>this._destroyElement(),this._element,e)}_destroyElement(){this._element.remove(),Xr.trigger(this._element,ui),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)}})}};oi(pi,`close`),kr(pi);var mi=`button`,hi=`.bs.button`,gi=`.data-api`,_i=`active`,vi=`[data-bs-toggle="button"]`,yi=`click${hi}${gi}`,bi=class e extends ri{static get NAME(){return mi}toggle(){this._element.setAttribute(`aria-pressed`,this._element.classList.toggle(_i))}static jQueryInterface(t){return this.each(function(){let n=e.getOrCreateInstance(this);t===`toggle`&&n[t]()})}};Xr.on(document,yi,vi,e=>{e.preventDefault();let t=e.target.closest(vi);bi.getOrCreateInstance(t).toggle()}),kr(bi);var xi=`swipe`,Si=`.bs.swipe`,Ci=`touchstart${Si}`,wi=`touchmove${Si}`,Ti=`touchend${Si}`,Ei=`pointerdown${Si}`,Di=`pointerup${Si}`,Oi=`touch`,ki=`pen`,Ai=`pointer-event`,ji=40,Mi={endCallback:null,leftCallback:null,rightCallback:null},Ni={endCallback:`(function|null)`,leftCallback:`(function|null)`,rightCallback:`(function|null)`},Pi=class e extends ti{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 Mi}static get DefaultType(){return Ni}static get NAME(){return xi}dispose(){Xr.off(this._element,Si)}_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(),Ar(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<=ji)return;let t=e/this._deltaX;this._deltaX=0,t&&Ar(t>0?this._config.rightCallback:this._config.leftCallback)}_initEvents(){this._supportPointerEvents?(Xr.on(this._element,Ei,e=>this._start(e)),Xr.on(this._element,Di,e=>this._end(e)),this._element.classList.add(Ai)):(Xr.on(this._element,Ci,e=>this._start(e)),Xr.on(this._element,wi,e=>this._move(e)),Xr.on(this._element,Ti,e=>this._end(e)))}_eventIsPointerPenTouch(e){return this._supportPointerEvents&&(e.pointerType===ki||e.pointerType===Oi)}static isSupported(){return`ontouchstart`in document.documentElement||navigator.maxTouchPoints>0}},Fi=`carousel`,Ii=`.bs.carousel`,Li=`.data-api`,Ri=`ArrowLeft`,zi=`ArrowRight`,Bi=500,Vi=`next`,Hi=`prev`,Ui=`left`,Wi=`right`,Gi=`slide${Ii}`,Ki=`slid${Ii}`,qi=`keydown${Ii}`,Ji=`mouseenter${Ii}`,Yi=`mouseleave${Ii}`,Xi=`dragstart${Ii}`,Zi=`load${Ii}${Li}`,Qi=`click${Ii}${Li}`,$i=`carousel`,ea=`active`,ta=`slide`,na=`carousel-item-end`,ra=`carousel-item-start`,ia=`carousel-item-next`,aa=`carousel-item-prev`,oa=`.active`,sa=`.carousel-item`,ca=oa+sa,la=`.carousel-item img`,ua=`.carousel-indicators`,da=`[data-bs-slide], [data-bs-slide-to]`,fa=`[data-bs-ride="carousel"]`,pa={[Ri]:Wi,[zi]:Ui},ma={interval:5e3,keyboard:!0,pause:`hover`,ride:!1,touch:!0,wrap:!0},ha={interval:`(number|boolean)`,keyboard:`boolean`,pause:`(string|boolean)`,ride:`(boolean|string)`,touch:`boolean`,wrap:`boolean`},ga=class e extends ri{constructor(e,t){super(e,t),this._interval=null,this._activeElement=null,this._isSliding=!1,this.touchTimeout=null,this._swipeHelper=null,this._indicatorsElement=ai.findOne(ua,this._element),this._addEventListeners(),this._config.ride===$i&&this.cycle()}static get Default(){return ma}static get DefaultType(){return ha}static get NAME(){return Fi}next(){this._slide(Vi)}nextWhenVisible(){!document.hidden&&br(this._element)&&this.next()}prev(){this._slide(Hi)}pause(){this._isSliding&&_r(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){Xr.one(this._element,Ki,()=>this.cycle());return}this.cycle()}}to(e){let t=this._getItems();if(e>t.length-1||e<0)return;if(this._isSliding){Xr.one(this._element,Ki,()=>this.to(e));return}let n=this._getItemIndex(this._getActive());if(n===e)return;let r=e>n?Vi:Hi;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&&Xr.on(this._element,qi,e=>this._keydown(e)),this._config.pause===`hover`&&(Xr.on(this._element,Ji,()=>this.pause()),Xr.on(this._element,Yi,()=>this._maybeEnableCycle())),this._config.touch&&Pi.isSupported()&&this._addTouchEventListeners()}_addTouchEventListeners(){for(let e of ai.find(la,this._element))Xr.on(e,Xi,e=>e.preventDefault());let e={leftCallback:()=>this._slide(this._directionToOrder(Ui)),rightCallback:()=>this._slide(this._directionToOrder(Wi)),endCallback:()=>{this._config.pause===`hover`&&(this.pause(),this.touchTimeout&&clearTimeout(this.touchTimeout),this.touchTimeout=setTimeout(()=>this._maybeEnableCycle(),Bi+this._config.interval))}};this._swipeHelper=new Pi(this._element,e)}_keydown(e){if(/input|textarea/i.test(e.target.tagName))return;let t=pa[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=ai.findOne(oa,this._indicatorsElement);t.classList.remove(ea),t.removeAttribute(`aria-current`);let n=ai.findOne(`[data-bs-slide-to="${e}"]`,this._indicatorsElement);n&&(n.classList.add(ea),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===Vi,i=t||Mr(this._getItems(),n,r,this._config.wrap);if(i===n)return;let a=this._getItemIndex(i),o=t=>Xr.trigger(this._element,t,{relatedTarget:i,direction:this._orderToDirection(e),from:this._getItemIndex(n),to:a});if(o(Gi).defaultPrevented||!n||!i)return;let s=!!this._interval;this.pause(),this._isSliding=!0,this._setActiveIndicatorElement(a),this._activeElement=i;let c=r?ra:na,l=r?ia:aa;i.classList.add(l),wr(i),n.classList.add(c),i.classList.add(c),this._queueCallback(()=>{i.classList.remove(c,l),i.classList.add(ea),n.classList.remove(ea,l,c),this._isSliding=!1,o(Ki)},n,this._isAnimated()),s&&this.cycle()}_isAnimated(){return this._element.classList.contains(ta)}_getActive(){return ai.findOne(ca,this._element)}_getItems(){return ai.find(sa,this._element)}_clearInterval(){this._interval&&=(clearInterval(this._interval),null)}_directionToOrder(e){return Or()?e===Ui?Hi:Vi:e===Ui?Vi:Hi}_orderToDirection(e){return Or()?e===Hi?Ui:Wi:e===Hi?Wi:Ui}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]()}})}};Xr.on(document,Qi,da,function(e){let t=ai.getElementFromSelector(this);if(!t||!t.classList.contains($i))return;e.preventDefault();let n=ga.getOrCreateInstance(t),r=this.getAttribute(`data-bs-slide-to`);if(r){n.to(r),n._maybeEnableCycle();return}if(ei.getDataAttribute(this,`slide`)===`next`){n.next(),n._maybeEnableCycle();return}n.prev(),n._maybeEnableCycle()}),Xr.on(window,Zi,()=>{let e=ai.find(fa);for(let t of e)ga.getOrCreateInstance(t)}),kr(ga);var _a=`collapse`,va=`.bs.collapse`,ya=`.data-api`,ba=`show${va}`,xa=`shown${va}`,Sa=`hide${va}`,Ca=`hidden${va}`,wa=`click${va}${ya}`,Ta=`show`,Ea=`collapse`,Da=`collapsing`,Oa=`collapsed`,ka=`:scope .${Ea} .${Ea}`,Aa=`collapse-horizontal`,ja=`width`,Ma=`height`,Na=`.collapse.show, .collapse.collapsing`,Pa=`[data-bs-toggle="collapse"]`,Fa={parent:null,toggle:!0},Ia={parent:`(null|element)`,toggle:`boolean`},La=class e extends ri{constructor(e,t){super(e,t),this._isTransitioning=!1,this._triggerArray=[];let n=ai.find(Pa);for(let e of n){let t=ai.getSelectorFromElement(e),n=ai.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 Fa}static get DefaultType(){return Ia}static get NAME(){return _a}toggle(){this._isShown()?this.hide():this.show()}show(){if(this._isTransitioning||this._isShown())return;let t=[];if(this._config.parent&&(t=this._getFirstLevelChildren(Na).filter(e=>e!==this._element).map(t=>e.getOrCreateInstance(t,{toggle:!1}))),t.length&&t[0]._isTransitioning||Xr.trigger(this._element,ba).defaultPrevented)return;for(let e of t)e.hide();let n=this._getDimension();this._element.classList.remove(Ea),this._element.classList.add(Da),this._element.style[n]=0,this._addAriaAndCollapsedClass(this._triggerArray,!0),this._isTransitioning=!0;let r=()=>{this._isTransitioning=!1,this._element.classList.remove(Da),this._element.classList.add(Ea,Ta),this._element.style[n]=``,Xr.trigger(this._element,xa)},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()||Xr.trigger(this._element,Sa).defaultPrevented)return;let e=this._getDimension();this._element.style[e]=`${this._element.getBoundingClientRect()[e]}px`,wr(this._element),this._element.classList.add(Da),this._element.classList.remove(Ea,Ta);for(let e of this._triggerArray){let t=ai.getElementFromSelector(e);t&&!this._isShown(t)&&this._addAriaAndCollapsedClass([e],!1)}this._isTransitioning=!0;let t=()=>{this._isTransitioning=!1,this._element.classList.remove(Da),this._element.classList.add(Ea),Xr.trigger(this._element,Ca)};this._element.style[e]=``,this._queueCallback(t,this._element,!0)}_isShown(e=this._element){return e.classList.contains(Ta)}_configAfterMerge(e){return e.toggle=!!e.toggle,e.parent=yr(e.parent),e}_getDimension(){return this._element.classList.contains(Aa)?ja:Ma}_initializeChildren(){if(!this._config.parent)return;let e=this._getFirstLevelChildren(Pa);for(let t of e){let e=ai.getElementFromSelector(t);e&&this._addAriaAndCollapsedClass([t],this._isShown(e))}}_getFirstLevelChildren(e){let t=ai.find(ka,this._config.parent);return ai.find(e,this._config.parent).filter(e=>!t.includes(e))}_addAriaAndCollapsedClass(e,t){if(e.length)for(let n of e)n.classList.toggle(Oa,!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]()}})}};Xr.on(document,wa,Pa,function(e){(e.target.tagName===`A`||e.delegateTarget&&e.delegateTarget.tagName===`A`)&&e.preventDefault();for(let e of ai.getMultipleElementsFromSelector(this))La.getOrCreateInstance(e,{toggle:!1}).toggle()}),kr(La);var Ra=`dropdown`,za=`.bs.dropdown`,Ba=`.data-api`,Va=`Escape`,Ha=`Tab`,Ua=`ArrowUp`,Wa=`ArrowDown`,Ga=2,Ka=`hide${za}`,qa=`hidden${za}`,Ja=`show${za}`,Ya=`shown${za}`,Xa=`click${za}${Ba}`,Za=`keydown${za}${Ba}`,Qa=`keyup${za}${Ba}`,$a=`show`,eo=`dropup`,to=`dropend`,no=`dropstart`,ro=`dropup-center`,io=`dropdown-center`,ao=`[data-bs-toggle="dropdown"]:not(.disabled):not(:disabled)`,oo=`${ao}.${$a}`,so=`.dropdown-menu`,co=`.navbar`,lo=`.navbar-nav`,uo=`.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)`,fo=Or()?`top-end`:`top-start`,po=Or()?`top-start`:`top-end`,mo=Or()?`bottom-end`:`bottom-start`,ho=Or()?`bottom-start`:`bottom-end`,go=Or()?`left-start`:`right-start`,_o=Or()?`right-start`:`left-start`,vo=`top`,yo=`bottom`,bo={autoClose:!0,boundary:`clippingParents`,display:`dynamic`,offset:[0,2],popperConfig:null,reference:`toggle`},xo={autoClose:`(boolean|string)`,boundary:`(string|element)`,display:`string`,offset:`(array|string|function)`,popperConfig:`(null|object|function)`,reference:`(string|element|object)`},So=class e extends ri{constructor(e,t){super(e,t),this._popper=null,this._parent=this._element.parentNode,this._menu=ai.next(this._element,so)[0]||ai.prev(this._element,so)[0]||ai.findOne(so,this._parent),this._inNavbar=this._detectNavbar()}static get Default(){return bo}static get DefaultType(){return xo}static get NAME(){return Ra}toggle(){return this._isShown()?this.hide():this.show()}show(){if(xr(this._element)||this._isShown())return;let e={relatedTarget:this._element};if(!Xr.trigger(this._element,Ja,e).defaultPrevented){if(this._createPopper(),`ontouchstart`in document.documentElement&&!this._parent.closest(lo))for(let e of[].concat(...document.body.children))Xr.on(e,`mouseover`,Cr);this._element.focus(),this._element.setAttribute(`aria-expanded`,!0),this._menu.classList.add($a),this._element.classList.add($a),Xr.trigger(this._element,Ya,e)}}hide(){if(xr(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(!Xr.trigger(this._element,Ka,e).defaultPrevented){if(`ontouchstart`in document.documentElement)for(let e of[].concat(...document.body.children))Xr.off(e,`mouseover`,Cr);this._popper&&this._popper.destroy(),this._menu.classList.remove($a),this._element.classList.remove($a),this._element.setAttribute(`aria-expanded`,`false`),ei.removeDataAttribute(this._menu,`popper`),Xr.trigger(this._element,qa,e)}}_getConfig(e){if(e=super._getConfig(e),typeof e.reference==`object`&&!vr(e.reference)&&typeof e.reference.getBoundingClientRect!=`function`)throw TypeError(`${Ra.toUpperCase()}: Option "reference" provided type "object" without a required "getBoundingClientRect" method.`);return e}_createPopper(){if(sr===void 0)throw TypeError(`Bootstrap's dropdowns require Popper (https://popper.js.org)`);let e=this._element;this._config.reference===`parent`?e=this._parent:vr(this._config.reference)?e=yr(this._config.reference):typeof this._config.reference==`object`&&(e=this._config.reference);let t=this._getPopperConfig();this._popper=or(e,this._menu,t)}_isShown(){return this._menu.classList.contains($a)}_getPlacement(){let e=this._parent;if(e.classList.contains(to))return go;if(e.classList.contains(no))return _o;if(e.classList.contains(ro))return vo;if(e.classList.contains(io))return yo;let t=getComputedStyle(this._menu).getPropertyValue(`--bs-position`).trim()===`end`;return e.classList.contains(eo)?t?po:fo:t?ho:mo}_detectNavbar(){return this._element.closest(co)!==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`)&&(ei.setDataAttribute(this._menu,`popper`,`static`),e.modifiers=[{name:`applyStyles`,enabled:!1}]),{...e,...Ar(this._config.popperConfig,[e])}}_selectMenuItem({key:e,target:t}){let n=ai.find(uo,this._menu).filter(e=>br(e));n.length&&Mr(n,t,e===Wa,!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===Ga||t.type===`keyup`&&t.key!==Ha)return;let n=ai.find(oo);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===Ha||/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===Va,i=[Ua,Wa].includes(t.key);if(!i&&!r||n&&!r)return;t.preventDefault();let a=this.matches(ao)?this:ai.prev(this,ao)[0]||ai.next(this,ao)[0]||ai.findOne(ao,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())}};Xr.on(document,Za,ao,So.dataApiKeydownHandler),Xr.on(document,Za,so,So.dataApiKeydownHandler),Xr.on(document,Xa,So.clearMenus),Xr.on(document,Qa,So.clearMenus),Xr.on(document,Xa,ao,function(e){e.preventDefault(),So.getOrCreateInstance(this).toggle()}),kr(So);var Co=`backdrop`,wo=`fade`,To=`show`,Eo=`mousedown.bs.${Co}`,Do={className:`modal-backdrop`,clickCallback:null,isAnimated:!1,isVisible:!0,rootElement:`body`},Oo={className:`string`,clickCallback:`(function|null)`,isAnimated:`boolean`,isVisible:`boolean`,rootElement:`(element|string)`},ko=class extends ti{constructor(e){super(),this._config=this._getConfig(e),this._isAppended=!1,this._element=null}static get Default(){return Do}static get DefaultType(){return Oo}static get NAME(){return Co}show(e){if(!this._config.isVisible){Ar(e);return}this._append();let t=this._getElement();this._config.isAnimated&&wr(t),t.classList.add(To),this._emulateAnimation(()=>{Ar(e)})}hide(e){if(!this._config.isVisible){Ar(e);return}this._getElement().classList.remove(To),this._emulateAnimation(()=>{this.dispose(),Ar(e)})}dispose(){this._isAppended&&=(Xr.off(this._element,Eo),this._element.remove(),!1)}_getElement(){if(!this._element){let e=document.createElement(`div`);e.className=this._config.className,this._config.isAnimated&&e.classList.add(wo),this._element=e}return this._element}_configAfterMerge(e){return e.rootElement=yr(e.rootElement),e}_append(){if(this._isAppended)return;let e=this._getElement();this._config.rootElement.append(e),Xr.on(e,Eo,()=>{Ar(this._config.clickCallback)}),this._isAppended=!0}_emulateAnimation(e){jr(e,this._getElement(),this._config.isAnimated)}},Ao=`focustrap`,jo=`.bs.focustrap`,Mo=`focusin${jo}`,No=`keydown.tab${jo}`,Po=`Tab`,Fo=`forward`,Io=`backward`,Lo={autofocus:!0,trapElement:null},Ro={autofocus:`boolean`,trapElement:`element`},zo=class extends ti{constructor(e){super(),this._config=this._getConfig(e),this._isActive=!1,this._lastTabNavDirection=null}static get Default(){return Lo}static get DefaultType(){return Ro}static get NAME(){return Ao}activate(){this._isActive||=(this._config.autofocus&&this._config.trapElement.focus(),Xr.off(document,jo),Xr.on(document,Mo,e=>this._handleFocusin(e)),Xr.on(document,No,e=>this._handleKeydown(e)),!0)}deactivate(){this._isActive&&(this._isActive=!1,Xr.off(document,jo))}_handleFocusin(e){let{trapElement:t}=this._config;if(e.target===document||e.target===t||t.contains(e.target))return;let n=ai.focusableChildren(t);n.length===0?t.focus():this._lastTabNavDirection===Io?n[n.length-1].focus():n[0].focus()}_handleKeydown(e){e.key===Po&&(this._lastTabNavDirection=e.shiftKey?Io:Fo)}},Bo=`.fixed-top, .fixed-bottom, .is-fixed, .sticky-top`,Vo=`.sticky-top`,Ho=`padding-right`,Uo=`margin-right`,Wo=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,Ho,t=>t+e),this._setElementAttributes(Bo,Ho,t=>t+e),this._setElementAttributes(Vo,Uo,t=>t-e)}reset(){this._resetElementAttributes(this._element,`overflow`),this._resetElementAttributes(this._element,Ho),this._resetElementAttributes(Bo,Ho),this._resetElementAttributes(Vo,Uo)}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&&ei.setDataAttribute(e,t,n)}_resetElementAttributes(e,t){this._applyManipulationCallback(e,e=>{let n=ei.getDataAttribute(e,t);if(n===null){e.style.removeProperty(t);return}ei.removeDataAttribute(e,t),e.style.setProperty(t,n)})}_applyManipulationCallback(e,t){if(vr(e)){t(e);return}for(let n of ai.find(e,this._element))t(n)}},Go=`modal`,Ko=`.bs.modal`,qo=`.data-api`,Jo=`Escape`,Yo=`hide${Ko}`,Xo=`hidePrevented${Ko}`,Zo=`hidden${Ko}`,Qo=`show${Ko}`,$o=`shown${Ko}`,es=`resize${Ko}`,ts=`click.dismiss${Ko}`,ns=`mousedown.dismiss${Ko}`,rs=`keydown.dismiss${Ko}`,is=`click${Ko}${qo}`,as=`modal-open`,os=`fade`,ss=`show`,cs=`modal-static`,ls=`.modal.show`,us=`.modal-dialog`,ds=`.modal-body`,fs=`[data-bs-toggle="modal"]`,ps={backdrop:!0,focus:!0,keyboard:!0},ms={backdrop:`(boolean|string)`,focus:`boolean`,keyboard:`boolean`},hs=class e extends ri{constructor(e,t){super(e,t),this._dialog=ai.findOne(us,this._element),this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._isShown=!1,this._isTransitioning=!1,this._scrollBar=new Wo,this._addEventListeners()}static get Default(){return ps}static get DefaultType(){return ms}static get NAME(){return Go}toggle(e){return this._isShown?this.hide():this.show(e)}show(e){this._isShown||this._isTransitioning||Xr.trigger(this._element,Qo,{relatedTarget:e}).defaultPrevented||(this._isShown=!0,this._isTransitioning=!0,this._scrollBar.hide(),document.body.classList.add(as),this._adjustDialog(),this._backdrop.show(()=>this._showElement(e)))}hide(){!this._isShown||this._isTransitioning||Xr.trigger(this._element,Yo).defaultPrevented||(this._isShown=!1,this._isTransitioning=!0,this._focustrap.deactivate(),this._element.classList.remove(ss),this._queueCallback(()=>this._hideModal(),this._element,this._isAnimated()))}dispose(){Xr.off(window,Ko),Xr.off(this._dialog,Ko),this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}handleUpdate(){this._adjustDialog()}_initializeBackDrop(){return new ko({isVisible:!!this._config.backdrop,isAnimated:this._isAnimated()})}_initializeFocusTrap(){return new zo({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=ai.findOne(ds,this._dialog);t&&(t.scrollTop=0),wr(this._element),this._element.classList.add(ss),this._queueCallback(()=>{this._config.focus&&this._focustrap.activate(),this._isTransitioning=!1,Xr.trigger(this._element,$o,{relatedTarget:e})},this._dialog,this._isAnimated())}_addEventListeners(){Xr.on(this._element,rs,e=>{if(e.key===Jo){if(this._config.keyboard){this.hide();return}this._triggerBackdropTransition()}}),Xr.on(window,es,()=>{this._isShown&&!this._isTransitioning&&this._adjustDialog()}),Xr.on(this._element,ns,e=>{Xr.one(this._element,ts,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(as),this._resetAdjustments(),this._scrollBar.reset(),Xr.trigger(this._element,Zo)})}_isAnimated(){return this._element.classList.contains(os)}_triggerBackdropTransition(){if(Xr.trigger(this._element,Xo).defaultPrevented)return;let e=this._element.scrollHeight>document.documentElement.clientHeight,t=this._element.style.overflowY;t===`hidden`||this._element.classList.contains(cs)||(e||(this._element.style.overflowY=`hidden`),this._element.classList.add(cs),this._queueCallback(()=>{this._element.classList.remove(cs),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=Or()?`paddingLeft`:`paddingRight`;this._element.style[e]=`${t}px`}if(!n&&e){let e=Or()?`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)}})}};Xr.on(document,is,fs,function(e){let t=ai.getElementFromSelector(this);[`A`,`AREA`].includes(this.tagName)&&e.preventDefault(),Xr.one(t,Qo,e=>{e.defaultPrevented||Xr.one(t,Zo,()=>{br(this)&&this.focus()})});let n=ai.findOne(ls);n&&hs.getInstance(n).hide(),hs.getOrCreateInstance(t).toggle(this)}),oi(hs),kr(hs);var gs=`offcanvas`,_s=`.bs.offcanvas`,vs=`.data-api`,ys=`load${_s}${vs}`,bs=`Escape`,xs=`show`,Ss=`showing`,Cs=`hiding`,ws=`offcanvas-backdrop`,Ts=`.offcanvas.show`,Es=`show${_s}`,Ds=`shown${_s}`,Os=`hide${_s}`,ks=`hidePrevented${_s}`,As=`hidden${_s}`,js=`resize${_s}`,Ms=`click${_s}${vs}`,Ns=`keydown.dismiss${_s}`,Ps=`[data-bs-toggle="offcanvas"]`,Fs={backdrop:!0,keyboard:!0,scroll:!1},Is={backdrop:`(boolean|string)`,keyboard:`boolean`,scroll:`boolean`},Ls=class e extends ri{constructor(e,t){super(e,t),this._isShown=!1,this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._addEventListeners()}static get Default(){return Fs}static get DefaultType(){return Is}static get NAME(){return gs}toggle(e){return this._isShown?this.hide():this.show(e)}show(e){this._isShown||Xr.trigger(this._element,Es,{relatedTarget:e}).defaultPrevented||(this._isShown=!0,this._backdrop.show(),this._config.scroll||new Wo().hide(),this._element.setAttribute(`aria-modal`,!0),this._element.setAttribute(`role`,`dialog`),this._element.classList.add(Ss),this._queueCallback(()=>{(!this._config.scroll||this._config.backdrop)&&this._focustrap.activate(),this._element.classList.add(xs),this._element.classList.remove(Ss),Xr.trigger(this._element,Ds,{relatedTarget:e})},this._element,!0))}hide(){!this._isShown||Xr.trigger(this._element,Os).defaultPrevented||(this._focustrap.deactivate(),this._element.blur(),this._isShown=!1,this._element.classList.add(Cs),this._backdrop.hide(),this._queueCallback(()=>{this._element.classList.remove(xs,Cs),this._element.removeAttribute(`aria-modal`),this._element.removeAttribute(`role`),this._config.scroll||new Wo().reset(),Xr.trigger(this._element,As)},this._element,!0))}dispose(){this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}_initializeBackDrop(){let e=()=>{if(this._config.backdrop===`static`){Xr.trigger(this._element,ks);return}this.hide()},t=!!this._config.backdrop;return new ko({className:ws,isVisible:t,isAnimated:!0,rootElement:this._element.parentNode,clickCallback:t?e:null})}_initializeFocusTrap(){return new zo({trapElement:this._element})}_addEventListeners(){Xr.on(this._element,Ns,e=>{if(e.key===bs){if(this._config.keyboard){this.hide();return}Xr.trigger(this._element,ks)}})}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)}})}};Xr.on(document,Ms,Ps,function(e){let t=ai.getElementFromSelector(this);if([`A`,`AREA`].includes(this.tagName)&&e.preventDefault(),xr(this))return;Xr.one(t,As,()=>{br(this)&&this.focus()});let n=ai.findOne(Ts);n&&n!==t&&Ls.getInstance(n).hide(),Ls.getOrCreateInstance(t).toggle(this)}),Xr.on(window,ys,()=>{for(let e of ai.find(Ts))Ls.getOrCreateInstance(e).show()}),Xr.on(window,js,()=>{for(let e of ai.find(`[aria-modal][class*=show][class*=offcanvas-]`))getComputedStyle(e).position!==`fixed`&&Ls.getOrCreateInstance(e).hide()}),oi(Ls),kr(Ls);var Rs={"*":[`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:[]},zs=new Set([`background`,`cite`,`href`,`itemtype`,`longdesc`,`poster`,`src`,`xlink:href`]),Bs=/^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i,Vs=(e,t)=>{let n=e.nodeName.toLowerCase();return t.includes(n)?zs.has(n)?!!Bs.test(e.nodeValue):!0:t.filter(e=>e instanceof RegExp).some(e=>e.test(n))};function Hs(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)Vs(t,i)||e.removeAttribute(t.nodeName)}return r.body.innerHTML}var Us=`TemplateFactory`,Ws={allowList:Rs,content:{},extraClass:``,html:!1,sanitize:!0,sanitizeFn:null,template:`
`},Gs={allowList:`object`,content:`object`,extraClass:`(string|function)`,html:`boolean`,sanitize:`boolean`,sanitizeFn:`(null|function)`,template:`string`},Ks={entry:`(string|element|function|null)`,selector:`(string|element)`},qs=class extends ti{constructor(e){super(),this._config=this._getConfig(e)}static get Default(){return Ws}static get DefaultType(){return Gs}static get NAME(){return Us}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},Ks)}_setContent(e,t,n){let r=ai.findOne(n,e);if(r){if(t=this._resolvePossibleFunction(t),!t){r.remove();return}if(vr(t)){this._putElementInTemplate(yr(t),r);return}if(this._config.html){r.innerHTML=this._maybeSanitize(t);return}r.textContent=t}}_maybeSanitize(e){return this._config.sanitize?Hs(e,this._config.allowList,this._config.sanitizeFn):e}_resolvePossibleFunction(e){return Ar(e,[this])}_putElementInTemplate(e,t){if(this._config.html){t.innerHTML=``,t.append(e);return}t.textContent=e.textContent}},Js=`tooltip`,Ys=new Set([`sanitize`,`allowList`,`sanitizeFn`]),Xs=`fade`,Zs=`modal`,Qs=`show`,$s=`.tooltip-inner`,ec=`.${Zs}`,tc=`hide.bs.modal`,nc=`hover`,rc=`focus`,ic=`click`,ac=`manual`,oc=`hide`,sc=`hidden`,cc=`show`,lc=`shown`,uc=`inserted`,dc=`click`,fc=`focusin`,pc=`focusout`,mc=`mouseenter`,hc=`mouseleave`,gc={AUTO:`auto`,TOP:`top`,RIGHT:Or()?`left`:`right`,BOTTOM:`bottom`,LEFT:Or()?`right`:`left`},_c={allowList:Rs,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`},vc={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`},yc=class e extends ri{constructor(e,t){if(sr===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 _c}static get DefaultType(){return vc}static get NAME(){return Js}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),Xr.off(this._element.closest(ec),tc,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=Xr.trigger(this._element,this.constructor.eventName(cc)),t=(Sr(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),Xr.trigger(this._element,this.constructor.eventName(uc))),this._popper=this._createPopper(n),n.classList.add(Qs),`ontouchstart`in document.documentElement)for(let e of[].concat(...document.body.children))Xr.on(e,`mouseover`,Cr);this._queueCallback(()=>{Xr.trigger(this._element,this.constructor.eventName(lc)),this._isHovered===!1&&this._leave(),this._isHovered=!1},this.tip,this._isAnimated())}hide(){if(!(!this._isShown()||Xr.trigger(this._element,this.constructor.eventName(oc)).defaultPrevented)){if(this._getTipElement().classList.remove(Qs),`ontouchstart`in document.documentElement)for(let e of[].concat(...document.body.children))Xr.off(e,`mouseover`,Cr);this._activeTrigger[ic]=!1,this._activeTrigger[rc]=!1,this._activeTrigger[nc]=!1,this._isHovered=null,this._queueCallback(()=>{this._isWithActiveTrigger()||(this._isHovered||this._disposePopper(),this._element.removeAttribute(`aria-describedby`),Xr.trigger(this._element,this.constructor.eventName(sc)))},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(Xs,Qs),t.classList.add(`bs-${this.constructor.NAME}-auto`);let n=hr(this.constructor.NAME).toString();return t.setAttribute(`id`,n),this._isAnimated()&&t.classList.add(Xs),t}setContent(e){this._newContent=e,this._isShown()&&(this._disposePopper(),this.show())}_getTemplateFactory(e){return this._templateFactory?this._templateFactory.changeContent(e):this._templateFactory=new qs({...this._config,content:e,extraClass:this._resolvePossibleFunction(this._config.customClass)}),this._templateFactory}_getContentForTemplate(){return{[$s]: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(Xs)}_isShown(){return this.tip&&this.tip.classList.contains(Qs)}_createPopper(e){let t=gc[Ar(this._config.placement,[this,e,this._element]).toUpperCase()];return or(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 Ar(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,...Ar(this._config.popperConfig,[t])}}_setListeners(){let e=this._config.trigger.split(` `);for(let t of e)if(t===`click`)Xr.on(this._element,this.constructor.eventName(dc),this._config.selector,e=>{this._initializeOnDelegatedTarget(e).toggle()});else if(t!==ac){let e=t===nc?this.constructor.eventName(mc):this.constructor.eventName(fc),n=t===nc?this.constructor.eventName(hc):this.constructor.eventName(pc);Xr.on(this._element,e,this._config.selector,e=>{let t=this._initializeOnDelegatedTarget(e);t._activeTrigger[e.type===`focusin`?rc:nc]=!0,t._enter()}),Xr.on(this._element,n,this._config.selector,e=>{let t=this._initializeOnDelegatedTarget(e);t._activeTrigger[e.type===`focusout`?rc:nc]=t._element.contains(e.relatedTarget),t._leave()})}this._hideModalHandler=()=>{this._element&&this.hide()},Xr.on(this._element.closest(ec),tc,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=ei.getDataAttributes(this._element);for(let e of Object.keys(t))Ys.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:yr(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]()}})}};kr(yc);var bc=`popover`,xc=`.popover-header`,Sc=`.popover-body`,Cc={...yc.Default,content:``,offset:[0,8],placement:`right`,template:``,trigger:`click`},wc={...yc.DefaultType,content:`(null|string|element|function)`};kr(class e extends yc{static get Default(){return Cc}static get DefaultType(){return wc}static get NAME(){return bc}_isWithContent(){return this._getTitle()||this._getContent()}_getContentForTemplate(){return{[xc]:this._getTitle(),[Sc]: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 Tc=`scrollspy`,Ec=`.bs.scrollspy`,Dc=`.data-api`,Oc=`activate${Ec}`,kc=`click${Ec}`,Ac=`load${Ec}${Dc}`,jc=`dropdown-item`,Mc=`active`,Nc=`[data-bs-spy="scroll"]`,Pc=`[href]`,Fc=`.nav, .list-group`,Ic=`.nav-link`,Lc=`${Ic}, .nav-item > ${Ic}, .list-group-item`,Rc=`.dropdown`,zc=`.dropdown-toggle`,Bc={offset:null,rootMargin:`0px 0px -25%`,smoothScroll:!1,target:null,threshold:[.1,.5,1]},Vc={offset:`(number|null)`,rootMargin:`string`,smoothScroll:`boolean`,target:`element`,threshold:`array`},Hc=class e extends ri{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 Bc}static get DefaultType(){return Vc}static get NAME(){return Tc}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=yr(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&&(Xr.off(this._config.target,kc),Xr.on(this._config.target,kc,Pc,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=ai.find(Pc,this._config.target);for(let t of e){if(!t.hash||xr(t))continue;let e=ai.findOne(decodeURI(t.hash),this._element);br(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(Mc),this._activateParents(e),Xr.trigger(this._element,Oc,{relatedTarget:e}))}_activateParents(e){if(e.classList.contains(jc)){ai.findOne(zc,e.closest(Rc)).classList.add(Mc);return}for(let t of ai.parents(e,Fc))for(let e of ai.prev(t,Lc))e.classList.add(Mc)}_clearActiveClass(e){e.classList.remove(Mc);let t=ai.find(`${Pc}.${Mc}`,e);for(let e of t)e.classList.remove(Mc)}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]()}})}};Xr.on(window,Ac,()=>{for(let e of ai.find(Nc))Hc.getOrCreateInstance(e)}),kr(Hc);var Uc=`tab`,Wc=`.bs.tab`,Gc=`hide${Wc}`,Kc=`hidden${Wc}`,qc=`show${Wc}`,Jc=`shown${Wc}`,Yc=`click${Wc}`,Xc=`keydown${Wc}`,Zc=`load${Wc}`,Qc=`ArrowLeft`,$c=`ArrowRight`,el=`ArrowUp`,tl=`ArrowDown`,nl=`Home`,rl=`End`,il=`active`,al=`fade`,ol=`show`,sl=`dropdown`,cl=`.dropdown-toggle`,ll=`.dropdown-menu`,ul=`:not(${cl})`,dl=`.list-group, .nav, [role="tablist"]`,fl=`.nav-item, .list-group-item`,pl=`.nav-link${ul}, .list-group-item${ul}, [role="tab"]${ul}`,ml=`[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]`,hl=`${pl}, ${ml}`,gl=`.${il}[data-bs-toggle="tab"], .${il}[data-bs-toggle="pill"], .${il}[data-bs-toggle="list"]`,_l=class e extends ri{constructor(e){super(e),this._parent=this._element.closest(dl),this._parent&&(this._setInitialAttributes(this._parent,this._getChildren()),Xr.on(this._element,Xc,e=>this._keydown(e)))}static get NAME(){return Uc}show(){let e=this._element;if(this._elemIsActive(e))return;let t=this._getActiveElem(),n=t?Xr.trigger(t,Gc,{relatedTarget:e}):null;Xr.trigger(e,qc,{relatedTarget:t}).defaultPrevented||n&&n.defaultPrevented||(this._deactivate(t,e),this._activate(e,t))}_activate(e,t){e&&(e.classList.add(il),this._activate(ai.getElementFromSelector(e)),this._queueCallback(()=>{if(e.getAttribute(`role`)!==`tab`){e.classList.add(ol);return}e.removeAttribute(`tabindex`),e.setAttribute(`aria-selected`,!0),this._toggleDropDown(e,!0),Xr.trigger(e,Jc,{relatedTarget:t})},e,e.classList.contains(al)))}_deactivate(e,t){e&&(e.classList.remove(il),e.blur(),this._deactivate(ai.getElementFromSelector(e)),this._queueCallback(()=>{if(e.getAttribute(`role`)!==`tab`){e.classList.remove(ol);return}e.setAttribute(`aria-selected`,!1),e.setAttribute(`tabindex`,`-1`),this._toggleDropDown(e,!1),Xr.trigger(e,Kc,{relatedTarget:t})},e,e.classList.contains(al)))}_keydown(t){if(![Qc,$c,el,tl,nl,rl].includes(t.key))return;t.stopPropagation(),t.preventDefault();let n=this._getChildren().filter(e=>!xr(e)),r;if([nl,rl].includes(t.key))r=n[t.key===nl?0:n.length-1];else{let e=[$c,tl].includes(t.key);r=Mr(n,t.target,e,!0)}r&&(r.focus({preventScroll:!0}),e.getOrCreateInstance(r).show())}_getChildren(){return ai.find(hl,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=ai.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(sl))return;let r=(e,r)=>{let i=ai.findOne(e,n);i&&i.classList.toggle(r,t)};r(cl,il),r(ll,ol),n.setAttribute(`aria-expanded`,t)}_setAttributeIfNotExists(e,t,n){e.hasAttribute(t)||e.setAttribute(t,n)}_elemIsActive(e){return e.classList.contains(il)}_getInnerElement(e){return e.matches(hl)?e:ai.findOne(hl,e)}_getOuterElement(e){return e.closest(fl)||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]()}})}};Xr.on(document,Yc,ml,function(e){[`A`,`AREA`].includes(this.tagName)&&e.preventDefault(),!xr(this)&&_l.getOrCreateInstance(this).show()}),Xr.on(window,Zc,()=>{for(let e of ai.find(gl))_l.getOrCreateInstance(e)}),kr(_l);var vl=`toast`,yl=`.bs.toast`,bl=`mouseover${yl}`,xl=`mouseout${yl}`,Sl=`focusin${yl}`,Cl=`focusout${yl}`,wl=`hide${yl}`,Tl=`hidden${yl}`,El=`show${yl}`,Dl=`shown${yl}`,Ol=`fade`,kl=`hide`,Al=`show`,jl=`showing`,Ml={animation:`boolean`,autohide:`boolean`,delay:`number`},Nl={animation:!0,autohide:!0,delay:5e3},Pl=class e extends ri{constructor(e,t){super(e,t),this._timeout=null,this._hasMouseInteraction=!1,this._hasKeyboardInteraction=!1,this._setListeners()}static get Default(){return Nl}static get DefaultType(){return Ml}static get NAME(){return vl}show(){Xr.trigger(this._element,El).defaultPrevented||(this._clearTimeout(),this._config.animation&&this._element.classList.add(Ol),this._element.classList.remove(kl),wr(this._element),this._element.classList.add(Al,jl),this._queueCallback(()=>{this._element.classList.remove(jl),Xr.trigger(this._element,Dl),this._maybeScheduleHide()},this._element,this._config.animation))}hide(){!this.isShown()||Xr.trigger(this._element,wl).defaultPrevented||(this._element.classList.add(jl),this._queueCallback(()=>{this._element.classList.add(kl),this._element.classList.remove(jl,Al),Xr.trigger(this._element,Tl)},this._element,this._config.animation))}dispose(){this._clearTimeout(),this.isShown()&&this._element.classList.remove(Al),super.dispose()}isShown(){return this._element.classList.contains(Al)}_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(){Xr.on(this._element,bl,e=>this._onInteraction(e,!0)),Xr.on(this._element,xl,e=>this._onInteraction(e,!1)),Xr.on(this._element,Sl,e=>this._onInteraction(e,!0)),Xr.on(this._element,Cl,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)}})}};oi(Pl),kr(Pl);var Fl=typeof window<`u`,Il,Ll=e=>Il=e,Rl=Symbol();function zl(e){return e&&typeof e==`object`&&Object.prototype.toString.call(e)===`[object Object]`&&typeof e.toJSON!=`function`}var Bl;(function(e){e.direct=`direct`,e.patchObject=`patch object`,e.patchFunction=`patch function`})(Bl||={});var Vl=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 Hl(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 Ul(e,t,n){let r=new XMLHttpRequest;r.open(`GET`,e),r.responseType=`blob`,r.onload=function(){Jl(r.response,t,n)},r.onerror=function(){console.error(`could not download file`)},r.send()}function Wl(e){let t=new XMLHttpRequest;t.open(`HEAD`,e,!1);try{t.send()}catch{}return t.status>=200&&t.status<=299}function Gl(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 Kl=typeof navigator==`object`?navigator:{userAgent:``},ql=/Macintosh/.test(Kl.userAgent)&&/AppleWebKit/.test(Kl.userAgent)&&!/Safari/.test(Kl.userAgent),Jl=Fl?typeof HTMLAnchorElement<`u`&&`download`in HTMLAnchorElement.prototype&&!ql?Yl:`msSaveOrOpenBlob`in Kl?Xl:Zl:()=>{};function Yl(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?Gl(r):Wl(r.href)?Ul(e,t,n):(r.target=`_blank`,Gl(r))):(r.href=URL.createObjectURL(e),setTimeout(function(){URL.revokeObjectURL(r.href)},4e4),setTimeout(function(){Gl(r)},0))}function Xl(e,t=`download`,n){if(typeof e==`string`)if(Wl(e))Ul(e,t,n);else{let t=document.createElement(`a`);t.href=e,t.target=`_blank`,setTimeout(function(){Gl(t)})}else navigator.msSaveOrOpenBlob(Hl(e,n),t)}function Zl(e,t,n,r){if(r||=open(``,`_blank`),r&&(r.document.title=r.document.body.innerText=`downloading...`),typeof e==`string`)return Ul(e,t,n);let i=e.type===`application/octet-stream`,a=/constructor/i.test(String(Vl.HTMLElement))||`safari`in Vl,o=/CriOS\/[\d]+/.test(navigator.userAgent);if((o||i&&a||ql)&&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:Ql}=Object;function $l(){let e=Ce(!0),t=e.run(()=>B({})),n=[],r=[],i=ke({install(e){Ll(i),i._a=e,e.provide(Rl,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 eu=()=>{};function tu(e,t,n,r=eu){e.add(t);let i=()=>{e.delete(t)&&r()};return!n&&Ie()&&Te(i),i}function nu(e,...t){e.forEach(e=>{e(...t)})}var ru=e=>e(),iu=Symbol(),au=Symbol();function ou(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];zl(i)&&zl(r)&&e.hasOwnProperty(n)&&!pe(r)&&!le(r)?e[n]=ou(i,r):e[n]=r}return e}var su=Symbol();function cu(e){return!zl(e)||!Object.prototype.hasOwnProperty.call(e,su)}var{assign:lu}=Object;function uu(e){return!!(pe(e)&&e.effect)}function du(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():{}),lu(u(n.state.value[e]),a,Object.keys(o||{}).reduce((t,r)=>(t[r]=ke(H(()=>{Ll(n);let t=n._s.get(e);return o[r].call(t,t)})),t),{}))}return c=fu(e,l,t,n,r,!0),c}function fu(e,t,n={},r,i,a){let o,s=lu({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:Bl.patchFunction,storeId:e,events:void 0}):(ou(r.state.value[e],t),n={type:Bl.patchObject,payload:t,storeId:e,events:void 0});let i=m=Symbol();A().then(()=>{m===i&&(l=!0)}),u=!0,nu(d,n,r.state.value[e])}let g=a?function(){let{state:e}=n,t=e?e():{};this.$patch(e=>{lu(e,t)})}:eu;function _(){o.stop(),d.clear(),f.clear(),r._s.delete(e)}let v=(t,n=``)=>{if(iu in t)return t[au]=n,t;let i=function(){Ll(r);let n=Array.from(arguments),a=new Set,o=new Set;function s(e){a.add(e)}function c(e){o.add(e)}nu(f,{args:n,name:i[au],store:y,after:s,onError:c});let l;try{l=t.apply(this&&this.$id===e?this:y,n)}catch(e){throw nu(o,e),e}return l instanceof Promise?l.then(e=>(nu(a,e),e)).catch(e=>(nu(o,e),Promise.reject(e))):(nu(a,l),l)};return i[iu]=!0,i[au]=n,i},y=_e({_p:r,$id:e,$onAction:tu.bind(null,f),$patch:h,$reset:g,$subscribe(t,n={}){let i=tu(d,t,n.detached,()=>a()),a=o.run(()=>V(()=>r.state.value[e],r=>{(n.flush===`sync`?u:l)&&t({storeId:e,type:Bl.direct,events:void 0},r)},lu({},c,n)));return i},$dispose:_});r._s.set(e,y);let b=(r._a&&r._a.runWithContext||ru)(()=>r._e.run(()=>(o=Ce()).run(()=>t({action:v}))));for(let t in b){let n=b[t];pe(n)&&!uu(n)||le(n)?a||(p&&cu(n)&&(pe(n)?n.value=p[t]:ou(n,p[t])),r.state.value[e][t]=n):typeof n==`function`&&(b[t]=v(n,t),s.actions[t]=n)}return lu(y,b),lu(Be(y),b),Object.defineProperty(y,`$state`,{get:()=>r.state.value[e],set:e=>{h(t=>{lu(t,e)})}}),r._p.forEach(e=>{lu(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 pu(e,t,n){let r,i=typeof t==`function`;r=i?n:t;function a(n,a){let o=T();return n||=o?D(Rl,null):null,n&&Ll(n),n=Il,n._s.has(e)||(i?fu(e,t,r,n):du(e,r,n)),n._s.get(e)}return a.$id=e,a}function mu(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`},hu=[`year`,`years`,`month`,`months`,`date`,`dates`,`week`,`datetime`,`datetimerange`,`daterange`,`monthrange`,`yearrange`],gu=[`sun`,`mon`,`tue`,`wed`,`thu`,`fri`,`sat`],_u=`update:modelValue`,vu=`change`,yu=`input`,bu=Symbol(`INSTALLED_KEY`),xu=[``,`default`,`small`,`large`],Su=[`left`,`center`,`right`],Cu=typeof global==`object`&&global&&global.Object===Object&&global,wu=typeof self==`object`&&self&&self.Object===Object&&self,Tu=Cu||wu||Function(`return this`)(),Eu=Tu.Symbol,Du=Object.prototype,Ou=Du.hasOwnProperty,ku=Du.toString,Au=Eu?Eu.toStringTag:void 0;function ju(e){var t=Ou.call(e,Au),n=e[Au];try{e[Au]=void 0;var r=!0}catch{}var i=ku.call(e);return r&&(t?e[Au]=n:delete e[Au]),i}var Mu=Object.prototype.toString;function Nu(e){return Mu.call(e)}var Pu=`[object Null]`,Fu=`[object Undefined]`,Iu=Eu?Eu.toStringTag:void 0;function Lu(e){return e==null?e===void 0?Fu:Pu:Iu&&Iu in Object(e)?ju(e):Nu(e)}function Ru(e){return typeof e==`object`&&!!e}var zu=`[object Symbol]`;function Bu(e){return typeof e==`symbol`||Ru(e)&&Lu(e)==zu}function Vu(e,t){for(var n=-1,r=e==null?0:e.length,i=Array(r);++n0){if(++t>=Fd)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}function zd(e){return function(){return e}}var Bd=function(){try{var e=Od(Object,`defineProperty`);return e({},``,{}),e}catch{}}(),Vd=Rd(Bd?function(e,t){return Bd(e,`toString`,{configurable:!0,enumerable:!1,value:zd(t),writable:!0})}:cd);function Hd(e,t){for(var n=-1,r=e==null?0:e.length;++n-1}var Jd=9007199254740991,Yd=/^(?:0|[1-9]\d*)$/;function Xd(e,t){var n=typeof e;return t??=Jd,!!t&&(n==`number`||n!=`symbol`&&Yd.test(e))&&e>-1&&e%1==0&&e-1&&e%1==0&&e<=of}function cf(e){return e!=null&&sf(e.length)&&!pd(e)}function lf(e,t,n){if(!Zu(n))return!1;var r=typeof t;return(r==`number`?cf(n)&&Xd(t,n.length):r==`string`&&t in n)?Qd(n[t],e):!1}function uf(e){return af(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&&lf(n[0],n[1],o)&&(a=i<3?void 0:a,i=1),t=Object(t);++r-1}function Fp(e,t){var n=this.__data__,r=Ap(n,e);return r<0?(++this.size,n.push([e,t])):n[r][1]=t,this}function Ip(e){var t=-1,n=e==null?0:e.length;for(this.clear();++t0&&n(s)?t>1?cm(s,t-1,n,r,i):am(i,s):r||(i[i.length]=s)}return i}function lm(e){return e!=null&&e.length?cm(e,1):[]}function um(e){return Vd(rf(e,void 0,lm),e+``)}var dm=op(Object.getPrototypeOf,Object),fm=`[object Object]`,pm=Function.prototype,mm=Object.prototype,hm=pm.toString,gm=mm.hasOwnProperty,_m=hm.call(Object);function vm(e){if(!Ru(e)||Lu(e)!=fm)return!1;var t=dm(e);if(t===null)return!0;var n=gm.call(t,`constructor`)&&t.constructor;return typeof n==`function`&&n instanceof n&&hm.call(n)==_m}function ym(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 Sm(e,t,n){return n===void 0&&(n=t,t=void 0),n!==void 0&&(n=rd(n),n=n===n?n:0),t!==void 0&&(t=rd(t),t=t===t?t:0),xm(rd(e),t,n)}function Cm(){this.__data__=new Ip,this.size=0}function wm(e){var t=this.__data__,n=t.delete(e);return this.size=t.size,n}function Tm(e){return this.__data__.get(e)}function Em(e){return this.__data__.has(e)}var Dm=200;function Om(e,t){var n=this.__data__;if(n instanceof Ip){var r=n.__data__;if(!Lp||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&Lg?new Ng:void 0;for(a.set(e,t),a.set(t,e);++d=t||n<0||d&&r>=a}function _(){var e=F_();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(F_())}function x(){var e=F_(),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 B_(e,t,n){(n!==void 0&&!Qd(e[t],n)||n===void 0&&!(t in e))&&Zd(e,t,n)}function V_(e){return Ru(e)&&cf(e)}function H_(e,t){if(!(t===`constructor`&&typeof e[t]==`function`)&&t!=`__proto__`)return e[t]}function U_(e){return tf(e,mp(e))}function W_(e,t,n,r,i,a,o){var s=H_(e,n),c=H_(t,n),l=o.get(c);if(l){B_(e,n,l);return}var u=a?a(s,c,n+``,e,t,o):void 0,d=u===void 0;if(d){var f=Hu(c),p=!f&&wf(c),m=!f&&!p&&rp(c);u=c,f||p||m?Hu(s)?u=s:V_(s)?u=Pd(s):p?(d=!1,u=Im(c,!0)):m?(d=!1,u=bh(c,!0)):u=[]:vm(c)||yf(c)?(u=s,yf(s)?u=U_(s):(!Zu(s)||pd(s))&&(u=Vh(c))):d=!1}d&&(o.set(c,u),i(u,c,r,a,o),o.delete(c)),B_(e,n,u)}function G_(e,t,n,r,i){e!==t&&j_(t,function(a,o){if(i||=new km,Zu(a))W_(e,t,o,n,G_,r,i);else{var s=r?r(H_(e,o),a,o+``,e,t,i):void 0;s===void 0&&(s=a),B_(e,o,s)}},mp)}function K_(e,t,n){for(var r=-1,i=e==null?0:e.length;++r1,t}),tf(e,qm(e),n),r&&(n=Eg(n,fv|pv|mv,dv));for(var i=t.length;i--;)uv(n,t[i]);return n});function gv(e,t,n,r){if(!Zu(e))return e;t=em(t,e);for(var i=-1,a=t.length,o=a-1,s=e;s!=null&&++i=wv){var l=t?null:Cv(e);if(l)return Bg(l);o=!1,i=Fg,c=new Ng}else c=t?[]:s;outer:for(;++re===void 0,Ov=e=>typeof e==`boolean`,kv=e=>typeof e==`number`,Av=e=>!e&&e!==0||C(e)&&e.length===0||P(e)&&!Object.keys(e).length,jv=e=>typeof Element>`u`?!1:e instanceof Element,Mv=e=>av(e),Nv=e=>R(e)?!Number.isNaN(Number(e)):!1,Pv=e=>e===window;v();var Fv=e=>Object.keys(e),Iv=e=>Object.entries(e),Lv=(e,t,n)=>({get value(){return im(e,t,n)},set value(n){bv(e,t,n)}}),Rv=`__epPropKey`,X=e=>e,zv=e=>P(e)&&!!e.__epPropKey,Bv=(e,t)=>{if(!P(e)||zv(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,[Rv]:!0};return O(e,`default`)&&(s.default=i),s},Z=e=>nv(Object.entries(e).map(([e,t])=>[e,Bv(t,e)])),Vv=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`}}),Hv={scroll:({scrollTop:e,fixed:t})=>kv(e)&&Ov(t),[vu]:e=>Ov(e)},Uv=class extends Error{constructor(e){super(e),this.name=`ElementPlusError`}};function Wv(e,t){throw new Uv(`[${e}] ${t}`)}function Gv(e,t){{let n=R(e)?new Uv(`[${e}] ${t}`):e;console.warn(n)}}var Kv=[`class`,`style`],qv=/^on[A-Z]/,Jv=(e={})=>{let{excludeListeners:t=!1,excludeKeys:n}=e,r=H(()=>(n?.value||[]).concat(Kv)),i=a();return i?H(()=>nv(Object.entries(i.proxy?.$attrs).filter(([e])=>!r.value.includes(e)&&!(t&&qv.test(e))))):(Gv(`use-attrs`,`getCurrentInstance() returned null. useAttrs() must be called at the top of a setup function`),H(()=>({})))};function Yv(e,t){let n=oe();return De(()=>{n.value=e()},{...t,flush:t?.flush??`sync`}),he(n)}function Xv(e,t){return Ie()?(Te(e,t),!0):!1}var Zv=new WeakMap,Qv=(...e)=>{let t=e[0],n=a()?.proxy??Ie();if(n==null&&!T())throw Error(`injectLocal must be called in setup`);return n&&Zv.has(n)&&t in Zv.get(n)?Zv.get(n)[t]:D(...e)},$v=typeof window<`u`&&typeof document<`u`;typeof WorkerGlobalScope<`u`&&globalThis instanceof WorkerGlobalScope;var ey=e=>e!==void 0,ty=e=>e!=null,ny=Object.prototype.toString,ry=e=>ny.call(e)===`[object Object]`,iy=(e,t,n)=>Math.min(n,Math.max(t,e)),ay=()=>{},oy=sy();function sy(){var e,t;return $v&&!!(!((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 cy(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 ly(e,t={}){let n,r,i=ay,a=e=>{clearTimeout(e),i(),i=ay},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 uy(...e){let t=0,n,r=!0,i=ay,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=ay)};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 dy(e){return e.endsWith(`rem`)?Number.parseFloat(e)*16:Number.parseFloat(e)}function fy(e){return Array.isArray(e)?e:[e]}function py(e){return e||a()}function my(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 hy(e){return my(H(e))}function gy(e,t=200,n={}){return cy(ly(t,n),e)}function _y(e,t=200,n={}){let r=B(ze(e)),i=gy(()=>{r.value=e.value},t,n);return V(e,()=>i()),He(r)}function vy(e,t=200,n=!1,r=!0,i=!1){return cy(uy(t,n,r,i),e)}function yy(e,t=!0,n){py(n)?I(e,n):t?e():A(e)}function by(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,$v&&l()),Xv(c),{isPending:He(a),start:l,stop:c}}function xy(e,t,n){return V(e,t,{...n,immediate:!0})}var Sy=$v?window:void 0,Cy=$v?window.document:void 0;$v&&window.navigator,$v&&window.location;function wy(e){let t=ze(e);return t?.$el??t}function Ty(...e){let t=(e,t,n,r)=>(e.addEventListener(t,n,r),()=>e.removeEventListener(t,n,r)),n=H(()=>{let t=fy(ze(e[0])).filter(e=>e!=null);return t.every(e=>typeof e!=`string`)?t:void 0});return xy(()=>[n.value?.map(e=>wy(e))??[Sy].filter(e=>e!=null),fy(ze(n.value?e[1]:e[0])),fy(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=ry(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 Ey=!1;function Dy(e,t,n={}){let{window:r=Sy,ignore:i=[],capture:a=!0,detectIframe:o=!1,controls:s=!1}=n;if(!r)return s?{stop:ay,cancel:ay,trigger:ay}:ay;if(oy&&!Ey){Ey=!0;let e={passive:!0};Array.from(r.document.body.children).forEach(t=>t.addEventListener(`click`,ay,e)),r.document.documentElement.addEventListener(`click`,ay,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=wy(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=wy(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=[Ty(r,`click`,e=>{p||(p=!0,setTimeout(()=>{p=!1},0),f(e))},{passive:!0,capture:a}),Ty(r,`pointerdown`,t=>{let n=wy(e);c=!l(t)&&!!(n&&!t.composedPath().includes(n))},{passive:!0}),o&&Ty(r,`blur`,n=>{setTimeout(()=>{let i=wy(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 Oy(){let e=oe(!1),t=a();return t&&I(()=>{e.value=!0},t),e}function ky(e){let t=Oy();return H(()=>(t.value,!!e()))}function Ay(e,t,n={}){let{window:r=Sy,...i}=n,a,o=ky(()=>r&&`MutationObserver`in r),s=()=>{a&&=(a.disconnect(),void 0)},c=V(H(()=>{let t=fy(ze(e)).map(wy).filter(ty);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 Xv(u),{isSupported:o,stop:u,takeRecords:l}}function jy(e,t,n={}){let{window:r=Sy,document:i=r?.document,flush:a=`sync`}=n;if(!r||!i)return ay;let o,s=e=>{o?.(),o=e},c=De(()=>{let n=wy(e);if(n){let{stop:e}=Ay(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 Xv(l),l}function My(e={}){let{window:t=Sy,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};Ty(t,`blur`,e=>{e.relatedTarget===null&&s()},e),Ty(t,`focus`,s,e)}return r&&jy(o,s,{document:i}),s(),o}var Ny=Symbol(`vueuse-ssr-width`);function Py(){let e=T()?Qv(Ny,null):null;return typeof e==`number`?e:void 0}function Fy(e,t={}){let{window:n=Sy,ssrWidth:r=Py()}=t,i=ky(()=>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>=dy(n[1])),i&&a&&(a=r<=dy(i[1])),t?!a:a});return}i.value&&(o.value=n.matchMedia(ze(e)),s.value=o.value.matches)}),Ty(o,`change`,e=>{s.value=e.matches},{passive:!0}),H(()=>s.value)}function Iy(e){return JSON.parse(JSON.stringify(e))}function Ly(e,t,n={}){let{window:r=Sy,initialValue:i,observe:a=!1}=n,o=oe(i),s=H(()=>{var e;return wy(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&&Ay(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 Ry(e={}){let{document:t=Cy}=e;if(!t)return oe(`visible`);let n=oe(t.visibilityState);return Ty(t,`visibilitychange`,()=>{n.value=t.visibilityState},{passive:!0}),n}function zy(e,t,n={}){let{window:r=Sy,...i}=n,a,o=ky(()=>r&&`ResizeObserver`in r),s=()=>{a&&=(a.disconnect(),void 0)},c=V(H(()=>{let t=ze(e);return Array.isArray(t)?t.map(e=>wy(e)):[wy(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 Xv(l),{isSupported:o,stop:l}}function By(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=wy(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 zy(e,g),V(()=>wy(e),e=>!e&&g()),Ay(e,g,{attributeFilter:[`style`,`class`]}),i&&Ty(`scroll`,g,{capture:!0,passive:!0}),r&&Ty(`resize`,g,{passive:!0}),yy(()=>{a&&g()}),{height:s,bottom:c,left:l,right:u,top:d,width:f,x:p,y:m,update:g}}function Vy(e,t={width:0,height:0},n={}){let{window:r=Sy,box:i=`content-box`}=n,a=H(()=>{var t;return(t=wy(e))==null||(t=t.namespaceURI)==null?void 0:t.includes(`svg`)}),o=oe(t.width),s=oe(t.height),{stop:c}=zy(e,([t])=>{let n=i===`border-box`?t.borderBoxSize:i===`content-box`?t.contentBoxSize:t.devicePixelContentBoxSize;if(r&&a.value){let t=wy(e);if(t){let e=t.getBoundingClientRect();o.value=e.width,s.value=e.height}}else if(n){let e=fy(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);yy(()=>{let n=wy(e);n&&(o.value=`offsetWidth`in n?n.offsetWidth:t.width,s.value=`offsetHeight`in n?n.offsetHeight:t.height)});let l=V(()=>wy(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 Hy(e,t,n={}){let{root:r,rootMargin:i,threshold:a=0,window:o=Sy,immediate:s=!0}=n,c=ky(()=>o&&`IntersectionObserver`in o),l=H(()=>fy(ze(e)).map(wy).filter(ty)),u=ay,d=oe(s),f=c.value?V(()=>[l.value,wy(r),ze(i),d.value],([e,n,r])=>{if(u(),!d.value||!e.length)return;let i=new IntersectionObserver(t,{root:wy(n),rootMargin:r,threshold:a});e.forEach(e=>e&&i.observe(e)),u=()=>{i.disconnect(),u=ay}},{immediate:s,flush:`post`}):ay,p=()=>{u(),f(),d.value=!1};return Xv(p),{isSupported:c,isActive:d,pause(){u(),d.value=!1},resume(){d.value=!0},stop:p}}function Uy(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):Iy(e):e,_=()=>ey(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 Wy(e={}){let{window:t=Sy}=e;if(!t)return oe(!1);let n=oe(t.document.hasFocus()),r={passive:!0};return Ty(t,`blur`,()=>{n.value=!1},r),Ty(t,`focus`,()=>{n.value=!0},r),n}function Gy(e={}){let{window:t=Sy,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(),yy(l);let u={passive:!0};return Ty(`resize`,l,u),t&&o===`visual`&&t.visualViewport&&Ty(t.visualViewport,`resize`,l,u),i&&V(Fy(`(orientation: portrait)`),()=>l()),{width:s,height:c}}function Ky(){let e=oe(),t=B(0),n=H(()=>({minWidth:`${Math.max(t.value,11)}px`}));return zy(e,()=>{t.value=e.value?.getBoundingClientRect().width??0}),{calculatorRef:e,calculatorWidth:t,inputStyle:n}}var qy=({from:e,replacement:t,scope:n,version:r,ref:i,type:a=`API`},o)=>{V(()=>f(o),o=>{o&&Gv(n,`[${a}] ${e} is about to be deprecated in version ${r}, please use ${t} instead. For more detail, please visit: ${i} `)},{immediate:!0})},Jy=`a[href],button:not([disabled]),button:not([hidden]),:not([tabindex="-1"]),input:not([disabled]),input:not([type="hidden"]),select:not([disabled]),textarea:not([disabled])`,Yy=e=>typeof ShadowRoot>`u`?!1:e instanceof ShadowRoot,Xy=e=>typeof Element>`u`?!1:e instanceof Element,Zy=e=>getComputedStyle(e).position===`fixed`?!1:e.offsetParent!==null,Qy=e=>Array.from(e.querySelectorAll(Jy)).filter(e=>$y(e)&&Zy(e)),$y=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}},eb=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},tb=e=>!e.getAttribute(`aria-owns`),nb=(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},rb=(e,t)=>{if(!e||!e.focus)return;let n=!1;Xy(e)&&!$y(e)&&!e.getAttribute(`tabindex`)&&(e.setAttribute(`tabindex`,`-1`),n=!0),e.focus(t),Xy(e)&&n&&e.removeAttribute(`tabindex`)},ib=e=>{e&&(rb(e),!tb(e)&&e.click())},ab=()=>$v&&/firefox/i.test(window.navigator.userAgent),ob=()=>$v&&/android/i.test(window.navigator.userAgent);v();var sb=(e=``)=>e.replace(/[|\\{}()[\]^$+*?.]/g,`\\$&`).replace(/-/g,`\\x2d`),cb=e=>be(e),lb=`utils/dom/style`,ub=(e=``)=>e.split(` `).filter(e=>!!e.trim()),db=(e,t)=>{if(!e||!t)return!1;if(t.includes(` `))throw Error(`className should not contain space.`);return e.classList.contains(t)},fb=(e,t)=>{!e||!t.trim()||e.classList.add(...ub(t))},pb=(e,t)=>{!e||!t.trim()||e.classList.remove(...ub(t))},mb=(e,t)=>{if(!$v||!e||!t||Yy(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]}},hb=(e,t,n)=>{if(!(!e||!t))if(P(t))Iv(t).forEach(([t,n])=>hb(e,t,n));else{let r=o(t);e.style[r]=n}};function gb(e,t=`px`){if(!e&&e!==0)return``;if(kv(e)||Nv(e))return`${e}${t}`;if(R(e))return e;Gv(lb,`binding value must be a string or number`)}var _b=(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}},vb={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}`}}},yb=e=>(t,n)=>bb(t,n,f(e)),bb=(e,t,n)=>im(n,e,e).replace(/\{(\w+)\}/g,(e,n)=>`${t?.[n]??`{${n}}`}`),xb=e=>({lang:H(()=>f(e).name),locale:pe(e)?e:B(e),t:yb(e)}),Sb=Symbol(`localeContextKey`),Cb=e=>{let t=e||D(Sb,B());return xb(H(()=>t.value||vb))},wb=`is-`,Tb=(e,t,n,r,i)=>{let a=`${e}-${t}`;return n&&(a+=`-${n}`),r&&(a+=`__${r}`),i&&(a+=`--${i}`),a},Eb=Symbol(`namespaceContextKey`),Db=e=>{let t=e||(a()?D(Eb,B(`el`)):B(`el`));return H(()=>f(t)||`el`)},Q=(e,t)=>{let n=Db(t);return{namespace:n,b:(t=``)=>Tb(n.value,e,t,``,``),e:t=>t?Tb(n.value,e,``,t,``):``,m:t=>t?Tb(n.value,e,``,``,t):``,be:(t,r)=>t&&r?Tb(n.value,e,t,r,``):``,em:(t,r)=>t&&r?Tb(n.value,e,``,t,r):``,bm:(t,r)=>t&&r?Tb(n.value,e,t,``,r):``,bem:(t,r,i)=>t&&r&&i?Tb(n.value,e,t,r,i):``,is:(e,...t)=>{let n=t.length>=1?t[0]:!0;return e&&n?`${wb}${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 Ob(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 kb=e=>$v?window.requestAnimationFrame(e):setTimeout(e,16),Ab=e=>$v?window.cancelAnimationFrame(e):clearTimeout(e),jb=(e,t)=>{if(!$v)return!1;let n={undefined:`overflow`,true:`overflow-y`,false:`overflow-x`}[String(t)],r=mb(e,n);return[`scroll`,`auto`,`overlay`].some(e=>r.includes(e))},Mb=(e,t)=>{if(!$v)return;let n=e;for(;n;){if([window,document,document.documentElement].includes(n))return window;if(jb(n,t))return n;n=Yy(n)?n.host:n.parentNode}return n},Nb,Pb=e=>{if(!$v)return 0;if(Nb!==void 0)return Nb;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),Nb=n-i,Nb};function Fb(e,t){if(!$v)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 Ib(e,t,n,r,i){let a=Date.now(),o,s=()=>{let l=Date.now()-a,u=Ob(l>r?r:l,t,n,r);Pv(e)?e.scrollTo(window.pageXOffset,u):e.scrollTop=u,l{o&&Ab(o)}}var Lb=(e,t)=>Pv(t)?e.ownerDocument.documentElement:t,Rb=e=>Pv(e)?window.scrollY:e.scrollTop,zb=(e,t={})=>{pe(e)||Wv(`[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,pb(document.body,r.value))},200))};V(e,e=>{if(!e){c();return}s=!1,a=!db(document.body,r.value),a&&(o=document.body.style.width,fb(document.body,r.value)),i=Pb(n.namespace.value);let t=document.documentElement.clientHeight0&&(t||l===`scroll`)&&a&&(document.body.style.width=`calc(100% - ${i}px)`)}),Te(()=>c())},Bb=(e,t,{checkForDefaultPrevented:n=!0}={})=>r=>{let i=e?.(r);if(n===!1||!i)return t?.(r)},Vb=e=>t=>t.pointerType===`mouse`?e(t):void 0,Hb=e=>{if(e.code&&e.code!==`Unidentified`)return e.code;let t=Ub(e);if(t){if(Object.values(Y).includes(t))return t;switch(t){case` `:return Y.space;default:return``}}return``},Ub=e=>{let t=e.key&&e.key!==`Unidentified`?e.key:``;if(!t&&e.type===`keyup`&&ob()){let n=e.target;t=n.value.charAt(n.selectionStart-1)}return t},Wb=Bv({type:X(Boolean),default:null}),Gb=Bv({type:X(Function)}),Kb=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&&$v;n&&f(t,!0),(h.value||!n)&&g(e)},y=e=>{if(p.disabled===!0||!$v)return;let n=m.value&&$v;n&&f(t,!1),(h.value||!n)&&_(e)},b=e=>{Ov(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]:Wb,[n]:Gb},useModelToggleEmits:r}},{useModelToggle:qb,useModelToggleProps:Jb,useModelToggleEmits:Yb}=Kb(`modelValue`),Xb=e=>{let t=a();return H(()=>t?.proxy?.$props?.[e])},Zb=(e,t,n={})=>{let r={name:`updateState`,enabled:!0,phase:`write`,fn:({state:e})=>{let t=Qb(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=or(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 Qb(e){let t=Object.keys(e.elements);return{styles:nv(t.map(t=>[t,e.styles[t]||{}])),attributes:nv(t.map(t=>[t,e.attributes[t]]))}}var $b=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}}},ex=(e,t=0)=>{if(t===0)return e;let n=B(P(t)&&!!t.initVal),r=null,i=t=>{if(Dv(t)){n.value=e.value;return}r&&clearTimeout(r),r=setTimeout(()=>{n.value=e.value},t)},a=e=>{e===`leading`?kv(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 tx(){let e,t=(t,r)=>{n(),e=globalThis.setTimeout(t,r)},n=()=>{e!==void 0&&(globalThis.clearTimeout(e),e=void 0)};return Xv(()=>n()),{registerTimeout:t,cancelTimeout:n}}var nx={prefix:Math.floor(Math.random()*1e4),current:0},rx=Symbol(`elIdInjection`),ix=()=>a()?D(rx,nx):nx,ax=e=>{let t=ix();!$v&&t===nx&&Gv(`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=$2(this.defaults,t);let{transitional:n,paramsSerializer:r,headers:i}=t;n!==void 0&&O4.assertOptions(n,{silentJSONParsing:k4.transitional(k4.boolean),forcedJSONParsing:k4.transitional(k4.boolean),clarifyTimeoutError:k4.transitional(k4.boolean),legacyInterceptorReqResOrdering:k4.transitional(k4.boolean)},!1),r!=null&&($.isFunction(r)?t.paramsSerializer={serialize:r}:O4.assertOptions(r,{encode:k4.function,serialize:k4.function},!0)),t.allowAbsoluteUrls!==void 0||(this.defaults.allowAbsoluteUrls===void 0?t.allowAbsoluteUrls=!0:t.allowAbsoluteUrls=this.defaults.allowAbsoluteUrls),O4.assertOptions(t,{baseUrl:k4.spelling(`baseURL`),withXsrfToken:k4.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=i2.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||x2;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=[w4.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 z2(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 M4(e){return function(t){return e.apply(null,t)}}function N4(e){return $.isObject(e)&&e.isAxiosError===!0}var P4={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(P4).forEach(([e,t])=>{P4[t]=e});function F4(e){let t=new A4(e),n=P1(A4.prototype.request,t);return $.extend(n,A4.prototype,t,{allOwnKeys:!0}),$.extend(n,t,null,{allOwnKeys:!0}),n.create=function(t){return F4($2(e,t))},n}var I4=F4(I2);I4.Axios=A4,I4.CanceledError=z2,I4.CancelToken=j4,I4.isCancel=R2,I4.VERSION=d4,I4.toFormData=m2,I4.AxiosError=c2,I4.Cancel=I4.CanceledError,I4.all=function(e){return Promise.all(e)},I4.spread=M4,I4.isAxiosError=N4,I4.mergeConfig=$2,I4.AxiosHeaders=i2,I4.formToJSON=e=>N2($.isHTMLForm(e)?new FormData(e):e),I4.getAdapter=S4.getAdapter,I4.HttpStatusCode=P4,I4.default=I4;var L4=I4.create({baseURL:qe(),headers:{Accept:`application/json`,"Content-Type":`application/json`}});L4.interceptors.request.use(e=>{let t=localStorage.getItem(Ye);return t&&(e.headers.Authorization=`Bearer ${t}`),e}),L4.interceptors.response.use(e=>e,e=>{if(I4.isAxiosError(e)&&e.response?.status===401){localStorage.removeItem(Ye);let e=window.location.pathname,t=et();e.startsWith(t)||window.location.assign(`${t}?redirect=${encodeURIComponent(e+window.location.search)}`)}return Promise.reject(e)});async function R4(){let{data:e}=await L4.get(`/me/menus`);return z4(e)}function z4(e){let t=e?.data??e;if(!Array.isArray(t))throw Error(`菜单接口返回格式无效(expect data 为数组)`);return t}var B4=`modulepreload`,V4=function(e){return`/admin/`+e},H4={},U4=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=V4(t,n),t in H4)return;H4[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`:B4,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)})},W4={"admin-dashboard":()=>U4(()=>import(`./AdminDashboardView-bgi9eL34.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8])),"admin-competitions-list":()=>U4(()=>import(`./CompetitionListView-Cfx3WHk3.js`),__vite__mapDeps([9,1,2,3,4,5,6,7,10])),"admin-competition-form":()=>U4(()=>import(`./CompetitionFormView-DiCgHnzp.js`),__vite__mapDeps([11,1,3,2,12,4,13,14,5,6,15,16])),"admin-competition-workspace":()=>U4(()=>import(`./CompetitionFormView-DiCgHnzp.js`),__vite__mapDeps([11,1,3,2,12,4,13,14,5,6,15,16])),"admin-public-source-channels":()=>U4(()=>import(`./PublicSourceChannelManageView-DlTlAd9z.js`),__vite__mapDeps([17,1,3,2,13,18])),"admin-reviewers-list":()=>U4(()=>import(`./ReviewerManageView-CxEciLGw.js`).then(e=>e.n),__vite__mapDeps([19,1,3,2,4,5,6,20])),"admin-review-portal":()=>U4(()=>import(`./ReviewPortalView-d2Z6hY_x.js`),__vite__mapDeps([21,1,2,3,5,6,22])),"admin-users-list":()=>U4(()=>import(`./AdminUserManageView-2JJ2wAQ8.js`),__vite__mapDeps([23,1,2,3,24]))},G4=pu(`adminMenu`,()=>{let e=B([]);function t(t){e.value=t}return{menus:e,setMenus:t}}),K4=[],q4=!1;function J4(e){K4.push(e)}function Y4(e){for(let t of[...K4].reverse())e.hasRoute(t)&&e.removeRoute(t);K4.length=0,q4=!1}function X4(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:()=>U4(()=>import(`./AdminMenuGroupLayout-Bb7HH6Ks.js`),__vite__mapDeps([25,1,2,3])),meta:{title:r.title,permissionCode:r.permissionCode,menuGroup:!0},children:[]}),J4(r.name),X4(e,r.name,r.children)}else{if(!r.name||!r.path)continue;let n=W4[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}}),J4(r.name)}}async function Z4(e){if(q4)return;let t;try{t=await R4()}catch(e){let t=e instanceof Error?e.message:`菜单加载失败`;throw MZ.error(`${t},请检查接口与登录态。`),e}G4().setMenus(t),X4(e,`AdminLayout`,t),e.addRoute(`AdminLayout`,{path:`competitions/new`,name:`admin-competition-new`,component:W4[`admin-competition-form`],meta:{title:`新建赛事`,hideInMenu:!0}}),J4(`admin-competition-new`),e.addRoute(`AdminLayout`,{path:`competitions/:id/edit`,name:`admin-competition-edit`,component:W4[`admin-competition-form`],meta:{title:`编辑赛事`,hideInMenu:!0}}),J4(`admin-competition-edit`),e.addRoute(`AdminLayout`,{path:`competition/workspace`,name:`admin-competition-workspace`,component:W4[`admin-competition-workspace`],meta:{title:`赛事配置`,hideInMenu:!0}}),J4(`admin-competition-workspace`),e.addRoute(`AdminLayout`,{path:`competition/ws/:pathMatch(.*)*`,name:`admin-competition-ws-legacy-redirect`,redirect:{name:`admin-competition-workspace`}}),J4(`admin-competition-ws-legacy-redirect`),q4=!0}function Q4(){return q4}function $4(){try{let e=localStorage.getItem(Ze);if(!e)return null;let t=JSON.parse(e);if(t&&typeof t.id==`number`)return t}catch{}return null}var e3=pu(`adminAuth`,()=>{let e=B(localStorage.getItem(`cxxfds_admin_token`)??``),t=B($4()),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(Ye,t):localStorage.removeItem(Ye)}function a(e){t.value=e,e?localStorage.setItem(Ze,JSON.stringify(e)):localStorage.removeItem(Ze)}function o(e,t){i(e),a(t??null)}function s(e){i(``),a(null),Y4(e)}return{token:e,user:t,isAuthenticated:n,displayName:r,setToken:i,setUser:a,setSession:o,logout:s}}),t3=()=>U4(()=>import(`./MainLayout-Cd6TmBt5.js`),__vite__mapDeps([26,1,2,3,6,15,27,28,29]));function n3(){let e=localStorage.getItem(Qe),t=localStorage.getItem(Je);return t?e?{name:`participant-apply`,params:{slug:t},replace:!0}:{name:`participant-login`,params:{slug:t},replace:!0}:{path:`/c`,replace:!0}}var r3=A1({history:Y$(`/admin/`),routes:[{path:`/`,redirect:n3},{path:`/c`,name:`participant-landing`,component:()=>U4(()=>import(`./ParticipantLandingView-Nm5ZpNux.js`),__vite__mapDeps([30,2,3,28]))},{path:`/c/:slug/login`,name:`participant-login`,component:()=>U4(()=>import(`./LoginView-CVK6l6R-.js`),__vite__mapDeps([31,2,3,6,32,15,33,29])),meta:{guestOnly:!0}},{path:`/c/:slug/review/login`,name:`reviewer-login`,component:()=>U4(()=>import(`./ReviewerLoginView-f4fQ_qL2.js`),__vite__mapDeps([34,2,3,6,15,33,29])),meta:{guestReviewerOnly:!0}},{path:`/c/:slug/review`,component:()=>U4(()=>import(`./ReviewerLayout-DPWQlamP.js`),__vite__mapDeps([35,1,2,3,36,15,6,37,28,29])),meta:{requiresReviewerAuth:!0},children:[{path:`applications/:id(\\d+)`,name:`reviewer-application-detail`,component:()=>U4(()=>import(`./ReviewerApplicationDetailView-T_1tdCwQ.js`),__vite__mapDeps([38,1,2,3,39,6,40]))},{path:``,name:`reviewer-projects`,component:()=>U4(()=>import(`./ReviewerProjectsView-jPz8ApNU.js`),__vite__mapDeps([41,1,2,3,42,6,43]))}]},{path:`/c/:slug/manage/login`,name:`manage-login`,component:()=>U4(()=>import(`./ManageLoginView-DHArNGtJ.js`),__vite__mapDeps([44,2,3,45,6,15,33,29])),meta:{guestManageOnly:!0}},{path:`/c/:slug/manage`,component:()=>U4(()=>import(`./CompetitionManageLayout-MpAD2hVv.js`),__vite__mapDeps([46,1,2,3,45,36,15,6,5,47,28,29])),meta:{requiresAdminAuth:!0},children:[{path:``,redirect:e=>({name:`manage-dashboard`,params:{slug:e.params.slug}})},{path:`dashboard`,name:`manage-dashboard`,component:()=>U4(()=>import(`./ManageDashboardView-CHXG5VYB.js`),__vite__mapDeps([48,2,3]))},{path:`projects`,name:`manage-projects`,component:()=>U4(()=>import(`./ManageProjectsView-wmE1qy1o.js`),__vite__mapDeps([49,2,3,12,4,13,14,42]))},{path:`projects/:id(\\d+)`,name:`manage-project-detail`,component:()=>U4(()=>import(`./ManageProjectDetailView-B2yDYYb3.js`),__vite__mapDeps([50,1,2,3,12,39,51]))},{path:`reviewers`,name:`manage-reviewers`,component:()=>U4(()=>import(`./ManageReviewersView-BZfk3zzi.js`),__vite__mapDeps([52,1,2,3,19,4,5,6,20,53]))}]},{path:`/c/:slug`,component:t3,meta:{requiresAuth:!0},children:[{path:``,redirect:e=>({name:`participant-apply`,params:{slug:e.params.slug}})},{path:`apply`,name:`participant-apply`,component:()=>U4(()=>import(`./ApplyView-CA5C6FUE.js`),__vite__mapDeps([54,1,2,3,6,32,15,55]))}]},{path:`/app`,redirect:()=>{let e=localStorage.getItem(Je);return e?{name:`participant-apply`,params:{slug:e}}:{path:`/c`}}},{path:`/app/apply`,redirect:()=>{let e=localStorage.getItem(Je);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:()=>U4(()=>import(`./AdminLoginView-DPcFu6H5.js`),__vite__mapDeps([56,1,2,3,45,6,57]))},{path:`/admin`,name:`AdminLayout`,component:()=>U4(()=>import(`./AdminLayout-BQCX55O-.js`),__vite__mapDeps([58,1,2,3,45,4,5,6,59])),children:[{path:``,name:`admin-dashboard`,component:()=>U4(()=>import(`./AdminDashboardView-bgi9eL34.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8])),meta:{title:`首页`,permissionCode:`admin.dashboard`}},{path:`dashboard`,redirect:{name:`admin-dashboard`}}]}]});r3.beforeEach(async e=>{let t=e.params.slug==null?``:String(e.params.slug).trim();!$e(e.path)&&!Ge(e.path)&&t&&localStorage.setItem(Je,t);let n=localStorage.getItem(Qe);if(Ge(e.path)){let n=e3();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($e(e.path)){let{token:n,competitionSlug:r}=Ke();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=e3();return e.name===`admin-login`||e.path===`/admin/login`||e.path===`/admin/admin/login`?t.isAuthenticated?(Q4()||await Z4(r3),{name:`admin-dashboard`,replace:!0}):!0:t.isAuthenticated?Q4()?!0:(await Z4(r3),{...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}:n3()}return!0});var i3=`cxxfds_public_source_code`,a3=`cxxfds_public_source_checked_at`,o3=720*60*60*1e3;function s3(e){let t=typeof e==`string`?e.trim():``;return/^[A-Za-z0-9_-]{2,64}$/.test(t)?t:null}function c3(){return Date.now()}function l3(){try{let e=`__cxxfds_storage_probe__`;return window.localStorage.setItem(e,`1`),window.localStorage.removeItem(e),!0}catch{return!1}}function u3(){l3()&&(window.localStorage.removeItem(i3),window.localStorage.removeItem(a3))}function d3(e){l3()&&(window.localStorage.setItem(i3,e),window.localStorage.setItem(a3,String(c3())))}function f3(){let e=typeof window<`u`?s3(new URLSearchParams(window.location.search).get(`src`)):null;if(e)return e;if(!l3())return null;let t=window.localStorage.getItem(i3)?.trim()??``,n=window.localStorage.getItem(a3)?.trim()??``,r=Number.parseInt(n,10);return!t||!Number.isFinite(r)||r<=0||c3()-r>o3?(u3(),null):t}async function p3(e){let t=e.trim();if(!s3(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 m3(){if(typeof window>`u`)return;let e=new URLSearchParams(window.location.search).get(`src`)?.trim()??``;if(e)try{let t=await p3(e);t&&d3(t)}catch{}}var h3=$l();m3(),r3.afterEach(()=>{m3()}),document.documentElement.dataset.adminBuildMarker=`2026-06-19-frontend-rebuild`,Ae(N1).use(h3).use(r3).use(TQ,{locale:EQ}).mount(`#app`);export{mu as _,I4 as a,XZ as c,cw as d,lw as f,pu as g,Aw as h,L4 as i,MZ as l,Sw as m,e3 as n,M1 as o,vw as p,G4 as r,j1 as s,f3 as t,rw as u,So as v,hs 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=$2(this.defaults,t);let{transitional:n,paramsSerializer:r,headers:i}=t;n!==void 0&&O4.assertOptions(n,{silentJSONParsing:k4.transitional(k4.boolean),forcedJSONParsing:k4.transitional(k4.boolean),clarifyTimeoutError:k4.transitional(k4.boolean),legacyInterceptorReqResOrdering:k4.transitional(k4.boolean)},!1),r!=null&&($.isFunction(r)?t.paramsSerializer={serialize:r}:O4.assertOptions(r,{encode:k4.function,serialize:k4.function},!0)),t.allowAbsoluteUrls!==void 0||(this.defaults.allowAbsoluteUrls===void 0?t.allowAbsoluteUrls=!0:t.allowAbsoluteUrls=this.defaults.allowAbsoluteUrls),O4.assertOptions(t,{baseUrl:k4.spelling(`baseURL`),withXsrfToken:k4.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=i2.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||x2;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=[w4.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 z2(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 M4(e){return function(t){return e.apply(null,t)}}function N4(e){return $.isObject(e)&&e.isAxiosError===!0}var P4={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(P4).forEach(([e,t])=>{P4[t]=e});function F4(e){let t=new A4(e),n=P1(A4.prototype.request,t);return $.extend(n,A4.prototype,t,{allOwnKeys:!0}),$.extend(n,t,null,{allOwnKeys:!0}),n.create=function(t){return F4($2(e,t))},n}var I4=F4(I2);I4.Axios=A4,I4.CanceledError=z2,I4.CancelToken=j4,I4.isCancel=R2,I4.VERSION=d4,I4.toFormData=m2,I4.AxiosError=c2,I4.Cancel=I4.CanceledError,I4.all=function(e){return Promise.all(e)},I4.spread=M4,I4.isAxiosError=N4,I4.mergeConfig=$2,I4.AxiosHeaders=i2,I4.formToJSON=e=>N2($.isHTMLForm(e)?new FormData(e):e),I4.getAdapter=S4.getAdapter,I4.HttpStatusCode=P4,I4.default=I4;var L4=I4.create({baseURL:qe(),headers:{Accept:`application/json`,"Content-Type":`application/json`}});L4.interceptors.request.use(e=>{let t=localStorage.getItem(Ye);return t&&(e.headers.Authorization=`Bearer ${t}`),e}),L4.interceptors.response.use(e=>e,e=>{if(I4.isAxiosError(e)&&e.response?.status===401){localStorage.removeItem(Ye);let e=window.location.pathname,t=et();e.startsWith(t)||window.location.assign(`${t}?redirect=${encodeURIComponent(e+window.location.search)}`)}return Promise.reject(e)});async function R4(){let{data:e}=await L4.get(`/me/menus`);return z4(e)}function z4(e){let t=e?.data??e;if(!Array.isArray(t))throw Error(`菜单接口返回格式无效(expect data 为数组)`);return t}var B4=`modulepreload`,V4=function(e){return`/admin/`+e},H4={},U4=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=V4(t,n),t in H4)return;H4[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`:B4,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)})},W4={"admin-dashboard":()=>U4(()=>import(`./AdminDashboardView-QrNIiQmE.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8])),"admin-competitions-list":()=>U4(()=>import(`./CompetitionListView-yQPlRTwU.js`),__vite__mapDeps([9,1,2,3,4,5,6,7,10])),"admin-competition-form":()=>U4(()=>import(`./CompetitionFormView-DqNsX39q.js`),__vite__mapDeps([11,1,3,2,12,4,13,14,5,6,15,16])),"admin-competition-workspace":()=>U4(()=>import(`./CompetitionFormView-DqNsX39q.js`),__vite__mapDeps([11,1,3,2,12,4,13,14,5,6,15,16])),"admin-public-source-channels":()=>U4(()=>import(`./PublicSourceChannelManageView-bZ36_DCY.js`),__vite__mapDeps([17,1,3,2,13,18])),"admin-reviewers-list":()=>U4(()=>import(`./ReviewerManageView-C037R0cW.js`).then(e=>e.n),__vite__mapDeps([19,1,3,2,4,5,6,20])),"admin-review-portal":()=>U4(()=>import(`./ReviewPortalView-BBBLfyIF.js`),__vite__mapDeps([21,1,2,3,5,6,22])),"admin-users-list":()=>U4(()=>import(`./AdminUserManageView-DEFhShQd.js`),__vite__mapDeps([23,1,2,3,24]))},G4=pu(`adminMenu`,()=>{let e=B([]);function t(t){e.value=t}return{menus:e,setMenus:t}}),K4=[],q4=!1;function J4(e){K4.push(e)}function Y4(e){for(let t of[...K4].reverse())e.hasRoute(t)&&e.removeRoute(t);K4.length=0,q4=!1}function X4(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:()=>U4(()=>import(`./AdminMenuGroupLayout-Bb7HH6Ks.js`),__vite__mapDeps([25,1,2,3])),meta:{title:r.title,permissionCode:r.permissionCode,menuGroup:!0},children:[]}),J4(r.name),X4(e,r.name,r.children)}else{if(!r.name||!r.path)continue;let n=W4[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}}),J4(r.name)}}async function Z4(e){if(q4)return;let t;try{t=await R4()}catch(e){let t=e instanceof Error?e.message:`菜单加载失败`;throw MZ.error(`${t},请检查接口与登录态。`),e}G4().setMenus(t),X4(e,`AdminLayout`,t),e.addRoute(`AdminLayout`,{path:`competitions/new`,name:`admin-competition-new`,component:W4[`admin-competition-form`],meta:{title:`新建赛事`,hideInMenu:!0}}),J4(`admin-competition-new`),e.addRoute(`AdminLayout`,{path:`competitions/:id/edit`,name:`admin-competition-edit`,component:W4[`admin-competition-form`],meta:{title:`编辑赛事`,hideInMenu:!0}}),J4(`admin-competition-edit`),e.addRoute(`AdminLayout`,{path:`competition/workspace`,name:`admin-competition-workspace`,component:W4[`admin-competition-workspace`],meta:{title:`赛事配置`,hideInMenu:!0}}),J4(`admin-competition-workspace`),e.addRoute(`AdminLayout`,{path:`competition/ws/:pathMatch(.*)*`,name:`admin-competition-ws-legacy-redirect`,redirect:{name:`admin-competition-workspace`}}),J4(`admin-competition-ws-legacy-redirect`),q4=!0}function Q4(){return q4}function $4(){try{let e=localStorage.getItem(Ze);if(!e)return null;let t=JSON.parse(e);if(t&&typeof t.id==`number`)return t}catch{}return null}var e3=pu(`adminAuth`,()=>{let e=B(localStorage.getItem(`cxxfds_admin_token`)??``),t=B($4()),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(Ye,t):localStorage.removeItem(Ye)}function a(e){t.value=e,e?localStorage.setItem(Ze,JSON.stringify(e)):localStorage.removeItem(Ze)}function o(e,t){i(e),a(t??null)}function s(e){i(``),a(null),Y4(e)}return{token:e,user:t,isAuthenticated:n,displayName:r,setToken:i,setUser:a,setSession:o,logout:s}}),t3=()=>U4(()=>import(`./MainLayout-UF6ZpMmZ.js`),__vite__mapDeps([26,1,2,3,6,15,27,28,29]));function n3(){let e=localStorage.getItem(Qe),t=localStorage.getItem(Je);return t?e?{name:`participant-apply`,params:{slug:t},replace:!0}:{name:`participant-login`,params:{slug:t},replace:!0}:{path:`/c`,replace:!0}}var r3=A1({history:Y$(`/admin/`),routes:[{path:`/`,redirect:n3},{path:`/c`,name:`participant-landing`,component:()=>U4(()=>import(`./ParticipantLandingView-f-C152XD.js`),__vite__mapDeps([30,2,3,28]))},{path:`/c/:slug/login`,name:`participant-login`,component:()=>U4(()=>import(`./LoginView-CiXA8l_c.js`),__vite__mapDeps([31,2,3,6,32,15,33,29])),meta:{guestOnly:!0}},{path:`/c/:slug/review/login`,name:`reviewer-login`,component:()=>U4(()=>import(`./ReviewerLoginView-CAPuAWlm.js`),__vite__mapDeps([34,2,3,6,15,33,29])),meta:{guestReviewerOnly:!0}},{path:`/c/:slug/review`,component:()=>U4(()=>import(`./ReviewerLayout-DrMtHdQb.js`),__vite__mapDeps([35,1,2,3,36,15,6,37,28,29])),meta:{requiresReviewerAuth:!0},children:[{path:`applications/:id(\\d+)`,name:`reviewer-application-detail`,component:()=>U4(()=>import(`./ReviewerApplicationDetailView-JUv8HliQ.js`),__vite__mapDeps([38,1,2,3,39,6,40,41]))},{path:``,name:`reviewer-projects`,component:()=>U4(()=>import(`./ReviewerProjectsView-BZjHQZHX.js`),__vite__mapDeps([42,1,2,3,43,6,40,44]))}]},{path:`/c/:slug/manage/login`,name:`manage-login`,component:()=>U4(()=>import(`./ManageLoginView-C9JMyf5G.js`),__vite__mapDeps([45,2,3,46,6,15,33,29])),meta:{guestManageOnly:!0}},{path:`/c/:slug/manage`,component:()=>U4(()=>import(`./CompetitionManageLayout-D7896D_2.js`),__vite__mapDeps([47,1,2,3,46,36,15,6,5,48,28,29])),meta:{requiresAdminAuth:!0},children:[{path:``,redirect:e=>({name:`manage-dashboard`,params:{slug:e.params.slug}})},{path:`dashboard`,name:`manage-dashboard`,component:()=>U4(()=>import(`./ManageDashboardView-DFfRGoDB.js`),__vite__mapDeps([49,2,3]))},{path:`projects`,name:`manage-projects`,component:()=>U4(()=>import(`./ManageProjectsView-xGQol3IC.js`),__vite__mapDeps([50,2,3,12,4,13,14,43,40]))},{path:`projects/:id(\\d+)`,name:`manage-project-detail`,component:()=>U4(()=>import(`./ManageProjectDetailView-BwBn2Dhm.js`),__vite__mapDeps([51,1,2,3,12,39,40,52]))},{path:`reviewers`,name:`manage-reviewers`,component:()=>U4(()=>import(`./ManageReviewersView-DlMOVNNt.js`),__vite__mapDeps([53,1,2,3,19,4,5,6,20,54]))}]},{path:`/c/:slug`,component:t3,meta:{requiresAuth:!0},children:[{path:``,redirect:e=>({name:`participant-apply`,params:{slug:e.params.slug}})},{path:`apply`,name:`participant-apply`,component:()=>U4(()=>import(`./ApplyView-DjjKZu7K.js`),__vite__mapDeps([55,1,2,3,6,32,15,56]))}]},{path:`/app`,redirect:()=>{let e=localStorage.getItem(Je);return e?{name:`participant-apply`,params:{slug:e}}:{path:`/c`}}},{path:`/app/apply`,redirect:()=>{let e=localStorage.getItem(Je);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:()=>U4(()=>import(`./AdminLoginView-BnfIanhh.js`),__vite__mapDeps([57,1,2,3,46,6,58]))},{path:`/admin`,name:`AdminLayout`,component:()=>U4(()=>import(`./AdminLayout-4ZoEmerN.js`),__vite__mapDeps([59,1,2,3,46,4,5,6,60])),children:[{path:``,name:`admin-dashboard`,component:()=>U4(()=>import(`./AdminDashboardView-QrNIiQmE.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8])),meta:{title:`首页`,permissionCode:`admin.dashboard`}},{path:`dashboard`,redirect:{name:`admin-dashboard`}}]}]});r3.beforeEach(async e=>{let t=e.params.slug==null?``:String(e.params.slug).trim();!$e(e.path)&&!Ge(e.path)&&t&&localStorage.setItem(Je,t);let n=localStorage.getItem(Qe);if(Ge(e.path)){let n=e3();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($e(e.path)){let{token:n,competitionSlug:r}=Ke();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=e3();return e.name===`admin-login`||e.path===`/admin/login`||e.path===`/admin/admin/login`?t.isAuthenticated?(Q4()||await Z4(r3),{name:`admin-dashboard`,replace:!0}):!0:t.isAuthenticated?Q4()?!0:(await Z4(r3),{...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}:n3()}return!0});var i3=`cxxfds_public_source_code`,a3=`cxxfds_public_source_checked_at`,o3=720*60*60*1e3;function s3(e){let t=typeof e==`string`?e.trim():``;return/^[A-Za-z0-9_-]{2,64}$/.test(t)?t:null}function c3(){return Date.now()}function l3(){try{let e=`__cxxfds_storage_probe__`;return window.localStorage.setItem(e,`1`),window.localStorage.removeItem(e),!0}catch{return!1}}function u3(){l3()&&(window.localStorage.removeItem(i3),window.localStorage.removeItem(a3))}function d3(e){l3()&&(window.localStorage.setItem(i3,e),window.localStorage.setItem(a3,String(c3())))}function f3(){let e=typeof window<`u`?s3(new URLSearchParams(window.location.search).get(`src`)):null;if(e)return e;if(!l3())return null;let t=window.localStorage.getItem(i3)?.trim()??``,n=window.localStorage.getItem(a3)?.trim()??``,r=Number.parseInt(n,10);return!t||!Number.isFinite(r)||r<=0||c3()-r>o3?(u3(),null):t}async function p3(e){let t=e.trim();if(!s3(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 m3(){if(typeof window>`u`)return;let e=new URLSearchParams(window.location.search).get(`src`)?.trim()??``;if(e)try{let t=await p3(e);t&&d3(t)}catch{}}var h3=$l();m3(),r3.afterEach(()=>{m3()}),document.documentElement.dataset.adminBuildMarker=`2026-06-19-frontend-rebuild`,Ae(N1).use(h3).use(r3).use(TQ,{locale:EQ}).mount(`#app`);export{mu as _,I4 as a,XZ as c,cw as d,lw as f,pu as g,Aw as h,L4 as i,MZ as l,Sw as m,e3 as n,M1 as o,vw as p,G4 as r,j1 as s,f3 as t,rw as u,So as v,hs as y}; \ No newline at end of file diff --git a/public/admin/assets/listPageState-u1yUuMzb.js b/public/admin/assets/listPageState-u1yUuMzb.js new file mode 100644 index 0000000..88375cb --- /dev/null +++ b/public/admin/assets/listPageState-u1yUuMzb.js @@ -0,0 +1 @@ +function e(e,t){let n=typeof e==`string`?Number(e):typeof e==`number`?e:NaN;return Number.isInteger(n)&&n>0?n:t}function t(e,t){return`cxxfds.list.${e}.${t}`}function n(e,t){if(!(!e||typeof sessionStorage>`u`))try{sessionStorage.setItem(e,JSON.stringify({page:t.page,perPage:t.perPage}))}catch{}}function r(t){if(!t||typeof sessionStorage>`u`)return null;try{let n=sessionStorage.getItem(t);if(!n)return null;let r=JSON.parse(n);return{page:e(r.page,1),perPage:e(r.perPage,15)}}catch{return null}}function i(e,t=15){let n={};return e.page>1&&(n.page=String(e.page)),e.perPage!==t&&(n.per_page=String(e.perPage)),n}function a(t,n,i={page:1,perPage:15}){let a=e(n.page,0),o=e(n.per_page,0);return a>0?{page:a,perPage:o>0?o:i.perPage}:r(t)||{...i}}export{a,e as i,i as n,n as o,r,t}; \ No newline at end of file diff --git a/public/admin/assets/publicSourceChannels-CrEd0c_S.js b/public/admin/assets/publicSourceChannels-Xl9QwIAR.js similarity index 82% rename from public/admin/assets/publicSourceChannels-CrEd0c_S.js rename to public/admin/assets/publicSourceChannels-Xl9QwIAR.js index e1ac00f..f35bdef 100644 --- a/public/admin/assets/publicSourceChannels-CrEd0c_S.js +++ b/public/admin/assets/publicSourceChannels-Xl9QwIAR.js @@ -1 +1 @@ -import{i as e}from"./index-BCZX_WPn.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-BFG9yM8q.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-DWlgqvdP.js b/public/admin/assets/signupChannels-C2k0F3i5.js similarity index 85% rename from public/admin/assets/signupChannels-DWlgqvdP.js rename to public/admin/assets/signupChannels-C2k0F3i5.js index 996ddb8..ea7c632 100644 --- a/public/admin/assets/signupChannels-DWlgqvdP.js +++ b/public/admin/assets/signupChannels-C2k0F3i5.js @@ -1 +1 @@ -import{i as e}from"./index-BCZX_WPn.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-BFG9yM8q.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 4146f6b..484cd96 100644 --- a/public/admin/index.html +++ b/public/admin/index.html @@ -5,7 +5,7 @@ 江苏创青春新消费大赛报名系统 - cxxfds-web - +