433 lines
7.3 KiB
CSS
433 lines
7.3 KiB
CSS
/* 人员绩效视图(TeamKpiView)专属样式:仅消费 social-v2.css 的 token,类名前缀 sbi-kpi-。
|
||
金银铜名次徽标与图表网格色 #eef3f9 为本视图的功能色,其余颜色一律走 token。 */
|
||
|
||
.sbi-kpi-view {
|
||
display: flex;
|
||
flex-direction: column;
|
||
gap: 16px;
|
||
}
|
||
|
||
/* ---------- Hero:1 大卡(环形进度)+ 3 小卡 ---------- */
|
||
|
||
.sbi-kpi-hero {
|
||
display: grid;
|
||
grid-template-columns: minmax(0, 1.8fr) repeat(3, minmax(0, 1fr));
|
||
gap: 16px;
|
||
}
|
||
|
||
.sbi-kpi-hero-body {
|
||
display: flex;
|
||
align-items: center;
|
||
gap: 28px;
|
||
padding: 18px;
|
||
}
|
||
|
||
.sbi-kpi-ring {
|
||
--sbi-kpi-pct: 0;
|
||
display: grid;
|
||
flex: none;
|
||
width: 138px;
|
||
height: 138px;
|
||
place-items: center;
|
||
border-radius: 50%;
|
||
background: conic-gradient(var(--sbi-accent) calc(var(--sbi-kpi-pct) * 1%), #eef3f9 0);
|
||
}
|
||
|
||
.sbi-kpi-ring-hole {
|
||
display: grid;
|
||
gap: 2px;
|
||
width: 104px;
|
||
height: 104px;
|
||
place-content: center;
|
||
place-items: center;
|
||
border-radius: 50%;
|
||
background: var(--sbi-card);
|
||
}
|
||
|
||
.sbi-kpi-ring-hole strong {
|
||
font-size: 22px;
|
||
font-variant-numeric: tabular-nums;
|
||
}
|
||
|
||
.sbi-kpi-ring-hole strong.is-muted {
|
||
color: var(--sbi-text-3);
|
||
font-size: 14px;
|
||
font-weight: 700;
|
||
}
|
||
|
||
.sbi-kpi-ring-hole small {
|
||
color: var(--sbi-text-3);
|
||
font-size: 11px;
|
||
}
|
||
|
||
.sbi-kpi-hero-stats {
|
||
display: grid;
|
||
flex: 1;
|
||
gap: 11px;
|
||
min-width: 0;
|
||
margin: 0;
|
||
}
|
||
|
||
.sbi-kpi-hero-stats > div {
|
||
display: flex;
|
||
align-items: baseline;
|
||
justify-content: space-between;
|
||
gap: 12px;
|
||
padding-bottom: 9px;
|
||
border-bottom: 1px dashed var(--sbi-border);
|
||
}
|
||
|
||
.sbi-kpi-hero-stats > div:last-child {
|
||
padding-bottom: 0;
|
||
border-bottom: 0;
|
||
}
|
||
|
||
.sbi-kpi-hero-stats dt {
|
||
color: var(--sbi-text-2);
|
||
font-size: 12.5px;
|
||
}
|
||
|
||
.sbi-kpi-hero-stats dd {
|
||
margin: 0;
|
||
font-size: 17px;
|
||
font-weight: 720;
|
||
font-variant-numeric: tabular-nums;
|
||
}
|
||
|
||
.sbi-kpi-mini {
|
||
display: flex;
|
||
flex-direction: column;
|
||
justify-content: center;
|
||
gap: 5px;
|
||
padding: 16px 18px;
|
||
}
|
||
|
||
.sbi-kpi-mini-label {
|
||
align-self: flex-start;
|
||
color: var(--sbi-text-2);
|
||
font-size: 12.5px;
|
||
font-weight: 640;
|
||
}
|
||
|
||
.sbi-kpi-mini-value {
|
||
font-size: 22px;
|
||
font-weight: 760;
|
||
font-variant-numeric: tabular-nums;
|
||
}
|
||
|
||
.sbi-kpi-mini-note {
|
||
color: var(--sbi-text-3);
|
||
font-size: 11.5px;
|
||
}
|
||
|
||
/* ---------- 排行榜 ---------- */
|
||
|
||
.sbi-kpi-board-scroll {
|
||
max-height: 620px;
|
||
margin-top: 12px;
|
||
border-radius: 0 0 var(--sbi-radius) var(--sbi-radius);
|
||
}
|
||
|
||
.sbi-kpi-rank {
|
||
display: inline-grid;
|
||
width: 24px;
|
||
height: 24px;
|
||
place-items: center;
|
||
border-radius: 50%;
|
||
background: #f1f5fa;
|
||
color: var(--sbi-text-2);
|
||
font-size: 12px;
|
||
font-weight: 740;
|
||
font-variant-numeric: tabular-nums;
|
||
}
|
||
|
||
.sbi-kpi-rank.is-gold {
|
||
background: linear-gradient(135deg, #f6c34c, #d28f0e);
|
||
color: #ffffff;
|
||
}
|
||
|
||
.sbi-kpi-rank.is-silver {
|
||
background: linear-gradient(135deg, #cfd8e3, #97a4b4);
|
||
color: #ffffff;
|
||
}
|
||
|
||
.sbi-kpi-rank.is-bronze {
|
||
background: linear-gradient(135deg, #d9a06b, #a56a3c);
|
||
color: #ffffff;
|
||
}
|
||
|
||
.sbi-kpi-person {
|
||
display: grid;
|
||
gap: 2px;
|
||
}
|
||
|
||
.sbi-kpi-person-top {
|
||
display: flex;
|
||
align-items: center;
|
||
gap: 6px;
|
||
}
|
||
|
||
.sbi-kpi-person small {
|
||
color: var(--sbi-text-3);
|
||
font-size: 11.5px;
|
||
}
|
||
|
||
.sbi-kpi-app {
|
||
display: inline-flex;
|
||
align-items: center;
|
||
gap: 7px;
|
||
}
|
||
|
||
.sbi-kpi-app-dot {
|
||
flex: none;
|
||
width: 8px;
|
||
height: 8px;
|
||
border-radius: 50%;
|
||
}
|
||
|
||
.sbi-kpi-attain {
|
||
display: inline-flex;
|
||
align-items: center;
|
||
gap: 8px;
|
||
}
|
||
|
||
.sbi-kpi-bar {
|
||
display: inline-block;
|
||
width: 96px;
|
||
height: 6px;
|
||
overflow: hidden;
|
||
border-radius: 999px;
|
||
background: #eef3f9;
|
||
}
|
||
|
||
.sbi-kpi-bar-fill {
|
||
display: block;
|
||
height: 100%;
|
||
border-radius: 999px;
|
||
background: var(--sbi-accent-grad);
|
||
}
|
||
|
||
.sbi-kpi-bar-fill.is-done {
|
||
background: var(--sbi-up);
|
||
}
|
||
|
||
.sbi-kpi-attain-value {
|
||
min-width: 52px;
|
||
text-align: right;
|
||
font-variant-numeric: tabular-nums;
|
||
}
|
||
|
||
.sbi-kpi-no-target {
|
||
color: var(--sbi-text-3);
|
||
font-size: 12px;
|
||
}
|
||
|
||
/* ---------- 骨架 ---------- */
|
||
|
||
.sbi-kpi-hero-loading {
|
||
display: flex;
|
||
align-items: center;
|
||
gap: 28px;
|
||
padding: 18px;
|
||
}
|
||
|
||
.sbi-kpi-skeleton-ring {
|
||
flex: none;
|
||
width: 138px;
|
||
height: 138px;
|
||
border-radius: 50%;
|
||
}
|
||
|
||
.sbi-kpi-skeleton-lines {
|
||
display: grid;
|
||
flex: 1;
|
||
gap: 14px;
|
||
}
|
||
|
||
.sbi-kpi-table-skeleton {
|
||
display: grid;
|
||
gap: 14px;
|
||
padding: 18px;
|
||
}
|
||
|
||
/* ---------- 配置目标抽屉 ---------- */
|
||
|
||
.sbi-kpi-drawer-mask {
|
||
position: fixed;
|
||
inset: 0;
|
||
z-index: 60;
|
||
background: rgba(16, 27, 45, 0.42);
|
||
}
|
||
|
||
.sbi-kpi-drawer {
|
||
position: absolute;
|
||
top: 0;
|
||
right: 0;
|
||
bottom: 0;
|
||
display: flex;
|
||
flex-direction: column;
|
||
width: min(760px, 94vw);
|
||
border-left: 1px solid var(--sbi-border);
|
||
background: var(--sbi-card);
|
||
box-shadow: var(--sbi-shadow);
|
||
animation: sbi-kpi-slide-in 180ms ease;
|
||
}
|
||
|
||
@keyframes sbi-kpi-slide-in {
|
||
from {
|
||
transform: translateX(28px);
|
||
opacity: 0;
|
||
}
|
||
to {
|
||
transform: translateX(0);
|
||
opacity: 1;
|
||
}
|
||
}
|
||
|
||
.sbi-kpi-drawer-header {
|
||
display: flex;
|
||
align-items: flex-start;
|
||
gap: 12px;
|
||
padding: 16px 20px;
|
||
border-bottom: 1px solid var(--sbi-border);
|
||
}
|
||
|
||
.sbi-kpi-drawer-title {
|
||
display: grid;
|
||
gap: 3px;
|
||
}
|
||
|
||
.sbi-kpi-drawer-title strong {
|
||
font-size: 15px;
|
||
}
|
||
|
||
.sbi-kpi-drawer-title small {
|
||
color: var(--sbi-text-3);
|
||
font-size: 12px;
|
||
}
|
||
|
||
.sbi-kpi-drawer-close {
|
||
display: grid;
|
||
width: 30px;
|
||
height: 30px;
|
||
place-items: center;
|
||
margin-left: auto;
|
||
border: 1px solid var(--sbi-border);
|
||
border-radius: 8px;
|
||
background: var(--sbi-card);
|
||
color: var(--sbi-text-2);
|
||
font-size: 16px;
|
||
line-height: 1;
|
||
cursor: pointer;
|
||
}
|
||
|
||
.sbi-kpi-drawer-close:hover {
|
||
border-color: var(--sbi-accent);
|
||
color: var(--sbi-accent);
|
||
}
|
||
|
||
.sbi-kpi-drawer-body {
|
||
flex: 1;
|
||
overflow: auto;
|
||
padding: 0 20px;
|
||
}
|
||
|
||
.sbi-kpi-drawer-footer {
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: flex-end;
|
||
gap: 10px;
|
||
padding: 14px 20px;
|
||
border-top: 1px solid var(--sbi-border);
|
||
}
|
||
|
||
.sbi-kpi-drawer-error {
|
||
margin-right: auto;
|
||
color: var(--sbi-down);
|
||
font-size: 12.5px;
|
||
}
|
||
|
||
.sbi-kpi-input {
|
||
width: 112px;
|
||
height: 30px;
|
||
padding: 0 8px;
|
||
border: 1px solid var(--sbi-border);
|
||
border-radius: 7px;
|
||
background: var(--sbi-card);
|
||
color: var(--sbi-text);
|
||
font-size: 13px;
|
||
text-align: right;
|
||
font-variant-numeric: tabular-nums;
|
||
}
|
||
|
||
.sbi-kpi-input:focus {
|
||
border-color: var(--sbi-accent);
|
||
outline: none;
|
||
box-shadow: 0 0 0 3px rgba(37, 87, 214, 0.12);
|
||
}
|
||
|
||
.sbi-kpi-input.is-invalid {
|
||
border-color: var(--sbi-down);
|
||
}
|
||
|
||
/* App 总目标进度条(全员共同目标) */
|
||
|
||
.sbi-kpi-app-strip {
|
||
display: grid;
|
||
grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
|
||
gap: 12px;
|
||
}
|
||
|
||
.sbi-kpi-app-card {
|
||
display: flex;
|
||
flex-direction: column;
|
||
gap: 8px;
|
||
padding: 14px 18px;
|
||
}
|
||
|
||
.sbi-kpi-app-card-head {
|
||
display: flex;
|
||
align-items: center;
|
||
gap: 8px;
|
||
}
|
||
|
||
.sbi-kpi-app-card-head strong {
|
||
font-size: 14px;
|
||
}
|
||
|
||
.sbi-kpi-app-card-amounts strong {
|
||
font-size: 20px;
|
||
font-variant-numeric: tabular-nums;
|
||
}
|
||
|
||
.sbi-kpi-app-card-amounts small {
|
||
color: var(--sbi-text-3);
|
||
font-size: 12px;
|
||
}
|
||
|
||
.sbi-kpi-app-card-note {
|
||
color: var(--sbi-text-3);
|
||
font-size: 11.5px;
|
||
}
|
||
|
||
/* 目标抽屉分区 */
|
||
|
||
.sbi-kpi-drawer-section {
|
||
margin-bottom: 18px;
|
||
}
|
||
|
||
.sbi-kpi-drawer-section > h4 {
|
||
display: flex;
|
||
align-items: baseline;
|
||
gap: 8px;
|
||
margin: 0 0 8px;
|
||
color: var(--sbi-text);
|
||
font-size: 13.5px;
|
||
}
|
||
|
||
.sbi-kpi-drawer-section > h4 > small {
|
||
color: var(--sbi-text-3);
|
||
font-size: 12px;
|
||
font-weight: 500;
|
||
}
|