|
@@ -72,12 +72,12 @@
|
|
|
|
|
|
|
|
<!-- Employee Self Assessment (mirrors right-side scoring structure) -->
|
|
<!-- Employee Self Assessment (mirrors right-side scoring structure) -->
|
|
|
<div class="panel-divider"></div>
|
|
<div class="panel-divider"></div>
|
|
|
- <div class="panel-head">📝 员工自评</div>
|
|
|
|
|
|
|
+ <div class="panel-head">员工自评</div>
|
|
|
<div v-if="!data.selfScore" class="panel-empty">员工尚未提交自评</div>
|
|
<div v-if="!data.selfScore" class="panel-empty">员工尚未提交自评</div>
|
|
|
<template v-else>
|
|
<template v-else>
|
|
|
<!-- 1. OKR self scores -->
|
|
<!-- 1. OKR self scores -->
|
|
|
<div class="self-block">
|
|
<div class="self-block">
|
|
|
- <div class="self-block-title">🎯 OKR 目标达成自评 <span class="sb-sub">(满分 {{ computedOkrMaxScore }})</span></div>
|
|
|
|
|
|
|
+ <div class="self-block-title">OKR 目标达成自评 <span class="sb-sub">(满分 {{ computedOkrMaxScore }})</span></div>
|
|
|
<div v-if="selfKrScores.length" class="self-kr-list">
|
|
<div v-if="selfKrScores.length" class="self-kr-list">
|
|
|
<div v-for="(sk, i) in selfKrScores" :key="i" class="self-kr-item">
|
|
<div v-for="(sk, i) in selfKrScores" :key="i" class="self-kr-item">
|
|
|
<span class="ski-num">KR{{ i+1 }}</span>
|
|
<span class="ski-num">KR{{ i+1 }}</span>
|
|
@@ -90,7 +90,7 @@
|
|
|
|
|
|
|
|
<!-- 2. Work result self scores -->
|
|
<!-- 2. Work result self scores -->
|
|
|
<div class="self-block">
|
|
<div class="self-block">
|
|
|
- <div class="self-block-title">📊 工作成果自评 <span class="sb-sub">(满分 40)</span></div>
|
|
|
|
|
|
|
+ <div class="self-block-title">工作成果自评 <span class="sb-sub">(满分 40)</span></div>
|
|
|
<div v-if="selfDimensions.length" class="self-dim-list">
|
|
<div v-if="selfDimensions.length" class="self-dim-list">
|
|
|
<div v-for="d in selfDimensions" :key="d.name" class="self-dim-item">
|
|
<div v-for="d in selfDimensions" :key="d.name" class="self-dim-item">
|
|
|
<div class="sdi-head">
|
|
<div class="sdi-head">
|
|
@@ -127,7 +127,7 @@
|
|
|
|
|
|
|
|
<!-- KR Scores -->
|
|
<!-- KR Scores -->
|
|
|
<div class="score-card">
|
|
<div class="score-card">
|
|
|
- <div class="sc-header">🎯 OKR 目标达成 <span class="sc-sub">逐条 KR 打分,满分 60</span></div>
|
|
|
|
|
|
|
+ <div class="sc-header">OKR 目标达成 <span class="sc-sub">逐条 KR 打分,满分 60</span></div>
|
|
|
<div class="kr-score-list">
|
|
<div class="kr-score-list">
|
|
|
<div v-for="(ks, i) in krScores" :key="i" class="kr-score-row">
|
|
<div v-for="(ks, i) in krScores" :key="i" class="kr-score-row">
|
|
|
<div class="ksr-label">
|
|
<div class="ksr-label">
|
|
@@ -154,7 +154,7 @@
|
|
|
|
|
|
|
|
<!-- Work Result (Dimensions) -->
|
|
<!-- Work Result (Dimensions) -->
|
|
|
<div class="score-card">
|
|
<div class="score-card">
|
|
|
- <div class="sc-header">📊 工作成果评价 <span class="sc-sub">满分 40</span></div>
|
|
|
|
|
|
|
+ <div class="sc-header">工作成果评价 <span class="sc-sub">满分 40</span></div>
|
|
|
<div v-for="(dim, i) in dimScores" :key="i" class="dim-row">
|
|
<div v-for="(dim, i) in dimScores" :key="i" class="dim-row">
|
|
|
<div class="dim-head">
|
|
<div class="dim-head">
|
|
|
<span class="dim-num">{{ i+1 }}</span>
|
|
<span class="dim-num">{{ i+1 }}</span>
|
|
@@ -416,7 +416,7 @@ function fmtTime(t) { if (!t) return ''; return t.slice(0, 16).replace('T', ' ')
|
|
|
|
|
|
|
|
.self-total-bar {
|
|
.self-total-bar {
|
|
|
margin-top: 12px; padding: 12px 16px;
|
|
margin-top: 12px; padding: 12px 16px;
|
|
|
- background: linear-gradient(135deg, #f5f3ff, #e8f5f5); border-radius: 10px;
|
|
|
|
|
|
|
+ background: #f4f2f9; border-radius: 10px;
|
|
|
text-align: center; font-size: 14px; color: #555;
|
|
text-align: center; font-size: 14px; color: #555;
|
|
|
border: 1px solid #dcd4f0;
|
|
border: 1px solid #dcd4f0;
|
|
|
}
|
|
}
|
|
@@ -453,14 +453,14 @@ function fmtTime(t) { if (!t) return ''; return t.slice(0, 16).replace('T', ' ')
|
|
|
.dim-score-unit { font-size: 13px; color: #999; margin-left: 6px; }
|
|
.dim-score-unit { font-size: 13px; color: #999; margin-left: 6px; }
|
|
|
|
|
|
|
|
.result-preview {
|
|
.result-preview {
|
|
|
- background: linear-gradient(135deg, #f5f3ff, #e8f5f5); border-radius: 12px;
|
|
|
|
|
|
|
+ background: #f4f2f9; border-radius: 12px;
|
|
|
padding: 20px; text-align: center; border: 1px solid #dcd4f0; margin-bottom: 16px;
|
|
padding: 20px; text-align: center; border: 1px solid #dcd4f0; margin-bottom: 16px;
|
|
|
}
|
|
}
|
|
|
.rp-formula { font-size: 12px; color: #888; }
|
|
.rp-formula { font-size: 12px; color: #888; }
|
|
|
.rp-score { font-size: 40px; font-weight: 700; color: #2b1f99; margin: 6px 0; line-height: 1; }
|
|
.rp-score { font-size: 40px; font-weight: 700; color: #2b1f99; margin: 6px 0; line-height: 1; }
|
|
|
.rp-score small { font-size: 18px; color: #999; font-weight: 400; }
|
|
.rp-score small { font-size: 18px; color: #999; font-weight: 400; }
|
|
|
.rp-grade { font-size: 14px; color: #666; }
|
|
.rp-grade { font-size: 14px; color: #666; }
|
|
|
-.submit-btn { width: 100%; background: linear-gradient(135deg, #3ad4d8, #2b1f99); border: none; height: 48px; font-size: 15px; }
|
|
|
|
|
|
|
+.submit-btn { width: 100%; background: #2b1f99; border: none; height: 48px; font-size: 15px; }
|
|
|
|
|
|
|
|
@media (max-width: 1100px) {
|
|
@media (max-width: 1100px) {
|
|
|
.same-screen { flex-direction: column; }
|
|
.same-screen { flex-direction: column; }
|