|
|
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}; |