You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							209 lines
						
					
					
						
							7.8 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							209 lines
						
					
					
						
							7.8 KiB
						
					
					
				| import * as echarts from '../../../../ec-canvas/echarts'; | |
| import {commonDemandCountByCategory, countByCategory, event12345Group} from "../../../../utils/statisticsApi"; | |
| 
 | |
| var chart; | |
| 
 | |
| function initChart(canvas, width, height, dpr) { | |
|     chart = echarts.init(canvas, null, { | |
|         width: width, | |
|         height: height, | |
|         devicePixelRatio: dpr // 像素比 | |
|     }); | |
|     canvas.setChart(chart); | |
| 
 | |
| 
 | |
|     return chart; | |
| } | |
| 
 | |
| const formatTime = date => { | |
|     const year = date.getFullYear() | |
|     const month = date.getMonth() + 1 | |
|     const day = date.getDate() | |
|     return [year, month, day].map(formatNumber).join('-') | |
| } | |
| const formatNumber = n => { | |
|     n = n.toString() | |
|     return n[1] ? n : '0' + n | |
| } | |
| Component({ | |
|     properties: { | |
|         typeCondition: { | |
|             type: Number, | |
|             value: 0, | |
|             observer(val) { | |
|                 console.log(val, 11) | |
|                 this.getData() | |
|             } | |
|         } | |
|     }, | |
|     data: { | |
|         ec: { | |
|             lazyLoad: true | |
|             // onInit: initChart | |
|         }, | |
|         tabList: [{ | |
|             label: "个性需求", | |
|             value: 1 | |
|         }, { | |
|             label: '共性需求', | |
|             value: 2 | |
|         }], | |
|         tabValue: 1 | |
|     }, | |
|     lifetimes: { | |
|         ready() { | |
|             this.getData() | |
|         } | |
|     }, | |
|     methods: { | |
|         tabChange({detail}) { | |
|             this.setData({ | |
|                 tabValue: this.data.tabList[detail].value | |
|             }) | |
|             this.getData() | |
|         }, | |
|         getData() { | |
|             this.selectComponent('#requirementAnalysis').init((canvas, width, height, dpr) => { | |
|                 chart = echarts.init(canvas, null, { | |
|                     width: width, | |
|                     height: height, | |
|                     devicePixelRatio: dpr // 像素比 | |
|                 }); | |
|                 canvas.setChart(chart); | |
| 
 | |
|                 let params = { | |
|                     monthTime: 12 | |
|                 } | |
|              | |
|                 if (this.data.tabValue === 1) { | |
|                     countByCategory(params).then(({data}) => { | |
|                         data = data.map(item => { | |
|                             return { | |
|                                 name: item.categoryName, | |
|                                 value: item.cateTotal | |
|                             } | |
|                         }); | |
|                         let color = ["#4F94FF", "#A182FB", "#27D1A7", "#FCBF06", "#FF7108"] | |
| 
 | |
|                         var option = { | |
|                             color, | |
|                             tooltip: { | |
|                                 show: true, | |
|                                 textStyle: { | |
|                                     color: '#000', | |
|                                     fontSize: 14 | |
|                                 }, | |
|                                 formatter(params) { | |
|                                     // console.log(params) | |
|                                     if (params.name === '') { | |
|                                         return ''; | |
|                                     } | |
|                                     return `${params.name} : ${params.percent}%`; | |
|                                 }, | |
|                             }, | |
|                             series: [ | |
|                                 { | |
|                                     name: '', | |
|                                     type: 'pie', | |
|                                     radius: ['40%', '70%'], | |
|                                     center: ['50%', '50%'], // 修改为居中 | |
|                                     avoidLabelOverlap: true, | |
|                                     label: { | |
|                                         color: '#333333', | |
|                                         alignTo: 'labelLine', | |
|                                         formatter: '{num|{c}}\n{name|{b}}', | |
|                                         minMargin: 5, | |
|                                         edgeDistance: 10, | |
|                                         lineHeight: 15, | |
|                                         rich: { | |
|                                             num: { | |
|                                                 fontSize: 17, | |
|                                                 color: '#333333' | |
|                                             }, | |
|                                             zb: { | |
|                                                 fontSize: 14, | |
|                                                 color: '#333333' | |
|                                             } | |
|                                         } | |
|                                     }, | |
|                                     labelLine: { | |
|                                         length: 15, | |
|                                         length2: 0, | |
|                                         maxSurfaceAngle: 80 | |
|                                     }, | |
|                                     data: data | |
|                                 } | |
|                             ] | |
|                         }; | |
|                         chart.setOption(option); | |
|                     }) | |
|                 } else { | |
|                     commonDemandCountByCategory(params).then(({data}) => { | |
|                         data = data.map(item => { | |
|                             return { | |
|                                 name: item.categoryName, | |
|                                 value: item.cateTotal | |
|                             } | |
|                         }); | |
|                         let color = ["#4F94FF", "#A182FB", "#27D1A7", "#FCBF06", "#FF7108"] | |
| 
 | |
|                         var option = { | |
|                             color, | |
|                             tooltip: { | |
|                                 show: true, | |
|                                 textStyle: { | |
|                                     color: '#fff', | |
|                                     fontSize: 14 | |
|                                 }, | |
|                                 formatter(params) { | |
|                                     // console.log(params) | |
|                                     if (params.name === '') { | |
|                                         return ''; | |
|                                     } | |
|                                     return `${params.name} : ${params.percent}%`; | |
|                                 }, | |
|                             }, | |
|                             series: [ | |
|                                 { | |
|                                     name: '', | |
|                                     type: 'pie', | |
|                                     radius: ['40%', '70%'], | |
|                                     center: ['50%', '50%'], // 修改为居中 | |
|                                     avoidLabelOverlap: true, | |
|                                     label: { | |
|                                         color: '#333333', | |
|                                         alignTo: 'labelLine', | |
|                                         formatter: '{num|{c}}\n{name|{b}}', | |
|                                         minMargin: 5, | |
|                                         edgeDistance: 10, | |
|                                         lineHeight: 15, | |
|                                         rich: { | |
|                                             num: { | |
|                                                 fontSize: 17, | |
|                                                 color: '#333333' | |
|                                             }, | |
|                                             zb: { | |
|                                                 fontSize: 14, | |
|                                                 color: '#333333' | |
|                                             } | |
|                                         } | |
|                                     }, | |
|                                     labelLine: { | |
|                                         length: 15, | |
|                                         length2: 0, | |
|                                         maxSurfaceAngle: 80 | |
|                                     }, | |
|                                     data: data | |
|                                 } | |
|                             ] | |
|                         }; | |
|                         chart.setOption(option); | |
|                     }) | |
|                 } | |
| 
 | |
| 
 | |
|                 return chart; | |
|             }); | |
|         } | |
|     } | |
| });
 | |
| 
 |