|
@@ -20,7 +20,9 @@ import { DragDropModule, CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-
|
|
|
import { Chart, ChartConfiguration, registerables } from 'chart.js';
|
|
|
import { trigger, state, style, transition, animate } from '@angular/animations';
|
|
|
import { DoubaoAiService, ResumeAnalysisRequest, ResumeAnalysisResponse } from '../../../services/doubao-ai.service';
|
|
|
+import { ResignationDetailPanelComponent, DetailAnalysis, ImprovementPlan } from './resignation-detail-panel.component';
|
|
|
|
|
|
+Chart.register(...registerables);
|
|
|
// 数据模型定义
|
|
|
export interface TodoItem {
|
|
|
id: number;
|
|
@@ -157,7 +159,8 @@ export interface PerformanceMetric {
|
|
|
MatTableModule,
|
|
|
MatButtonToggleModule,
|
|
|
MatProgressSpinnerModule,
|
|
|
- MatSnackBarModule
|
|
|
+ MatSnackBarModule,
|
|
|
+ ResignationDetailPanelComponent
|
|
|
],
|
|
|
templateUrl: './dashboard.html',
|
|
|
styleUrls: ['./dashboard.scss'],
|
|
@@ -654,17 +657,23 @@ export class Dashboard implements OnInit, AfterViewInit {
|
|
|
{ id: 'senior', name: '高级', count: 7, selected: true }
|
|
|
];
|
|
|
|
|
|
+ // 详情面板相关
|
|
|
+ showDetailPanel = false;
|
|
|
+ selectedReason: any = null;
|
|
|
+ selectedDetailAnalysis: DetailAnalysis | null = null;
|
|
|
+ selectedImprovementPlan: ImprovementPlan | null = null;
|
|
|
+
|
|
|
resignationReasons = [
|
|
|
{
|
|
|
id: 'salary',
|
|
|
name: '薪资待遇',
|
|
|
category: 'compensation',
|
|
|
categoryName: '薪酬福利',
|
|
|
- icon: 'attach_money',
|
|
|
+ icon: 'payments',
|
|
|
percentage: 28.5,
|
|
|
- count: 13,
|
|
|
+ count: 14,
|
|
|
description: '薪资水平低于市场平均水平,缺乏有竞争力的薪酬体系',
|
|
|
- trend: { direction: 'up', value: 5.2 }
|
|
|
+ trend: { direction: 'up', value: 3.2 }
|
|
|
},
|
|
|
{
|
|
|
id: 'career',
|
|
@@ -2404,19 +2413,232 @@ export class Dashboard implements OnInit, AfterViewInit {
|
|
|
viewReasonDetails(reasonId: string): void {
|
|
|
const reason = this.resignationReasons.find(r => r.id === reasonId);
|
|
|
if (reason) {
|
|
|
- console.log('查看离职原因详情:', reason);
|
|
|
- // 这里可以打开详情弹窗显示更多信息
|
|
|
+ this.selectedReason = reason;
|
|
|
+ this.selectedDetailAnalysis = this.getDetailAnalysis(reasonId);
|
|
|
+ this.selectedImprovementPlan = this.getImprovementPlan(reasonId);
|
|
|
+ this.showDetailPanel = true;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
viewImprovementPlan(reasonId: string): void {
|
|
|
const reason = this.resignationReasons.find(r => r.id === reasonId);
|
|
|
if (reason) {
|
|
|
- console.log('查看改进建议:', reason);
|
|
|
- // 这里可以显示针对该离职原因的改进建议
|
|
|
+ this.selectedReason = reason;
|
|
|
+ this.selectedDetailAnalysis = this.getDetailAnalysis(reasonId);
|
|
|
+ this.selectedImprovementPlan = this.getImprovementPlan(reasonId);
|
|
|
+ this.showDetailPanel = true;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ closeDetailPanel(): void {
|
|
|
+ this.showDetailPanel = false;
|
|
|
+ this.selectedReason = null;
|
|
|
+ this.selectedDetailAnalysis = null;
|
|
|
+ this.selectedImprovementPlan = null;
|
|
|
+ }
|
|
|
+
|
|
|
+ exportDetailReport(): void {
|
|
|
+ if (this.selectedReason) {
|
|
|
+ // 导出详细报告的逻辑
|
|
|
+ this.snackBar.open(`正在导出"${this.selectedReason.name}"的详细报告...`, '关闭', {
|
|
|
+ duration: 3000,
|
|
|
+ horizontalPosition: 'center',
|
|
|
+ verticalPosition: 'top'
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private getDetailAnalysis(reasonId: string): DetailAnalysis {
|
|
|
+ // 根据不同的离职原因返回对应的详细分析数据
|
|
|
+ const analysisData: { [key: string]: DetailAnalysis } = {
|
|
|
+ 'salary': {
|
|
|
+ overview: '薪资待遇问题是当前最主要的离职原因,占比28.5%。主要体现在基本薪资偏低、绩效奖金不透明、福利待遇缺乏竞争力等方面。',
|
|
|
+ keyFactors: ['基本薪资偏低', '绩效考核不透明', '福利待遇单一', '薪资调整机制缺失', '市场竞争力不足'],
|
|
|
+ impactAnalysis: {
|
|
|
+ shortTerm: ['优秀员工流失加速', '招聘成本增加', '团队士气下降', '工作效率降低'],
|
|
|
+ longTerm: ['人才竞争力下降', '企业声誉受损', '核心技能流失', '业务发展受阻']
|
|
|
+ },
|
|
|
+ relatedDepartments: ['人力资源部', '财务部', '各业务部门'],
|
|
|
+ timeDistribution: [
|
|
|
+ { period: '第一季度', count: 3, percentage: 21.4 },
|
|
|
+ { period: '第二季度', count: 4, percentage: 28.6 },
|
|
|
+ { period: '第三季度', count: 5, percentage: 35.7 },
|
|
|
+ { period: '第四季度', count: 2, percentage: 14.3 }
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ 'career': {
|
|
|
+ overview: '职业发展问题占比22.8%,主要反映在晋升通道不明确、技能培训不足、职业规划缺乏指导等方面。',
|
|
|
+ keyFactors: ['晋升通道狭窄', '培训机会有限', '职业规划缺失', '技能发展停滞', '内部流动性差'],
|
|
|
+ impactAnalysis: {
|
|
|
+ shortTerm: ['员工积极性下降', '学习动力不足', '创新能力减弱'],
|
|
|
+ longTerm: ['组织活力下降', '人才梯队断层', '竞争优势丧失']
|
|
|
+ },
|
|
|
+ relatedDepartments: ['人力资源部', '培训部', '各业务部门'],
|
|
|
+ timeDistribution: [
|
|
|
+ { period: '第一季度', count: 2, percentage: 18.2 },
|
|
|
+ { period: '第二季度', count: 3, percentage: 27.3 },
|
|
|
+ { period: '第三季度', count: 4, percentage: 36.4 },
|
|
|
+ { period: '第四季度', count: 2, percentage: 18.2 }
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ 'workload': {
|
|
|
+ overview: '工作压力问题占比18.3%,主要表现为工作量过大、工作时间过长、工作节奏过快等。',
|
|
|
+ keyFactors: ['工作量过大', '加班频繁', '工作节奏快', '压力管理缺失', '工作生活平衡差'],
|
|
|
+ impactAnalysis: {
|
|
|
+ shortTerm: ['员工疲劳度增加', '工作质量下降', '健康问题增多'],
|
|
|
+ longTerm: ['员工流失率上升', '企业形象受损', '可持续发展受阻']
|
|
|
+ },
|
|
|
+ relatedDepartments: ['人力资源部', '运营部', '项目管理部'],
|
|
|
+ timeDistribution: [
|
|
|
+ { period: '第一季度', count: 2, percentage: 22.2 },
|
|
|
+ { period: '第二季度', count: 3, percentage: 33.3 },
|
|
|
+ { period: '第三季度', count: 2, percentage: 22.2 },
|
|
|
+ { period: '第四季度', count: 2, percentage: 22.2 }
|
|
|
+ ]
|
|
|
+ }
|
|
|
+ };
|
|
|
+
|
|
|
+ return analysisData[reasonId] || {
|
|
|
+ overview: '暂无详细分析数据',
|
|
|
+ keyFactors: [],
|
|
|
+ impactAnalysis: { shortTerm: [], longTerm: [] },
|
|
|
+ relatedDepartments: [],
|
|
|
+ timeDistribution: []
|
|
|
+ };
|
|
|
+ }
|
|
|
+
|
|
|
+ private getImprovementPlan(reasonId: string): ImprovementPlan {
|
|
|
+ // 根据不同的离职原因返回对应的改进计划
|
|
|
+ const improvementPlans: { [key: string]: ImprovementPlan } = {
|
|
|
+ 'salary': {
|
|
|
+ priority: 'high',
|
|
|
+ timeline: '3-6个月',
|
|
|
+ actions: [
|
|
|
+ {
|
|
|
+ title: '薪酬体系重构',
|
|
|
+ description: '建立科学的薪酬体系,包括基本薪资、绩效奖金、福利待遇等全面优化',
|
|
|
+ responsible: '人力资源部',
|
|
|
+ deadline: '2024-04-30',
|
|
|
+ status: 'in_progress'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: '市场薪酬调研',
|
|
|
+ description: '定期进行市场薪酬调研,确保薪酬水平具有市场竞争力',
|
|
|
+ responsible: '人力资源部',
|
|
|
+ deadline: '2024-03-15',
|
|
|
+ status: 'pending'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: '绩效考核优化',
|
|
|
+ description: '完善绩效考核体系,建立透明公正的绩效评估机制',
|
|
|
+ responsible: '人力资源部',
|
|
|
+ deadline: '2024-05-31',
|
|
|
+ status: 'pending'
|
|
|
+ }
|
|
|
+ ],
|
|
|
+ expectedOutcome: '通过薪酬体系优化,预计可降低因薪资问题导致的离职率15-20%,提升员工满意度和忠诚度。',
|
|
|
+ successMetrics: [
|
|
|
+ '离职率下降15-20%',
|
|
|
+ '员工满意度调查薪酬满意度提升至80%以上',
|
|
|
+ '关键岗位人才保留率提升至90%以上',
|
|
|
+ '新员工入职率提升10%'
|
|
|
+ ],
|
|
|
+ resources: {
|
|
|
+ budget: '200-300万元',
|
|
|
+ personnel: ['人力资源总监', '薪酬专员', '财务经理', '各部门主管'],
|
|
|
+ tools: ['薪酬管理系统', '绩效考核平台', '市场调研工具']
|
|
|
+ }
|
|
|
+ },
|
|
|
+ 'career': {
|
|
|
+ priority: 'high',
|
|
|
+ timeline: '6-12个月',
|
|
|
+ actions: [
|
|
|
+ {
|
|
|
+ title: '职业发展通道设计',
|
|
|
+ description: '建立清晰的职业发展通道,包括技术路线和管理路线',
|
|
|
+ responsible: '人力资源部',
|
|
|
+ deadline: '2024-06-30',
|
|
|
+ status: 'pending'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: '培训体系建设',
|
|
|
+ description: '建立完善的培训体系,包括新员工培训、技能提升培训、领导力培训等',
|
|
|
+ responsible: '培训部',
|
|
|
+ deadline: '2024-08-31',
|
|
|
+ status: 'pending'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: '导师制度建立',
|
|
|
+ description: '建立导师制度,为员工提供职业发展指导和支持',
|
|
|
+ responsible: '人力资源部',
|
|
|
+ deadline: '2024-05-31',
|
|
|
+ status: 'pending'
|
|
|
+ }
|
|
|
+ ],
|
|
|
+ expectedOutcome: '通过职业发展体系建设,预计可降低因职业发展问题导致的离职率20-25%,提升员工成长满意度。',
|
|
|
+ successMetrics: [
|
|
|
+ '员工职业发展满意度提升至85%以上',
|
|
|
+ '内部晋升比例提升至60%以上',
|
|
|
+ '培训参与率达到95%以上',
|
|
|
+ '关键人才保留率提升至95%以上'
|
|
|
+ ],
|
|
|
+ resources: {
|
|
|
+ budget: '150-200万元',
|
|
|
+ personnel: ['人力资源总监', '培训经理', '各部门主管', '资深员工导师'],
|
|
|
+ tools: ['学习管理系统', '职业发展平台', '在线培训工具']
|
|
|
+ }
|
|
|
+ },
|
|
|
+ 'workload': {
|
|
|
+ priority: 'medium',
|
|
|
+ timeline: '3-6个月',
|
|
|
+ actions: [
|
|
|
+ {
|
|
|
+ title: '工作量评估与优化',
|
|
|
+ description: '对各岗位工作量进行科学评估,合理分配工作任务',
|
|
|
+ responsible: '运营部',
|
|
|
+ deadline: '2024-04-30',
|
|
|
+ status: 'pending'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: '工作流程优化',
|
|
|
+ description: '优化工作流程,提高工作效率,减少不必要的工作环节',
|
|
|
+ responsible: '项目管理部',
|
|
|
+ deadline: '2024-05-31',
|
|
|
+ status: 'pending'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: '压力管理培训',
|
|
|
+ description: '开展压力管理培训,帮助员工更好地应对工作压力',
|
|
|
+ responsible: '人力资源部',
|
|
|
+ deadline: '2024-03-31',
|
|
|
+ status: 'pending'
|
|
|
+ }
|
|
|
+ ],
|
|
|
+ expectedOutcome: '通过工作压力管理优化,预计可降低因工作压力导致的离职率10-15%,提升员工工作满意度。',
|
|
|
+ successMetrics: [
|
|
|
+ '员工工作压力满意度提升至75%以上',
|
|
|
+ '平均加班时间减少20%',
|
|
|
+ '员工健康指标改善',
|
|
|
+ '工作效率提升15%'
|
|
|
+ ],
|
|
|
+ resources: {
|
|
|
+ budget: '50-100万元',
|
|
|
+ personnel: ['运营总监', '项目经理', '人力资源专员', '心理咨询师'],
|
|
|
+ tools: ['工作量管理系统', '项目管理工具', '健康管理平台']
|
|
|
+ }
|
|
|
+ }
|
|
|
+ };
|
|
|
+
|
|
|
+ return improvementPlans[reasonId] || {
|
|
|
+ priority: 'medium',
|
|
|
+ timeline: '待定',
|
|
|
+ actions: [],
|
|
|
+ expectedOutcome: '暂无改进计划',
|
|
|
+ successMetrics: [],
|
|
|
+ resources: { budget: '待评估', personnel: [], tools: [] }
|
|
|
+ };
|
|
|
+ }
|
|
|
+
|
|
|
getMetricClass(value: string): string {
|
|
|
const numValue = parseInt(value);
|
|
|
if (numValue >= 90) return 'metric-excellent';
|