|
|
@@ -104,7 +104,9 @@
|
|
|
</div>
|
|
|
</div>
|
|
|
<div v-else class="hint-card top-level">
|
|
|
- <div class="hint-icon">🚀</div>
|
|
|
+ <div class="hint-icon">
|
|
|
+ <el-icon :size="28"><Aim /></el-icon>
|
|
|
+ </div>
|
|
|
<div class="hint-content">
|
|
|
<div class="hint-title">你是最高层级,制定公司级 OKR</div>
|
|
|
<div class="hint-desc">你的目标将决定下属的 OKR 方向。1个O + 3条KR,团队成员将基于此对齐。</div>
|
|
|
@@ -123,9 +125,9 @@
|
|
|
<div class="section-head">
|
|
|
<span class="section-badge personal">我的 OKR</span>
|
|
|
<span class="section-title">{{ myOkr.title }}</span>
|
|
|
- <el-tag type="success" size="large" effect="dark" round>🔒 已锁定</el-tag>
|
|
|
+ <el-tag type="success" size="large" effect="dark" round>已锁定</el-tag>
|
|
|
</div>
|
|
|
- <div class="rule-hint">⚠️ OKR 已锁定,仅可更新进度和标记阻塞,不可修改目标与关键结果。</div>
|
|
|
+ <div class="rule-hint">OKR 已锁定,仅可更新进度和标记阻塞,不可修改目标与关键结果。</div>
|
|
|
<div class="okr-card card-APPROVED" style="margin-top:12px">
|
|
|
<div v-for="(kr, i) in myOkr.keyResults" :key="kr.id" class="kr-progress-row">
|
|
|
<div class="kr-progress-head">
|
|
|
@@ -144,7 +146,7 @@
|
|
|
<el-button size="small" type="primary" @click="updateProgress(kr)" round :disabled="kr.status === 'COMPLETED'">更新</el-button>
|
|
|
</div>
|
|
|
<div v-if="kr.status === 'BLOCKED'" class="blocked-hint">
|
|
|
- ⚠️ 阻塞项,请说明原因与所需支持。上级已收到提醒。
|
|
|
+ 阻塞项,请说明原因与所需支持。上级已收到提醒。
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
@@ -179,8 +181,8 @@
|
|
|
<el-tag v-if="kr.assignedToName" size="small" effect="dark" type="warning" round>@{{ kr.assignedToName }}</el-tag>
|
|
|
</div>
|
|
|
<div class="review-actions">
|
|
|
- <el-button size="small" type="success" @click="doReview(o.id, true)" round>✅ 通过</el-button>
|
|
|
- <el-button size="small" type="danger" @click="doReview(o.id, false)" round>❌ 驳回</el-button>
|
|
|
+ <el-button size="small" type="success" @click="doReview(o.id, true)" round>通过</el-button>
|
|
|
+ <el-button size="small" type="danger" @click="doReview(o.id, false)" round>驳回</el-button>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
@@ -190,7 +192,7 @@
|
|
|
<!-- Create OKR Dialog -->
|
|
|
<el-dialog v-model="showForm" :title="editingOkr ? '编辑 OKR' : '制定个人 OKR'" width="720px" top="4vh" :close-on-click-modal="false">
|
|
|
<div class="dialog-rules">
|
|
|
- <div class="dr-item">🎯 <b>1个O(目标)</b>:定性方向,15-30字,不含数字指标,必须对齐上级方向</div>
|
|
|
+ <div class="dr-item"><b>1个O(目标)</b>:定性方向,15-30字,不含数字指标,必须对齐上级方向</div>
|
|
|
<div class="dr-item">📏 <b>2~5条KR</b>(推荐3条):可量化结果,10-25字,必须有验收标准</div>
|
|
|
<div class="dr-item">⚖️ <b>权重之和 = 100</b>:每条KR分配权重,总和必须为100</div>
|
|
|
</div>
|
|
|
@@ -256,7 +258,7 @@
|
|
|
|
|
|
<!-- O Input -->
|
|
|
<div class="o-section">
|
|
|
- <div class="o-label">🎯 目标 O <span class="o-hint">(定性方向,15-30字,不含数字)</span></div>
|
|
|
+ <div class="o-label">目标 O <span class="o-hint">(定性方向,15-30字,不含数字)</span></div>
|
|
|
<el-input v-model="newOkr.title" :placeholder="currentHints.oHint" size="large" maxlength="35" show-word-limit />
|
|
|
</div>
|
|
|
|
|
|
@@ -311,7 +313,7 @@
|
|
|
</div>
|
|
|
|
|
|
<div class="dialog-footer-hint">
|
|
|
- 💡 提交后由直属上级审核。审核通过后锁定,周期内不可修改。
|
|
|
+ 提交后由直属上级审核。审核通过后锁定,周期内不可修改。
|
|
|
</div>
|
|
|
|
|
|
<template #footer>
|
|
|
@@ -513,7 +515,7 @@ function initAlignment() {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
-const stateIcon = computed(() => ({ DRAFT: '📝', OKR_ALIGN: '🎯', EXECUTING: '▶️', ASSESSING: '✍️', ARCHIVED: '📦' }[period.value?.status] || ''))
|
|
|
+const stateIcon = computed(() => ({ DRAFT: '', OKR_ALIGN: '', EXECUTING: '', ASSESSING: '', ARCHIVED: '' }[period.value?.status] || ''))
|
|
|
const stateBanner = computed(() => ({
|
|
|
DRAFT: '本周期尚未发布。',
|
|
|
OKR_ALIGN: 'OKR 对齐阶段 — 自上而下:上级先制定,下级对齐后制定。1O+3KR,不可偏离上级方向。',
|