You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1 line
14 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

import{$t as e,C as t,D as n,P as r,W as i,Y as a,_t as o,at as s,b as c,ct as l,d as u,g as d,in as f,k as ee,m as p,q as m,w as h,x as g}from"./vue.runtime.esm-bundler-6_koQ1g6.js";import{_,b as te,v as ne,y as re}from"./api-CH6mod_b.js";import{A as ie,C as ae,E as v,w as oe}from"./index-D8PaKRyd.js";import{t as y}from"./_plugin-vue_export-helper-S3RvzygF.js";var se={class:`container-fluid p-3 p-md-4 reviewer-detail-inner d-flex flex-column flex-grow-1`},ce={class:`d-flex justify-content-between align-items-center flex-wrap gap-2 mb-3`},le={class:`d-flex align-items-center gap-2 flex-wrap`},ue={key:0,class:`alert alert-warning py-2 small`,role:`alert`},de={key:1,class:`small text-secondary`},fe={key:2,class:`card mb-0 border-0 shadow-sm flex-grow-1 d-flex flex-column`},pe={class:`card-body d-flex flex-column flex-grow-1`},me={class:`row g-3`},he={class:`col-md-4`},ge=[`value`],b={class:`col-md-4`},x=[`value`],S={class:`col-md-4`},C=[`value`],w={class:`col-md-4`},T=[`value`],E={class:`col-md-4`},D=[`value`],O={class:`col-md-4`},k=[`value`],A={class:`col-md-4`},j=[`value`],M={class:`col-md-4`},N=[`value`],P={class:`col-md-4`},F=[`value`],I={class:`col-md-4`},L=[`value`],_e={class:`col-md-4`},ve=[`value`],ye={key:0,class:`col-md-4`},be=[`value`],xe={class:`col-12`},Se=[`value`],Ce={class:`col-12`},we={key:0,class:`form-control-plaintext border rounded px-3 py-2 mb-0 bg-light small text-secondary`},Te={key:1,class:`form-control-plaintext border rounded px-3 py-2 mb-0 bg-light small text-secondary`},Ee={key:1,class:`col-12`},De={class:`list-unstyled mb-0 border rounded px-3 py-2 bg-light small`},Oe=[`onClick`],ke={class:`col-12`},Ae={class:`form-control-plaintext border rounded px-3 py-2 mb-0 bg-light small text-secondary`},je={class:`text-secondary ms-2`},Me={class:`col-12 mt-auto pt-3 border-top d-flex flex-wrap gap-2 align-items-center`},Ne={type:`button`,class:`btn btn-primary px-4`,style:{"background-color":`var(--primary, #b40010)`,"border-color":`var(--primary, #b40010)`},"data-bs-toggle":`modal`,"data-bs-target":`#reviewerScoreModal`},Pe={key:0,class:`small text-secondary`},Fe={id:`reviewerPledgeModal`,class:`modal fade`,tabindex:`-1`,"aria-labelledby":`reviewerPledgeDocHeading`,"aria-hidden":`true`},Ie={class:`modal-dialog modal-dialog-centered modal-dialog-scrollable reviewer-detail-modal reviewer-detail-modal--pledge`},Le={class:`modal-content promise-sign-sheet`},Re={class:`modal-body pt-2`},R={key:0,class:`promise-doc-paper`},ze={id:`reviewerPledgeDocHeading`,class:`promise-doc-heading text-center`},Be={class:`promise-doc-scroll`},Ve=[`innerHTML`],He={key:1,class:`promise-doc-body promise-doc-body--rich`},Ue={key:0,class:`promise-doc-signblock`},We={class:`reviewer-pledge-sig-row`},Ge=[`src`],Ke={key:1,class:`small text-secondary`},qe={class:`promise-doc-daterow`},Je={class:`promise-doc-dateline`},Ye={id:`reviewerScoreModal`,class:`modal fade`,tabindex:`-1`,"aria-labelledby":`reviewerScoreModalLabel`,"aria-hidden":`true`},Xe={class:`modal-dialog modal-dialog-centered modal-dialog-scrollable reviewer-detail-modal reviewer-detail-modal--score`},Ze={class:`modal-content`},Qe={class:`modal-body`},$e={key:0,class:`small text-secondary mb-3`},et={class:`form-label`},tt={key:0,class:`text-danger`},nt=[`onUpdate:modelValue`],rt=[`onUpdate:modelValue`],it=[`onUpdate:modelValue`],at={class:`modal-footer flex-wrap gap-2`},ot=[`disabled`],z=y(ee({__name:`ReviewerApplicationDetailView`,setup(ee){let y=ae(),z=oe(),B=c(()=>String(y.params.slug??``).trim()),V=c(()=>String(y.params.id??``).trim()),st=r(`reviewerCompetitionName`,o(``)),ct=c(()=>{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 H=o(null),U=o(!1),W=o(``),G=c(()=>lt(H.value?.promise_signed_at)),K=o({}),q=o(!1);function J(){let e=H.value;if(!e?.review_schema?.schema_json?.length){K.value={};return}let t=e.my_review_score?.payload_json??{},n={};for(let r of e.review_schema.schema_json){let e=t[r.key];r.type===`number`?typeof e==`number`&&Number.isFinite(e)?n[r.key]=String(e):typeof e==`string`&&e.trim()!==``?n[r.key]=e.trim():n[r.key]=``:n[r.key]=typeof e==`string`?e:e==null?``:String(e)}K.value=n}s(H,()=>J(),{deep:!0});function ut(e){return e.replace(/\.?0+$/,``)}let dt=c(()=>{let e=H.value;return e?`项目编号:${e.project_code} · ${e.score_display}`:``}),Y=c(()=>H.value?.files.find(e=>e.kind===`plan`)??null),X=c(()=>H.value?.files.filter(e=>e.kind===`supporting`)??[]),Z=c(()=>{let e=H.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=V.value,t=B.value,{token:n}=_();if(!/^\d+$/.test(e)||!t||!n){W.value=`参数无效或未登录`,H.value=null;return}U.value=!0,W.value=``;try{let r=ne(parseInt(e,10),t),i=await fetch(r,{headers:{Authorization:`Bearer ${n}`,Accept:`application/json`}});if(!i.ok){let e=await i.json().catch(()=>({}));W.value=(typeof e==`object`&&e&&`message`in e?String(e.message??``):``)||`加载失败(${i.status}`,H.value=null;return}H.value=(await i.json()).data??null}catch{W.value=`网络错误`,H.value=null}finally{U.value=!1}}s([V,B],()=>void Q()),i(()=>void Q());function ft(){let e=B.value;e?z.push({name:`reviewer-projects`,params:{slug:e}}):z.push(`/c`)}async function $(e){let t=V.value,n=B.value,{token:r}=_();if(!/^\d+$/.test(t)||!n||!r){v.warning(`未登录或参数无效`);return}let i=re(parseInt(t,10),e.id,n);try{let t=await fetch(i,{headers:{Authorization:`Bearer ${r}`,Accept:`*/*`}});if(!t.ok){v.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{v.error(`网络错误,无法下载`)}}function pt(){let e=H.value?.review_schema?.schema_json;if(!e?.length)return{};let t={};for(let n of e){let e=K.value[n.key]??``;if(n.type===`number`){let r=String(e).trim();if(r===``)n.required&&(t[n.key]=``);else{let e=Number(r);t[n.key]=Number.isFinite(e)?e:0}}else t[n.key]=String(e)}return t}function mt(){if(typeof document>`u`)return;let e=document.getElementById(`reviewerScoreModal`);e&&ie.getOrCreateInstance(e).hide()}async function ht(){let e=V.value,t=B.value,{token:n}=_();if(!/^\d+$/.test(e)||!t||!n){v.warning(`未登录或参数无效`);return}if(!H.value?.review_schema?.schema_json?.length){v.warning(`未加载评审表单`);return}q.value=!0;try{let r=pt(),i=te(parseInt(e,10)),a=await fetch(i,{method:`POST`,headers:{Authorization:`Bearer ${n}`,Accept:`application/json`,"Content-Type":`application/json`},body:JSON.stringify({competition_slug:t,payload:r})}),o=await a.json().catch(()=>({}));if(!a.ok){let e=o,t=e.errors?.payload?.[0],n=typeof t==`string`&&t?t:typeof e.message==`string`?e.message:`提交失败(${a.status}`;v.error(n);return}let s=o.data;H.value&&s&&(s.my_review_score!==void 0&&(H.value.my_review_score=s.my_review_score),typeof s.score_display==`string`&&(H.value.score_display=s.score_display),typeof s.score_is_pending==`boolean`&&(H.value.score_is_pending=s.score_is_pending)),J(),v.success(typeof o.message==`string`?String(o.message):`提交成功`),mt()}catch{v.error(`网络错误,提交失败`)}finally{q.value=!1}}return(r,i)=>(m(),h(`div`,se,[g(`div`,ce,[i[1]||=g(`h5`,{class:`mb-0 section-title`},`项目详情`,-1),g(`div`,le,[H.value?(m(),h(`span`,{key:0,class:e([`status-pill`,H.value.score_is_pending?`status-pending`:`status-pass`])},f(dt.value),3)):t(``,!0),g(`button`,{type:`button`,class:`btn btn-sm btn-outline-secondary event-back-btn`,onClick:ft},` 返回列表 `)])]),W.value?(m(),h(`p`,ue,f(W.value),1)):U.value?(m(),h(`p`,de,`加载中…`)):H.value?(m(),h(`div`,fe,[g(`div`,pe,[g(`div`,me,[g(`div`,he,[i[2]||=g(`label`,{class:`form-label`},`参赛人姓名`,-1),g(`input`,{class:`form-control`,type:`text`,value:H.value.player_name,disabled:``},null,8,ge)]),g(`div`,b,[i[3]||=g(`label`,{class:`form-label`},`毕业院校`,-1),g(`input`,{class:`form-control`,type:`text`,value:H.value.school,disabled:``},null,8,x)]),g(`div`,S,[i[4]||=g(`label`,{class:`form-label`},`最高学历`,-1),g(`input`,{class:`form-control`,type:`text`,value:H.value.degree,disabled:``},null,8,C)]),g(`div`,w,[i[5]||=g(`label`,{class:`form-label`},`注册邮箱`,-1),g(`input`,{class:`form-control`,type:`text`,value:H.value.contact_email,disabled:``},null,8,T)]),g(`div`,E,[i[6]||=g(`label`,{class:`form-label`},`联系电话`,-1),g(`input`,{class:`form-control`,type:`text`,value:H.value.contact_mobile,disabled:``},null,8,D)]),g(`div`,O,[i[7]||=g(`label`,{class:`form-label`},`企业名称`,-1),g(`input`,{class:`form-control company-name-input`,type:`text`,placeholder:`如已注册企业,请填写`,value:H.value.company_name,disabled:``},null,8,k)]),g(`div`,A,[i[8]||=g(`label`,{class:`form-label`},`项目名称`,-1),g(`input`,{class:`form-control`,type:`text`,value:H.value.project_name,disabled:``},null,8,j)]),g(`div`,M,[i[9]||=g(`label`,{class:`form-label`},`主题赛道`,-1),g(`input`,{class:`form-control`,type:`text`,value:H.value.track_title||H.value.track_code,disabled:``},null,8,N)]),g(`div`,P,[i[10]||=g(`label`,{class:`form-label`},`项目所在地(国家/地区)`,-1),g(`input`,{class:`form-control`,type:`text`,value:H.value.location_country||``,disabled:``},null,8,F)]),g(`div`,I,[i[11]||=g(`label`,{class:`form-label`},`省份`,-1),g(`input`,{class:`form-control`,type:`text`,value:H.value.location_province||``,disabled:``},null,8,L)]),g(`div`,_e,[i[12]||=g(`label`,{class:`form-label`},`城市`,-1),g(`input`,{class:`form-control`,type:`text`,value:H.value.location_city||``,disabled:``},null,8,ve)]),H.value.oversea_country?(m(),h(`div`,ye,[i[13]||=g(`label`,{class:`form-label`},`海外国家/地区`,-1),g(`input`,{class:`form-control`,type:`text`,value:H.value.oversea_country,disabled:``},null,8,be)])):t(``,!0),g(`div`,xe,[i[14]||=g(`label`,{class:`form-label`},`项目简介`,-1),g(`textarea`,{class:`form-control`,rows:`4`,value:H.value.intro,disabled:``},null,8,Se)]),g(`div`,Ce,[i[15]||=g(`label`,{class:`form-label`},`商业计划书`,-1),Y.value?(m(),h(`p`,we,[g(`a`,{role:`button`,href:`#`,class:`text-danger text-decoration-none`,onClick:i[0]||=p(e=>$(Y.value),[`prevent`])},f(Y.value.original_name),1)])):(m(),h(`p`,Te,``))]),X.value.length?(m(),h(`div`,Ee,[i[16]||=g(`label`,{class:`form-label`},`其他佐证材料`,-1),g(`ul`,De,[(m(!0),h(d,null,a(X.value,e=>(m(),h(`li`,{key:e.id},[g(`a`,{role:`button`,href:`#`,class:`text-danger text-decoration-none`,onClick:p(t=>$(e),[`prevent`])},f(e.original_name),9,Oe)]))),128))])])):t(``,!0),g(`div`,ke,[i[18]||=g(`label`,{class:`form-label`},`参赛承诺书`,-1),g(`p`,Ae,[H.value.promise_signed?(m(),h(d,{key:0},[i[17]||=g(`button`,{type:`button`,class:`btn btn-link btn-sm p-0 align-baseline text-danger`,"data-bs-toggle":`modal`,"data-bs-target":`#reviewerPledgeModal`},` 已签署 · 查看承诺书与签名 `,-1),g(`span`,je,`日期:`+f(G.value),1)],64)):(m(),h(d,{key:1},[n(`未签署`)],64))])]),g(`div`,Me,[g(`button`,Ne,f(H.value.score_is_pending?`项目评分`:`修改项目评分`),1),H.value.my_review_score?(m(),h(`span`,Pe,`最近保存:`+f(H.value.my_review_score.updated_at)+` · 合计 `+f(ut(Number(H.value.my_review_score.line_total).toFixed(4)))+``,1)):t(``,!0)])])])])):t(``,!0),g(`div`,Fe,[g(`div`,Ie,[g(`div`,Le,[g(`div`,Re,[H.value?(m(),h(`div`,R,[g(`h1`,ze,f(ct.value),1),g(`div`,Be,[H.value.pledge_content_html?.trim()?(m(),h(`div`,{key:0,class:`promise-doc-body promise-doc-body--rich`,innerHTML:H.value.pledge_content_html},null,8,Ve)):(m(),h(`div`,He,[...i[19]||=[g(`p`,{class:`text-secondary mb-0`},`本场赛事未配置承诺书正文(可在管理端赛事中心维护)。`,-1)]]))]),H.value.promise_signed?(m(),h(`div`,Ue,[g(`div`,We,[i[20]||=g(`span`,{class:`promise-doc-signlabel`},`参赛人签名:`,-1),Z.value?(m(),h(`img`,{key:0,src:Z.value,alt:``,class:`reviewer-promise-sig-img`,loading:`lazy`},null,8,Ge)):(m(),h(`span`,Ke,`暂无`))]),g(`div`,qe,[g(`span`,Je,[i[21]||=n(`日期:`,-1),g(`strong`,null,f(G.value),1)])])])):t(``,!0)])):t(``,!0),i[22]||=g(`div`,{class:`promise-sign-actions`},[g(`button`,{type:`button`,class:`btn promise-close-btn`,"data-bs-dismiss":`modal`},`关闭`)],-1)])])])]),g(`div`,Ye,[g(`div`,Xe,[g(`div`,Ze,[i[24]||=g(`div`,{class:`modal-header`},[g(`h5`,{id:`reviewerScoreModalLabel`,class:`modal-title`},`项目评分`),g(`button`,{type:`button`,class:`btn-close`,"data-bs-dismiss":`modal`,"aria-label":`关闭`})],-1),g(`div`,Qe,[H.value?.review_schema?.is_default?(m(),h(`p`,$e,` 本场赛事未绑定自定义评审表,已使用系统默认维度。 `)):t(``,!0),(m(!0),h(d,null,a(H.value?.review_schema?.schema_json??[],e=>(m(),h(`div`,{key:e.key,class:`mb-3`},[g(`label`,et,[n(f(e.label)+` `,1),e.required?(m(),h(`span`,tt,`*`)):t(``,!0)]),e.type===`number`?l((m(),h(`input`,{key:0,"onUpdate:modelValue":t=>K.value[e.key]=t,class:`form-control`,type:`number`,step:`any`,autocomplete:`off`},null,8,nt)),[[u,K.value[e.key]]]):e.type===`text`?l((m(),h(`input`,{key:1,"onUpdate:modelValue":t=>K.value[e.key]=t,class:`form-control`,type:`text`,autocomplete:`off`},null,8,rt)),[[u,K.value[e.key]]]):l((m(),h(`textarea`,{key:2,"onUpdate:modelValue":t=>K.value[e.key]=t,class:`form-control`,rows:`4`},null,8,it)),[[u,K.value[e.key]]])]))),128))]),g(`div`,at,[i[23]||=g(`button`,{type:`button`,class:`btn btn-secondary`,"data-bs-dismiss":`modal`},`取消`,-1),g(`button`,{type:`button`,class:`btn btn-primary`,style:{"background-color":`var(--primary, #b40010)`,"border-color":`var(--primary, #b40010)`},disabled:q.value,onClick:ht},f(q.value?`提交中…`:`确认提交`),9,ot)])])])])]))}}),[[`__scopeId`,`data-v-c530d294`]]);export{z as default};