import{$t as e,D as t,O as n,P as r,S as i,T as a,W as o,Y as s,_ as c,_t as l,at as u,h as d,in as f,k as ee,q as p,w as m,x as h}from"./vue.runtime.esm-bundler-CACvpnko.js";import{A as te,M as ne,j as re,k as g}from"./api-Dpfxb1ca.js";import{T as _,f as ie,h as v,p as ae}from"./index-D5exsJys.js";import{t as y}from"./_plugin-vue_export-helper-CXTkFu_Z.js";import{r as oe,t as se}from"./downloadFeedback-HV11t-9m.js";import{t as ce}from"./ApplicationSignupDetailFields-B8RH3hVY.js";import{i as le,t as ue}from"./listPageState-BzwZpEQc.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`],Te={key:1,class:`form-control-plaintext border rounded px-3 py-2 mb-0 bg-light small text-secondary`},Ee={class:`col-12`},De={class:`form-control-plaintext border rounded px-3 py-2 mb-0 bg-light small text-secondary`},Oe={class:`text-secondary ms-2`},b={class:`col-12 pt-3 mt-2 border-top d-flex flex-wrap gap-2 align-items-center reviewer-score-action-bar`},x=[`disabled`],S={key:0,class:`small text-danger`},C={key:1,class:`small text-secondary`},w={id:`reviewerPledgeModal`,class:`modal fade`,tabindex:`-1`,"aria-labelledby":`reviewerPledgeDocHeading`,"aria-hidden":`true`},T={class:`modal-dialog modal-dialog-centered modal-dialog-scrollable reviewer-detail-modal reviewer-detail-modal--pledge`},ke={class:`modal-content promise-sign-sheet`},Ae={class:`modal-body pt-2`},je={key:0,class:`promise-doc-paper`},Me={id:`reviewerPledgeDocHeading`,class:`promise-doc-heading text-center`},Ne={class:`promise-doc-scroll`},Pe=[`innerHTML`],Fe={key:1,class:`promise-doc-body promise-doc-body--rich`},Ie={key:0,class:`promise-doc-signblock`},Le={class:`reviewer-pledge-sig-row`},Re=[`src`],ze={key:1,class:`small text-secondary`},Be={class:`promise-doc-daterow`},Ve={class:`promise-doc-dateline`},He={id:`reviewerScoreModal`,class:`modal fade`,tabindex:`-1`,"aria-labelledby":`reviewerScoreModalLabel`,"aria-hidden":`true`},Ue={class:`modal-dialog modal-dialog-centered modal-dialog-scrollable reviewer-detail-modal reviewer-detail-modal--score`},We={class:`modal-content`},Ge={class:`modal-header scoring-modal-header`},Ke={id:`reviewerScoreModalLabel`,class:`modal-title scoring-modal-title w-100 text-center`},qe={class:`modal-body`},Je={key:0,class:`small text-danger mb-2 text-center`,role:`alert`},Ye={class:`table-responsive scoring-sheet-wrap`},Xe={class:`table table-bordered align-middle mb-0 scoring-sheet-table`},Ze={class:`text-center text-secondary`},Qe=[`rowspan`],$e={class:`text-center fw-semibold scoring-indicator`},et={class:`small text-secondary scoring-criteria`},tt={class:`text-center`},nt={class:`scoring-score-cell`},rt=[`aria-label`,`value`,`onInput`,`onBlur`],it={key:0,class:`invalid-feedback d-block`},at={class:`scoring-total-block`},ot={class:`scoring-total-row-inner`},st={class:`scoring-total-value`},ct={class:`scoring-total-full small text-secondary`},lt={key:0,class:`invalid-feedback d-block`},ut={class:`modal-footer flex-wrap gap-2`},dt=[`disabled`],ft=100,E=2,D=y(ee({__name:`ReviewerApplicationDetailView`,setup(ee){let y=ie(),D=ae(),O=h(()=>String(y.params.slug??``).trim()),k=h(()=>String(y.params.id??``).trim()),pt=r(`reviewerCompetitionName`,l(``)),mt=h(()=>{let e=pt.value.trim();return e?`${e} 赛事承诺书`:`赛事承诺书`});function ht(e){let t=(e??``).trim();if(!t)return`—`;let n=t.match(/^(\d{4})-(\d{1,2})-(\d{1,2})/);if(n)return`${parseInt(n[1],10)}年${parseInt(n[2],10)}月${parseInt(n[3],10)}日`;let r=new Date(t.includes(` `)?t.replace(/-/g,`/`):t);return Number.isNaN(r.getTime())?t:`${r.getFullYear()}年${r.getMonth()+1}月${r.getDate()}日`}let A=l(null),j=l(!1),M=l(``),N=h(()=>ht(A.value?.promise_signed_at)),P=l({}),F=l({}),I=l(!1),L=l(!1),gt=h(()=>Number(A.value?.scoring_sheet?.full_score??100)||100),R=h(()=>A.value?.scoring_sheet?.items??[]);function z(e){return e.replace(/\.?0+$/,``)}function B(e){return z(Number(e).toFixed(E))}function _t(e){return/\.\d{3,}/.test(e)}function vt(e){let t=(e==null?``:String(e)).replace(/[^\d.]/g,``);t=t.replace(/(\..*)\./g,`$1`);let n=t.indexOf(`.`);return n>=0&&(t=t.slice(0,n+1)+t.slice(n+1).replace(/\./g,``).slice(0,E)),t}function yt(e,t){P.value={...P.value,[e]:vt(t)}}function V(){let e={};for(let t of R.value)e[t.key]=``;let t=A.value?.my_review_score?.payload_json?.scores;if(t&&typeof t==`object`&&!Array.isArray(t)){let n=t;for(let t of R.value){let r=n[t.key];if(r==null||String(r).trim()===``)continue;let i=Number(r);e[t.key]=Number.isFinite(i)?z(i.toFixed(E)):``}}P.value=e,F.value={},L.value=!1}u(A,()=>V(),{deep:!0});let bt=h(()=>{let e=R.value,t=[],n=0;for(;nNumber(e.max_score)?`不能高于该项分值 ${B(e.max_score)}`:null:`须为数字`}let U=h(()=>{if(!R.value.length)return null;let e=0;for(let t of R.value){let n=String(P.value[t.key]??``).trim();if(n===``||H(t))return null;let r=Number(n);if(!Number.isFinite(r))return null;e+=r}return Math.round(e*100)/100});function W(){if(!R.value.length)return null;if(R.value.some(e=>String(P.value[e.key]??``).trim()===``||H(e)!==null))return L.value?`请为每一项填写有效得分`:null;let e=U.value;return e==null?L.value?`请为每一项填写有效得分`:null:e<0?`项目总分不能小于 0`:e>ft?`项目总分不能大于 100`:null}let G=h(()=>!A.value?.scoring_allowed||!R.value.length||U.value==null?!1:R.value.every(e=>H(e)===null)&&W()===null),K=h(()=>{if(!R.value.length)return``;let e=R.value.map(e=>H(e)).find(e=>e);if(e&&(L.value||Object.values(F.value).some(Boolean)))return e;let t=W();return t&&L.value?t:``}),xt=h(()=>{let e=A.value;return e?`项目编号:${e.project_code} · ${e.score_display}`:``}),q=h(()=>A.value?.files.find(e=>e.kind===`plan`)??null),J=h(()=>A.value?.files.filter(e=>e.kind===`supporting`)??[]),Y=h(()=>{let e=A.value?.promise_signature;if(e==null||typeof e!=`string`)return``;let t=e.trim();return t===``?``:t.startsWith(`data:`)?t:`data:image/png;base64,${t}`});async function X(){let e=k.value,t=O.value,{token:n}=g();if(!/^\d+$/.test(e)||!t||!n){M.value=`参数无效或未登录`,A.value=null;return}j.value=!0,M.value=``;try{let r=te(parseInt(e,10),t),i=await fetch(r,{headers:{Authorization:`Bearer ${n}`,Accept:`application/json`}});if(!i.ok){let e=await i.json().catch(()=>({}));M.value=(typeof e==`object`&&e&&`message`in e?String(e.message??``):``)||`加载失败(${i.status})`,A.value=null;return}A.value=(await i.json()).data??null}catch{M.value=`网络错误`,A.value=null}finally{j.value=!1}}u([k,O],()=>void X()),o(()=>void X());function St(){let e=O.value;if(!e){D.push(`/c`);return}D.push({name:`reviewer-projects`,params:{slug:e},query:le(ue(`reviewer-projects`,e),y.query)})}let Z=l(null);async function Q(e){if(Z.value!=null){v.warning(`附件正在下载中,请勿重复点击`);return}let t=k.value,n=O.value,{token:r}=g();if(!/^\d+$/.test(t)||!n||!r){v.warning(`未登录或参数无效`);return}let i=e.original_name?.trim()||`附件`,a=se(i,e.size);if(!a)return;Z.value=e.id;let o=re(parseInt(t,10),e.id,n);try{let e=await fetch(o,{headers:{Authorization:`Bearer ${r}`,Accept:`application/json,*/*`}});if(!e.ok){let t=`下载附件失败`;try{let n=await e.json();typeof n.message==`string`&&n.message.trim()&&(t=n.message.trim())}catch{}v.error(t);return}a.setText(`正在保存「${i}」…`);let t=await e.blob(),n=URL.createObjectURL(t),s=document.createElement(`a`);s.href=n,s.download=i===`附件`?`download`:i,s.rel=`noopener`,document.body.appendChild(s),s.click(),s.remove(),URL.revokeObjectURL(n),oe()}catch{v.error(`网络错误,无法下载`)}finally{a.close(),Z.value=null}}function Ct(){let e={};for(let t of R.value)e[t.key]=Number(String(P.value[t.key]??``).trim());return{scores:e}}function $(){typeof document>`u`||(document.querySelectorAll(`.modal-backdrop`).forEach(e=>e.remove()),document.body.classList.remove(`modal-open`),document.body.style.removeProperty(`overflow`),document.body.style.removeProperty(`padding-right`))}function wt(){return new Promise(e=>{if(typeof document>`u`){e();return}let t=document.getElementById(`reviewerScoreModal`);if(!t){$(),e();return}let n=!1,r=()=>{n||(n=!0,t.removeEventListener(`hidden.bs.modal`,i),$(),e())},i=()=>r();t.addEventListener(`hidden.bs.modal`,i),(_.getInstance(t)??_.getOrCreateInstance(t)).hide(),window.setTimeout(r,450)})}function Tt(){if(!A.value?.scoring_allowed){v.warning(A.value?.scoring_blocked_reason||`该赛道未配置打分表,暂不可评审`);return}if(L.value=!1,$(),typeof document>`u`)return;let e=document.getElementById(`reviewerScoreModal`);e&&_.getOrCreateInstance(e).show()}async function Et(){let e=k.value,t=O.value,{token:n}=g();if(!/^\d+$/.test(e)||!t||!n){v.warning(`未登录或参数无效`);return}if(!A.value?.scoring_allowed||!R.value.length){v.warning(A.value?.scoring_blocked_reason||`该赛道未配置打分表,暂不可评审`);return}if(!G.value){L.value=!0,v.warning(W()||`请为每一项填写 0~该项分值的得分`);return}I.value=!0;try{let r=Ct(),i=ne(parseInt(e,10)),a=await fetch(i,{method:`POST`,headers:{Authorization:`Bearer ${n}`,Accept:`application/json`,"Content-Type":`application/json`},body:JSON.stringify({competition_slug:t,payload:r})}),o=await a.json().catch(()=>({}));if(!a.ok){let e=o,t=e.errors?.payload?.[0],n=typeof t==`string`&&t?t:typeof e.message==`string`?e.message:`提交失败(${a.status})`;v.error(n);return}await wt();let s=o.data;A.value&&s&&(s.my_review_score!==void 0&&(A.value.my_review_score=s.my_review_score),typeof s.score_display==`string`&&(A.value.score_display=s.score_display),typeof s.score_is_pending==`boolean`&&(A.value.score_is_pending=s.score_is_pending)),V(),v.success(typeof o.message==`string`?String(o.message):`提交成功`)}catch{v.error(`网络错误,提交失败`)}finally{I.value=!1}}return(r,o)=>(p(),a(`div`,de,[i(`div`,fe,[o[1]||=i(`h5`,{class:`mb-0 section-title`},`项目详情`,-1),i(`div`,pe,[A.value?(p(),a(`span`,{key:0,class:e([`status-pill`,A.value.score_is_pending?`status-pending`:`status-pass`])},f(xt.value),3)):m(``,!0),i(`button`,{type:`button`,class:`btn btn-sm btn-outline-secondary event-back-btn`,onClick:St},` 返回列表 `)])]),M.value?(p(),a(`p`,me,f(M.value),1)):j.value?(p(),a(`p`,he,`加载中…`)):A.value?(p(),a(`div`,ge,[i(`div`,_e,[n(ce,{detail:A.value,"show-recommend":!1},null,8,[`detail`]),i(`div`,ve,[i(`div`,ye,[o[2]||=i(`label`,{class:`form-label`},`商业计划书`,-1),q.value?(p(),a(`p`,be,[i(`a`,{role:`button`,href:`#`,class:e([`text-danger text-decoration-none`,{"pe-none opacity-75":Z.value!=null}]),onClick:o[0]||=d(e=>Q(q.value),[`prevent`])},f(Z.value===q.value.id?`下载中… ${q.value.original_name}`:q.value.original_name),3)])):(p(),a(`p`,xe,`—`))]),i(`div`,Se,[o[3]||=i(`label`,{class:`form-label`},`其他佐证材料`,-1),J.value.length?(p(),a(`ul`,Ce,[(p(!0),a(c,null,s(J.value,t=>(p(),a(`li`,{key:t.id},[i(`a`,{role:`button`,href:`#`,class:e([`text-danger text-decoration-none`,{"pe-none opacity-75":Z.value!=null}]),onClick:d(e=>Q(t),[`prevent`])},f(Z.value===t.id?`下载中… ${t.original_name}`:t.original_name),11,we)]))),128))])):(p(),a(`p`,Te,`—`))]),i(`div`,Ee,[o[5]||=i(`label`,{class:`form-label`},`参赛承诺书`,-1),i(`p`,De,[A.value.promise_signed?(p(),a(c,{key:0},[o[4]||=i(`button`,{type:`button`,class:`btn btn-link btn-sm p-0 align-baseline text-danger`,"data-bs-toggle":`modal`,"data-bs-target":`#reviewerPledgeModal`},` 已签署 · 查看承诺书与签名 `,-1),i(`span`,Oe,`日期:`+f(N.value),1)],64)):(p(),a(c,{key:1},[t(`未签署`)],64))])]),i(`div`,b,[i(`button`,{type:`button`,class:`btn btn-primary px-4`,style:{"background-color":`var(--primary, #109bd3)`,"border-color":`var(--primary, #109bd3)`},disabled:!A.value.scoring_allowed,onClick:Tt},f(A.value.score_is_pending?`项目评分`:`修改项目评分`),9,x),A.value.scoring_allowed?A.value.my_review_score?(p(),a(`span`,C,`最近保存:`+f(A.value.my_review_score.updated_at)+` · 项目得分 `+f(z(Number(A.value.my_review_score.line_total).toFixed(2)))+` 分`,1)):m(``,!0):(p(),a(`span`,S,f(A.value.scoring_blocked_reason||`该赛道未配置打分表,暂不可评审`),1))])])])])):m(``,!0),i(`div`,w,[i(`div`,T,[i(`div`,ke,[i(`div`,Ae,[A.value?(p(),a(`div`,je,[i(`h1`,Me,f(mt.value),1),i(`div`,Ne,[A.value.pledge_content_html?.trim()?(p(),a(`div`,{key:0,class:`promise-doc-body promise-doc-body--rich`,innerHTML:A.value.pledge_content_html},null,8,Pe)):(p(),a(`div`,Fe,[...o[6]||=[i(`p`,{class:`text-secondary mb-0`},`本场赛事未配置承诺书正文(可在管理端赛事中心维护)。`,-1)]]))]),A.value.promise_signed?(p(),a(`div`,Ie,[i(`div`,Le,[o[7]||=i(`span`,{class:`promise-doc-signlabel`},`参赛人签名:`,-1),Y.value?(p(),a(`img`,{key:0,src:Y.value,alt:``,class:`reviewer-promise-sig-img`,loading:`lazy`},null,8,Re)):(p(),a(`span`,ze,`暂无`))]),i(`div`,Be,[i(`span`,Ve,[o[8]||=t(`日期:`,-1),i(`strong`,null,f(N.value),1)])])])):m(``,!0)])):m(``,!0),o[9]||=i(`div`,{class:`promise-sign-actions`},[i(`button`,{type:`button`,class:`btn btn-light notice-cancel-btn`,"data-bs-dismiss":`modal`},`关闭`)],-1)])])])]),i(`div`,He,[i(`div`,Ue,[i(`div`,We,[i(`div`,Ge,[i(`h5`,Ke,f(A.value?.scoring_sheet?.title||`项目评分`),1),o[10]||=i(`button`,{type:`button`,class:`btn-close scoring-modal-close`,"data-bs-dismiss":`modal`,"aria-label":`关闭`},null,-1)]),i(`div`,qe,[o[14]||=i(`p`,{class:`small text-secondary mb-2 text-center scoring-modal-hint`},` 请为每一项打分(0~该项分值,最多两位小数)。项目总分为各项得分之和,无需填写。 `,-1),K.value?(p(),a(`p`,Je,f(K.value),1)):m(``,!0),i(`div`,Ye,[i(`table`,Xe,[o[11]||=i(`colgroup`,null,[i(`col`,{class:`col-seq`}),i(`col`,{class:`col-category`}),i(`col`,{class:`col-indicator`}),i(`col`,{class:`col-criteria`}),i(`col`,{class:`col-max`}),i(`col`,{class:`col-score`})],-1),o[12]||=i(`thead`,null,[i(`tr`,null,[i(`th`,{class:`text-nowrap text-center`},`序号`),i(`th`,{class:`text-nowrap text-center`},`指标分类`),i(`th`,{class:`text-nowrap text-center`},`评审指标`),i(`th`,{class:`text-center`},`核心评审要素(评委打分依据)`),i(`th`,{class:`text-nowrap text-center`},`分值`),i(`th`,{class:`text-nowrap text-center`},`得分`)])],-1),i(`tbody`,null,[(p(!0),a(c,null,s(bt.value,t=>(p(),a(`tr`,{key:t.item.key},[i(`td`,Ze,f(t.item.sort||t.idx+1),1),t.categoryRowspan>0?(p(),a(`td`,{key:0,rowspan:t.categoryRowspan,class:`text-center scoring-category`},f(t.item.category),9,Qe)):m(``,!0),i(`td`,$e,f(t.item.title),1),i(`td`,et,f(t.item.criteria||`—`),1),i(`td`,tt,f(B(t.item.max_score)),1),i(`td`,nt,[i(`input`,{class:e([`form-control form-control-sm text-center scoring-item-input`,{"is-invalid":!!H(t.item)}]),type:`text`,inputmode:`decimal`,autocomplete:`off`,"aria-label":`${t.item.title}得分`,value:P.value[t.item.key]??``,onInput:e=>yt(t.item.key,e.target.value),onBlur:e=>F.value={...F.value,[t.item.key]:!0}},null,42,rt),H(t.item)?(p(),a(`div`,it,f(H(t.item)),1)):m(``,!0)])]))),128))])])]),i(`div`,at,[i(`div`,ot,[o[13]||=i(`span`,{class:`form-label mb-0 fw-semibold`},`项目总分`,-1),i(`strong`,st,f(U.value==null?`—`:z(U.value.toFixed(2))),1),i(`span`,ct,`满分 `+f(B(gt.value)),1)]),W()?(p(),a(`div`,lt,f(W()),1)):m(``,!0)])]),i(`div`,ut,[o[15]||=i(`button`,{type:`button`,class:`btn btn-secondary`,"data-bs-dismiss":`modal`},`取消`,-1),i(`button`,{type:`button`,class:`btn btn-primary`,style:{"background-color":`var(--primary, #109bd3)`,"border-color":`var(--primary, #109bd3)`},disabled:I.value,onClick:Et},f(I.value?`提交中…`:`确认提交`),9,dt)])])])])]))}}),[[`__scopeId`,`data-v-b09794b3`]]);export{D as default};