| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187 | 
							- import { Component, OnInit, AfterViewInit, OnDestroy, ViewChild, ElementRef } from '@angular/core';
 
- import { CommonModule } from '@angular/common';
 
- import * as echarts from 'echarts';
 
- interface SkillData {
 
-   label: string;
 
-   current: number;
 
-   target: number;
 
-   teamAvg: number;
 
- }
 
- interface SkillAnalysisItem {
 
-   name: string;
 
-   score: number;
 
-   status: string;
 
- }
 
- @Component({
 
-   selector: 'app-skill-radar',
 
-   standalone: true,
 
-   imports: [CommonModule],
 
-   templateUrl: './skill-radar.component.html',
 
-   styleUrl: './skill-radar.component.scss'
 
- })
 
- export class SkillRadarComponent implements OnInit, AfterViewInit, OnDestroy {
 
-   @ViewChild('radarChart') radarChartRef!: ElementRef<HTMLDivElement>;
 
-   private radarChart: any = null;
 
-   
 
-   viewMode: 'self' | 'comparison' = 'self';
 
-   
 
-   // 能力维度数据
 
-   skillDimensions: SkillData[] = [
 
-     { label: '建模能力', current: 85, target: 95, teamAvg: 78 },
 
-     { label: '渲染技巧', current: 76, target: 90, teamAvg: 72 },
 
-     { label: '软装搭配', current: 90, target: 95, teamAvg: 85 },
 
-     { label: '沟通能力', current: 70, target: 85, teamAvg: 75 },
 
-     { label: '项目管理', current: 65, target: 80, teamAvg: 68 },
 
-     { label: '创新能力', current: 82, target: 90, teamAvg: 76 }
 
-   ];
 
-   
 
-   // 能力分析数据
 
-   skillAnalysis: SkillAnalysisItem[] = [
 
-     { name: '建模能力', score: 85, status: '优秀' },
 
-     { name: '渲染技巧', score: 76, status: '良好' },
 
-     { name: '软装搭配', score: 90, status: '优秀' },
 
-     { name: '沟通能力', score: 70, status: '需要提升' },
 
-     { name: '项目管理', score: 65, status: '需要提升' },
 
-     { name: '创新能力', score: 82, status: '良好' }
 
-   ];
 
-   
 
-   // 提升建议
 
-   improvementSuggestions = [
 
-     '在项目管理方面,建议使用敏捷管理方法,提高任务优先级判断能力',
 
-     '沟通能力可以通过主动与客户进行阶段性汇报来提升',
 
-     '渲染技巧可以学习新的灯光设置和材质调整方法,提升作品真实感',
 
-     '继续保持软装搭配和建模能力的优势,探索更多创新风格'
 
-   ];
 
-   constructor() { }
 
-   ngOnInit(): void {
 
-     // 初始化组件数据
 
-   }
 
-   ngAfterViewInit(): void {
 
-     // 初始化雷达图
 
-     this.initRadarChart();
 
-   }
 
-   // 切换视图模式
 
-   switchViewMode(mode: 'self' | 'comparison'): void {
 
-     this.viewMode = mode;
 
-     this.updateRadarChart();
 
-   }
 
-   // 初始化雷达图
 
-   private initRadarChart(): void {
 
-     const chartDom = this.radarChartRef.nativeElement;
 
-     this.radarChart = echarts.init(chartDom);
 
-     
 
-     const option = this.getEChartsOption();
 
-     this.radarChart.setOption(option);
 
-     // 窗口调整大小时重绘图表
 
-     window.addEventListener('resize', () => {
 
-       if (this.radarChart) {
 
-         this.radarChart.resize();
 
-       }
 
-     });
 
-   }
 
-   // 获取ECharts配置选项
 
-   private getEChartsOption() {
 
-     const indicators = this.skillDimensions.map(dim => ({
 
-       name: dim.label,
 
-       max: 100
 
-     }));
 
-     const series = [
 
-       {
 
-         name: '个人能力',
 
-         type: 'radar',
 
-         data: [
 
-           {
 
-             value: this.skillDimensions.map(dim => dim.current),
 
-             name: '个人能力',
 
-             itemStyle: {
 
-               color: '#ff6384'
 
-             },
 
-             areaStyle: {
 
-               color: 'rgba(255, 99, 132, 0.2)'
 
-             }
 
-           }
 
-         ]
 
-       }
 
-     ];
 
-     if (this.viewMode === 'comparison') {
 
-       series[0].data.push({
 
-         value: this.skillDimensions.map(dim => dim.teamAvg),
 
-         name: '团队平均',
 
-         itemStyle: {
 
-           color: '#36a2eb'
 
-         },
 
-         areaStyle: {
 
-           color: 'rgba(54, 162, 235, 0.2)'
 
-         }
 
-       });
 
-     }
 
-     return {
 
-       title: {
 
-         text: '能力雷达图',
 
-         left: 'center',
 
-         textStyle: {
 
-           fontSize: 16,
 
-           color: '#333'
 
-         }
 
-       },
 
-       legend: {
 
-         data: this.viewMode === 'comparison' ? ['个人能力', '团队平均'] : ['个人能力'],
 
-         bottom: 10
 
-       },
 
-       radar: {
 
-         indicator: indicators,
 
-         radius: '60%',
 
-         axisLine: {
 
-           lineStyle: {
 
-             color: 'rgba(200, 200, 200, 0.3)'
 
-           }
 
-         },
 
-         splitLine: {
 
-           lineStyle: {
 
-             color: 'rgba(200, 200, 200, 0.3)'
 
-           }
 
-         },
 
-         splitArea: {
 
-           show: false
 
-         }
 
-       },
 
-       series: series,
 
-       tooltip: {
 
-         trigger: 'item',
 
-         formatter: function(params: any) {
 
-           return `${params.seriesName}<br/>${params.name}: ${params.value}`;
 
-         }
 
-       }
 
-     };
 
-   }
 
-   // 更新雷达图
 
-   private updateRadarChart(): void {
 
-     if (this.radarChart) {
 
-       const option = this.getEChartsOption();
 
-       this.radarChart.setOption(option);
 
-     }
 
-   }
 
-   // 清理图表资源
 
-   ngOnDestroy(): void {
 
-     if (this.radarChart) {
 
-       this.radarChart.destroy();
 
-     }
 
-   }
 
- }
 
 
  |