| 1 |
- import{periodApi as Z,scoreApi as M,dimensionApi as ee}from"./index-Dhl0yoWK.js";import{_ as se,j as le,o as n,c as i,a as s,t as o,b as r,w as V,f as oe,g as b,F as x,h as d,p as U,q as te,r as p,e as k,x as y,i as ae,y as z}from"./index-BwYZ2HSO.js";import{P as ne}from"./PeriodBanner-BKGr6OhG.js";const ie={class:"app-page result-workbench"},re={class:"page-hero"},de={class:"hero-info"},ue={key:1,class:"empty-state"},ce={class:"form-card"},ve={key:0,class:"kr-score-list"},me={class:"ksr-label"},pe={class:"ksr-num"},fe={class:"ksr-title"},_e={class:"ksr-progress"},be={class:"ksr-inputs"},ke={class:"ksr-eq"},ye={key:1,class:"no-okr-hint"},ge={class:"okr-subtotal"},Se={class:"form-card"},he={class:"dim-head"},Ve={class:"dim-num"},xe={class:"dim-name"},we={class:"dim-max"},Re={class:"dim-score-hint"},Ce={class:"okr-subtotal"},Ae={class:"form-card"},Ue={class:"bonus-row"},Fe={class:"result-preview"},Ne={class:"rp-formula"},Ie={class:"rp-score"},Ke={class:"rp-grade"},Me={class:"submit-row"},ze={key:3,class:"dashboard"},Be={key:0,class:"score-hero"},De={class:"grade-letter"},Oe={class:"score-main"},Ee={class:"score-number"},Te={class:"score-label"},qe={class:"score-meta"},Ge={class:"score-breakdown"},Je={class:"break-item"},Pe={class:"break-value"},$e={class:"break-item"},je={class:"break-value"},He={class:"break-item bonus"},Le={class:"break-value"},Qe={class:"break-item penalty"},We={class:"break-value"},Xe={key:1,class:"score-hero self-submitted"},Ye={class:"score-main"},Ze={class:"score-number"},es={key:2,class:"score-pending"},ss={key:3,class:"confirm-bar"},ls={class:"confirm-info"},os={class:"confirm-icon"},ts={key:4,class:"confirmed-bar"},as={key:5,class:"compare-row"},ns={class:"compare-card self"},is={class:"compare-score"},rs={class:"compare-card final"},ds={class:"compare-score"},us={class:"two-col"},cs={class:"col okr-col"},vs={class:"mini-o"},ms={class:"mini-val"},ps={class:"col feedback-col"},fs={key:0,class:"fb-content"},_s={key:0,class:"fb-block"},bs={class:"fb-text"},ks={key:1,class:"fb-block"},ys={class:"fb-text"},gs={key:2,class:"fb-block"},Ss={class:"fb-text"},hs={key:3,class:"fb-block"},Vs={class:"fb-text"},xs={key:1,class:"fb-empty"},ws={__name:"MyResultView",setup(Rs){const w=p([]),f=p(null),l=p({}),F=p(!1),N=p(!1),B=p([]),m=p([]),S=p([]),u=ae({bonus:0,penalty:0,remark:""}),g=y(()=>l.value.okrRecords||[]),$=y(()=>{var a;return((a=l.value.period)==null?void 0:a.status)==="ASSESSING"&&!l.value.selfScore}),j=y(()=>m.value.length?m.value.reduce((e,c)=>e+c.score,0)/m.value.length:0),R=y(()=>{var a;if(g.value.length&&((a=g.value[0].keyResults)!=null&&a.length)){const e=g.value[0].keyResults.length,c=m.value.reduce((_,I)=>_+I.score,0);return Math.round(c/e*60*10)/10}return 0}),C=y(()=>Math.round(S.value.reduce((a,e)=>a+(e.score||0),0)*10)/10),D=y(()=>Math.round((R.value+C.value+u.bonus-u.penalty)*10)/10),H=y(()=>{const a=D.value;return a>=90?"S":a>=75?"A":a>=60?"B":"C"});le(async()=>{w.value=await Z.list();const a=w.value.filter(e=>e.status!=="ARCHIVED");a.length&&(f.value=a[0].id,await A())});async function A(){var e;if(!f.value)return;l.value=await M.getMyResult(f.value),B.value=await ee.list(),S.value=B.value.map(c=>({id:c.id,name:c.name,maxScore:c.maxScore,score:0,description:""}));const a=l.value.okrRecords||[];a.length&&((e=a[0].keyResults)!=null&&e.length)?m.value=a[0].keyResults.map(c=>({title:c.title,score:.6})):m.value=[]}async function L(){if(S.value.some(a=>!a.description.trim())){z.warning("请为每个维度填写工作成果自述");return}N.value=!0;try{const a=S.value.map(e=>({dimensionId:e.id,name:e.name,maxScore:e.maxScore,score:e.score,description:e.description}));await M.submitSelf({periodId:f.value,okrScore:R.value,kpiScore:C.value,bonus:u.bonus,penalty:u.penalty,commentsJson:JSON.stringify({krScores:m.value,dimensions:a,remark:u.remark})}),z.success("自评已提交,等待上级终审"),await A()}finally{N.value=!1}}async function Q(){F.value=!0;try{await M.confirm({periodId:f.value}),z.success("绩效结果已确认,本轮流程结束"),await A()}finally{F.value=!1}}function W(a){return{S:"卓越产出 · 团队标杆",A:"超出预期 · 高质量完成",B:"符合预期 · 满足岗位要求",C:"未达预期 · 需整改辅导"}[a]||""}return(a,e)=>{var E,T,q,G,J,P;const c=k("el-button"),_=k("el-option"),I=k("el-select"),O=k("el-input"),K=k("el-input-number"),X=k("Check"),Y=k("el-icon");return n(),i("div",ie,[s("div",re,[s("div",de,[e[5]||(e[5]=s("h2",null,"我的绩效",-1)),s("p",null,o(l.value.period?l.value.period.name+" · "+l.value.period.startDate+" ~ "+l.value.period.endDate:"数据驱动,结果可追溯"),1)]),r(c,{onClick:e[0]||(e[0]=t=>a.$router.push("/scores/history")),round:""},{default:V(()=>[...e[6]||(e[6]=[d("历史记录",-1)])]),_:1})]),w.value.length?(n(),oe(ne,{key:0,periods:w.value,modelValue:f.value,"onUpdate:modelValue":[e[1]||(e[1]=t=>f.value=t),A]},null,8,["periods","modelValue"])):b("",!0),l.value.period?$.value?(n(),i(x,{key:2},[e[17]||(e[17]=s("div",{class:"form-banner"},"请完成绩效自评后提交,上级将在此基础进行终审",-1)),s("div",ce,[e[7]||(e[7]=s("div",{class:"form-section-title"},[d("OKR 目标达成自评 "),s("span",{class:"fst-sub"},"逐条 KR 打分(0.0-1.0),满分 60")],-1)),g.value.length?(n(),i("div",ve,[(n(!0),i(x,null,U(g.value[0].keyResults,(t,v)=>(n(),i("div",{key:t.id,class:"kr-score-row"},[s("div",me,[s("span",pe,"KR"+o(v+1),1),s("span",fe,o(t.title),1),s("span",_e,o(t.currentValue)+"/"+o(t.targetValue)+" ("+o(t.status)+")",1)]),s("div",be,[r(I,{modelValue:m.value[v].score,"onUpdate:modelValue":h=>m.value[v].score=h,size:"default",style:{width:"120px"}},{default:V(()=>[r(_,{label:"1.0 · 卓越",value:1}),r(_,{label:"0.8 · 良好",value:.8}),r(_,{label:"0.6 · 达标",value:.6}),r(_,{label:"0.3 · 少量推进",value:.3}),r(_,{label:"0.0 · 未做",value:0})]),_:1},8,["modelValue","onUpdate:modelValue"]),s("span",ke,"= "+o((m.value[v].score*60/g.value[0].keyResults.length).toFixed(1))+" 分",1)])]))),128))])):(n(),i("div",ye,"暂无 OKR 记录")),s("div",ge,[d(" OKR 得分 = 平均 "+o(j.value.toFixed(2))+" × 60 = ",1),s("strong",null,o(R.value.toFixed(1))+" / 60",1)])]),s("div",Se,[e[9]||(e[9]=s("div",{class:"form-section-title"},[d("工作成果自评 "),s("span",{class:"fst-sub"},"按维度自述 + 打分,满分 40")],-1)),(n(!0),i(x,null,U(S.value,(t,v)=>(n(),i("div",{key:v,class:"dim-row"},[s("div",he,[s("span",Ve,o(v+1),1),s("span",xe,o(t.name),1),s("span",we,"满分 "+o(t.maxScore)+" 分",1)]),r(O,{modelValue:t.description,"onUpdate:modelValue":h=>t.description=h,type:"textarea",rows:2,placeholder:"简述"+t.name+"方面的工作成果",style:{"margin-bottom":"6px"}},null,8,["modelValue","onUpdate:modelValue","placeholder"]),r(K,{modelValue:t.score,"onUpdate:modelValue":h=>t.score=h,min:0,max:t.maxScore,precision:1,size:"small","controls-position":"right",style:{width:"130px"}},null,8,["modelValue","onUpdate:modelValue","max"]),s("span",Re,"/ "+o(t.maxScore)+" 分",1)]))),128)),s("div",Ce,[e[8]||(e[8]=d(" 工作成果得分 = ",-1)),s("strong",null,o(C.value.toFixed(1))+" / 40",1)])]),s("div",Ae,[e[12]||(e[12]=s("div",{class:"form-section-title"},"专项加减分",-1)),s("div",Ue,[e[10]||(e[10]=s("span",{class:"bonus-label"},"加分(上限5)",-1)),r(K,{modelValue:u.bonus,"onUpdate:modelValue":e[2]||(e[2]=t=>u.bonus=t),min:0,max:5,precision:1,size:"large","controls-position":"right"},null,8,["modelValue"]),e[11]||(e[11]=s("span",{class:"bonus-label"},"扣分",-1)),r(K,{modelValue:u.penalty,"onUpdate:modelValue":e[3]||(e[3]=t=>u.penalty=t),min:0,precision:1,size:"large","controls-position":"right"},null,8,["modelValue"])]),r(O,{modelValue:u.remark,"onUpdate:modelValue":e[4]||(e[4]=t=>u.remark=t),type:"textarea",rows:2,placeholder:"加减分说明",style:{"margin-top":"8px"}},null,8,["modelValue"])]),s("div",Fe,[s("div",Ne,"OKR("+o(R.value.toFixed(1))+")+ 工作成果("+o(C.value.toFixed(1))+")+ 加分("+o(u.bonus)+")− 扣分("+o(u.penalty)+")",1),s("div",Ie,[d(o(D.value)+" ",1),e[13]||(e[13]=s("small",null,"/ 100",-1))]),s("div",Ke,[e[14]||(e[14]=d("自评评级 ",-1)),s("strong",null,o(H.value),1)])]),s("div",Me,[r(c,{type:"primary",size:"large",onClick:L,loading:N.value,round:""},{default:V(()=>[...e[15]||(e[15]=[d(" 提交自评 ",-1)])]),_:1},8,["loading"]),e[16]||(e[16]=s("span",{class:"submit-hint"},"提交后由直属上级审核终评",-1))])],64)):(n(),i("div",ze,[l.value.finalScore?(n(),i("div",Be,[s("div",{class:te(["grade-ring","grade-"+l.value.finalScore.grade])},[s("span",De,o(l.value.finalScore.grade),1)],2),s("div",Oe,[s("div",Ee,[d(o(l.value.finalScore.total),1),e[18]||(e[18]=s("small",null," / 100",-1))]),s("div",Te,o(W(l.value.finalScore.grade)),1),s("div",qe,o((E=l.value.period)==null?void 0:E.name)+" · "+o((T=l.value.period)==null?void 0:T.startDate)+" ~ "+o((q=l.value.period)==null?void 0:q.endDate),1)]),s("div",Ge,[s("div",Je,[e[20]||(e[20]=s("span",{class:"break-label"},"OKR 得分",-1)),s("span",Pe,[d(o(l.value.finalScore.okrScore),1),e[19]||(e[19]=s("small",null," × 0.6",-1))])]),s("div",$e,[e[22]||(e[22]=s("span",{class:"break-label"},"工作成果",-1)),s("span",je,[d(o(l.value.finalScore.kpiScore),1),e[21]||(e[21]=s("small",null," × 0.4",-1))])]),s("div",He,[e[23]||(e[23]=s("span",{class:"break-label"},"专项加分",-1)),s("span",Le,"+"+o(l.value.finalScore.bonus),1)]),s("div",Qe,[e[24]||(e[24]=s("span",{class:"break-label"},"专项扣分",-1)),s("span",We,"-"+o(l.value.finalScore.penalty),1)])])])):l.value.selfScore?(n(),i("div",Xe,[e[27]||(e[27]=s("div",{class:"pending-icon"},"📤",-1)),s("div",Ye,[s("div",Ze,[d(o(l.value.selfScore.total),1),e[25]||(e[25]=s("small",null," / 100",-1))]),e[26]||(e[26]=s("div",{class:"score-label"},"自评已提交,等待上级终审",-1))])])):(n(),i("div",es,[...e[28]||(e[28]=[s("div",{class:"pending-icon"},null,-1),s("div",{class:"pending-text"},"绩效考核尚未完成",-1)])])),l.value.finalScore&&!l.value.finalScore.confirmedAt?(n(),i("div",ss,[s("div",ls,[s("span",os,[r(Y,null,{default:V(()=>[r(X)]),_:1})]),e[29]||(e[29]=s("span",null,"你的绩效结果如上,请审阅无误后确认。确认后本轮考核流程结束。",-1))]),r(c,{type:"success",size:"large",onClick:Q,loading:F.value,round:""},{default:V(()=>[...e[30]||(e[30]=[d("确认绩效结果",-1)])]),_:1},8,["loading"])])):(G=l.value.finalScore)!=null&&G.confirmedAt?(n(),i("div",ts,[s("span",null,"已确认 · "+o((J=l.value.finalScore.confirmedAt)==null?void 0:J.slice(0,16)),1)])):b("",!0),l.value.selfScore&&l.value.finalScore?(n(),i("div",as,[s("div",ns,[e[32]||(e[32]=s("div",{class:"compare-label"},"自评",-1)),s("div",is,[d(o(l.value.selfScore.total),1),e[31]||(e[31]=s("small",null,"分",-1))])]),e[35]||(e[35]=s("div",{class:"compare-arrow"},"→",-1)),s("div",rs,[e[34]||(e[34]=s("div",{class:"compare-label"},"终审",-1)),s("div",ds,[d(o(l.value.finalScore.total),1),e[33]||(e[33]=s("small",null,"分",-1))])])])):b("",!0),s("div",us,[s("div",cs,[e[36]||(e[36]=s("div",{class:"col-head"},"当期 OKR 记录",-1)),(n(!0),i(x,null,U(l.value.okrRecords||[],t=>(n(),i("div",{key:t.id,class:"mini-okr"},[s("div",vs,o(t.title),1),(n(!0),i(x,null,U(t.keyResults,v=>(n(),i("div",{key:v.id,class:"mini-kr"},[s("span",null,o(v.title),1),s("span",ms,o(v.currentValue)+"/"+o(v.targetValue),1)]))),128))]))),128))]),s("div",ps,[e[41]||(e[41]=s("div",{class:"col-head"},"💬 面谈反馈",-1)),(P=l.value.feedback)!=null&&P.interviewNotes?(n(),i("div",fs,[l.value.feedback.highlights?(n(),i("div",_s,[e[37]||(e[37]=s("div",{class:"fb-label"},"亮点",-1)),s("div",bs,o(l.value.feedback.highlights),1)])):b("",!0),l.value.feedback.issues?(n(),i("div",ks,[e[38]||(e[38]=s("div",{class:"fb-label"},"待改进",-1)),s("div",ys,o(l.value.feedback.issues),1)])):b("",!0),l.value.feedback.improvements?(n(),i("div",gs,[e[39]||(e[39]=s("div",{class:"fb-label"},"改进建议",-1)),s("div",Ss,o(l.value.feedback.improvements),1)])):b("",!0),l.value.feedback.interviewNotes?(n(),i("div",hs,[e[40]||(e[40]=s("div",{class:"fb-label"},"面谈纪要",-1)),s("div",Vs,o(l.value.feedback.interviewNotes),1)])):b("",!0)])):(n(),i("div",xs,"暂无面谈记录"))])])])):(n(),i("div",ue,"暂无绩效数据,请选择周期"))])}}},Fs=se(ws,[["__scopeId","data-v-c3f4e383"]]);export{Fs as default};
|