feat: 引入 ECharts 统一图表并完善员工画像标签分页

后端优化员工行为画像服务和辅助函数,完善系统设置模型和
配置持久化,前端引入 ECharts 替换所有图表组件实现统一
渲染,新增员工画像标签分页器和数字员工工作记录组件,优
化工作台响应式布局和登录页过渡动画,完善预算中心和数字
员工页面样式细节。
This commit is contained in:
caoxiaozhu
2026-05-28 16:24:59 +08:00
parent 8a4a777be7
commit e384318046
53 changed files with 4698 additions and 2468 deletions

View File

@@ -1,4 +1,4 @@
.approval-page {
.approval-page {
width: 100%;
height: 100%;
min-height: 0;
@@ -35,17 +35,14 @@
gap: 10px;
padding: 18px 24px 18px;
border: 1px solid #edf2f7;
background:
radial-gradient(circle at 100% 100%, rgba(45, 212, 191, .18), transparent 18%),
radial-gradient(circle at 92% 92%, rgba(125, 211, 252, .14), transparent 24%),
linear-gradient(180deg, #ffffff 0%, #fbfdff 100%);
background: #fff;
overflow: visible;
}
.progress-card {
padding: 18px 22px 20px;
border: 1px solid #edf2f7;
background: linear-gradient(180deg, #ffffff 0%, #fbfdff 100%);
background: #fff;
}
.hero-banner {
@@ -75,7 +72,7 @@
overflow: hidden;
border: 1px solid #e2e8f0;
border-radius: 999px;
background: linear-gradient(180deg, #eff6ff 0%, #ecfeff 100%);
background: #f8fafc;
box-shadow: inset 0 1px 0 rgba(255, 255, 255, .9);
}
@@ -111,7 +108,7 @@
align-items: center;
min-height: 24px;
padding: 0 9px;
border-radius: 999px;
border-radius: 4px;
background: var(--theme-primary-soft);
border: 1px solid rgba(var(--theme-primary-rgb), .16);
color: var(--theme-primary-active);
@@ -156,7 +153,7 @@
}
.applicant-profile-meta__role .applicant-meta-item + .applicant-meta-item::before {
content: "";
content: "/";
position: absolute;
left: -10px;
color: #cbd5e1;
@@ -401,7 +398,7 @@
justify-content: center;
padding: 0 9px;
border: 1px solid #e2e8f0;
border-radius: 999px;
border-radius: 4px;
background: #f8fafc;
color: #64748b;
font-size: 11px;
@@ -525,7 +522,7 @@
gap: 6px;
padding: 0 14px;
border: 1px solid #dbe4ee;
border-radius: 999px;
border-radius: 4px;
background: #f8fafc;
color: #0f172a;
font-size: 13px;
@@ -552,7 +549,7 @@
min-width: 102px;
min-height: 34px;
padding: 0 12px;
border-radius: 999px;
border-radius: 4px;
background: var(--theme-primary-soft);
color: var(--theme-primary-active);
font-size: 14px;
@@ -564,7 +561,7 @@
min-height: 84px;
resize: none;
border: 1px solid #d7e0ea;
border-radius: 8px;
border-radius: 4px;
padding: 12px;
font-size: 13px;
line-height: 1.5;
@@ -574,8 +571,8 @@
min-height: 84px;
padding: 12px 14px;
border: 1px solid #d7e0ea;
border-radius: 8px;
background: linear-gradient(180deg, #fbfdff 0%, #f8fafc 100%);
border-radius: 4px;
background: #f8fafc;
color: #334155;
font-size: 13px;
line-height: 1.7;
@@ -598,7 +595,7 @@
margin-top: 4px;
overflow: hidden;
border: 1px solid #e2e8f0;
border-radius: 8px;
border-radius: 4px;
background: #fff;
}
@@ -751,7 +748,7 @@
gap: 8px;
padding: 12px 14px;
border: 1px solid #dbe4ee;
border-radius: 8px;
border-radius: 4px;
background: #ffffff;
}
@@ -920,7 +917,7 @@
min-height: 34px;
padding: 0 10px;
border: 1px solid #d7e0ea;
border-radius: 8px;
border-radius: 4px;
background: #fff;
color: #0f172a;
font-size: 12px;
@@ -938,7 +935,7 @@
display: grid;
place-items: center;
border: 1px solid #d7e0ea;
border-radius: 8px;
border-radius: 4px;
background: #f8fafc;
color: #334155;
font-size: 12px;
@@ -1008,7 +1005,7 @@
align-items: center;
margin-top: 6px;
padding: 2px 8px;
border-radius: 999px;
border-radius: 4px;
font-size: 11px;
font-weight: 800;
white-space: nowrap;
@@ -1032,7 +1029,7 @@
margin-top: 12px;
padding: 12px 14px;
border: 1px solid rgba(var(--theme-primary-rgb), .22);
border-radius: 8px;
border-radius: 4px;
background: var(--theme-primary-soft);
color: var(--theme-primary-active);
}
@@ -1090,7 +1087,7 @@
align-items: center;
justify-content: center;
padding: 4px 10px;
border-radius: 999px;
border-radius: 4px;
font-size: 11px;
font-weight: 700;
line-height: 1.2;
@@ -1142,7 +1139,7 @@
justify-content: center;
width: 30px;
height: 30px;
border-radius: 999px;
border-radius: 4px;
font-size: 14px;
font-weight: 800;
}
@@ -1179,7 +1176,7 @@
min-height: 28px;
padding: 0 10px;
border: 1px solid #dbe4ee;
border-radius: 999px;
border-radius: 4px;
background: #fff;
color: #334155;
font-size: 11px;
@@ -1232,7 +1229,7 @@
gap: 5px;
min-height: 28px;
padding: 0 9px;
border-radius: 8px;
border-radius: 4px;
background: var(--success-soft);
color: var(--success-hover);
font-size: 11px;
@@ -1247,7 +1244,7 @@
gap: 5px;
min-height: 28px;
padding: 0 9px;
border-radius: 8px;
border-radius: 4px;
background: var(--success-soft);
color: var(--success-hover);
font-size: 11px;
@@ -1339,10 +1336,8 @@
gap: 14px;
padding: 22px;
border: 1px solid rgba(var(--theme-primary-rgb), .14);
border-radius: 24px;
background:
radial-gradient(circle at top left, rgba(var(--theme-primary-rgb), .12), transparent 36%),
linear-gradient(180deg, rgba(255, 255, 255, .98), rgba(247, 250, 252, .98));
border-radius: 4px;
background: #fff;
box-shadow: 0 28px 56px rgba(15, 23, 42, .2);
}
@@ -1368,7 +1363,7 @@
align-items: center;
justify-content: center;
border: 1px solid #d7e0ea;
border-radius: 999px;
border-radius: 4px;
background: rgba(255, 255, 255, .9);
color: #475569;
}
@@ -1391,7 +1386,7 @@
align-items: center;
min-height: 28px;
padding: 0 10px;
border-radius: 999px;
border-radius: 4px;
background: var(--theme-primary-soft);
color: var(--theme-primary-active);
font-size: 12px;
@@ -1420,9 +1415,9 @@
.attachment-insight-pane {
min-height: 0;
border: 1px solid #e2e8f0;
border-radius: 20px;
border-radius: 4px;
overflow: hidden;
background: linear-gradient(180deg, #f8fafc 0%, #eef2f7 100%);
background: #f8fafc;
}
.attachment-source-pane {
@@ -1485,7 +1480,7 @@
display: grid;
gap: 8px;
padding: 12px;
border-radius: 14px;
border-radius: 4px;
background: #f8fafc;
}
@@ -1504,7 +1499,7 @@
gap: 6px;
padding: 10px;
border: 1px solid #fee2e2;
border-radius: 12px;
border-radius: 4px;
background: #fff7f7;
}
@@ -1572,7 +1567,7 @@
align-items: center;
justify-content: center;
gap: 6px;
border-radius: 8px;
border-radius: 4px;
font-size: 13px;
font-weight: 760;
}
@@ -1632,7 +1627,7 @@
gap: 8px;
padding: 12px 14px;
border: 1px solid #e2e8f0;
border-radius: 8px;
border-radius: 4px;
background: #f8fafc;
}
@@ -1681,7 +1676,7 @@
align-items: center;
justify-content: center;
border: 1px solid #e2e8f0;
border-radius: 999px;
border-radius: 4px;
background: #fff;
color: #475569;
}
@@ -1696,7 +1691,7 @@
gap: 10px;
padding: 12px;
border: 1px solid #fecaca;
border-radius: 10px;
border-radius: 4px;
background: #fffafa;
}
@@ -1713,7 +1708,7 @@
display: inline-flex;
align-items: center;
padding: 0 8px;
border-radius: 999px;
border-radius: 4px;
background: #fef2f2;
color: #dc2626;
font-size: 11px;
@@ -1759,7 +1754,7 @@
gap: 8px;
padding: 12px 12px 11px;
border: 1px solid #e5e7eb;
border-radius: 10px;
border-radius: 4px;
background: #ffffff;
box-shadow: 0 1px 1px rgba(15, 23, 42, 0.03);
}