统计图表页面
This commit is contained in:
		
							parent
							
								
									c9432479fa
								
							
						
					
					
						commit
						e52b52c0e9
					
				
							
								
								
									
										247
									
								
								src/views/fta/enterprisestatistics/echarts-data.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										247
									
								
								src/views/fta/enterprisestatistics/echarts-data.ts
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,247 @@ | |||||||
|  | import { EChartsOption } from 'echarts' | ||||||
|  | 
 | ||||||
|  | const { t } = useI18n() | ||||||
|  | 
 | ||||||
|  | //月度
 | ||||||
|  | export const lmonthlData: EChartsOption = { | ||||||
|  |   title: { | ||||||
|  |     text: t('analysis.monthlStatistics'), | ||||||
|  |     left: 'center' | ||||||
|  |   }, | ||||||
|  |   xAxis: { | ||||||
|  |     data: [ | ||||||
|  |       t('analysis.january'), | ||||||
|  |       t('analysis.february'), | ||||||
|  |       t('analysis.march'), | ||||||
|  |       t('analysis.april'), | ||||||
|  |       t('analysis.may'), | ||||||
|  |       t('analysis.june'), | ||||||
|  |       t('analysis.july'), | ||||||
|  |       t('analysis.august'), | ||||||
|  |       t('analysis.september'), | ||||||
|  |       t('analysis.october'), | ||||||
|  |       t('analysis.november'), | ||||||
|  |       t('analysis.december') | ||||||
|  |     ], | ||||||
|  |     boundaryGap: false, | ||||||
|  |     axisTick: { | ||||||
|  |       show: false | ||||||
|  |     } | ||||||
|  |   }, | ||||||
|  |   grid: { | ||||||
|  |     left: 20, | ||||||
|  |     right: 20, | ||||||
|  |     bottom: 20, | ||||||
|  |     top: 80, | ||||||
|  |     containLabel: true | ||||||
|  |   }, | ||||||
|  |   tooltip: { | ||||||
|  |     trigger: 'axis', | ||||||
|  |     axisPointer: { | ||||||
|  |       type: 'cross' | ||||||
|  |     }, | ||||||
|  |     padding: [5, 10] | ||||||
|  |   }, | ||||||
|  |   yAxis: { | ||||||
|  |     axisTick: { | ||||||
|  |       show: false | ||||||
|  |     } | ||||||
|  |   }, | ||||||
|  |   legend: { | ||||||
|  |     data: [t('analysis.value')], | ||||||
|  |     top: 50 | ||||||
|  |   }, | ||||||
|  |   series: [ | ||||||
|  |     { | ||||||
|  |       name: t('analysis.value'), | ||||||
|  |       smooth: true, | ||||||
|  |       type: 'line', | ||||||
|  |       data: [], | ||||||
|  |       animationDuration: 2800, | ||||||
|  |       animationEasing: 'cubicInOut' | ||||||
|  |     }, | ||||||
|  |   ] | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | //季度
 | ||||||
|  | export const lquarterData: EChartsOption = { | ||||||
|  |   title: { | ||||||
|  |     text: t('analysis.quarterStatistics'), // 修改标题为月度注册人数
 | ||||||
|  |     left: 'center' | ||||||
|  |   }, | ||||||
|  |   xAxis: { | ||||||
|  |     data: [ | ||||||
|  |       t('analysis.quarterOne'), | ||||||
|  |       t('analysis.quarterTwo'), | ||||||
|  |       t('analysis.quarterThree'), | ||||||
|  |       t('analysis.quarterFour') | ||||||
|  |     ], // 后端接口获取的月份数据将填充在这里
 | ||||||
|  |     boundaryGap: false, | ||||||
|  |     axisTick: { | ||||||
|  |       show: false | ||||||
|  |     } | ||||||
|  |   }, | ||||||
|  |   grid: { | ||||||
|  |     left: 20, | ||||||
|  |     right: 20, | ||||||
|  |     bottom: 20, | ||||||
|  |     top: 80, | ||||||
|  |     containLabel: true | ||||||
|  |   }, | ||||||
|  |   tooltip: { | ||||||
|  |     trigger: 'axis', | ||||||
|  |     axisPointer: { | ||||||
|  |       type: 'cross' | ||||||
|  |     }, | ||||||
|  |     padding: [5, 10] | ||||||
|  |   }, | ||||||
|  |   yAxis: { | ||||||
|  |     axisTick: { | ||||||
|  |       show: false | ||||||
|  |     } | ||||||
|  |   }, | ||||||
|  |   legend: { | ||||||
|  |     data: [t('analysis.value')], | ||||||
|  |     top: 50 | ||||||
|  |   }, | ||||||
|  |   series: [ | ||||||
|  |     { | ||||||
|  |       name: t('analysis.value'), | ||||||
|  |       smooth: true, | ||||||
|  |       type: 'line', | ||||||
|  |       data: [], // 后端接口获取的预估注册人数数据将填充在这里
 | ||||||
|  |       animationDuration: 2800, | ||||||
|  |       animationEasing: 'cubicInOut' | ||||||
|  |     }, | ||||||
|  |   ] | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // 年度
 | ||||||
|  | export const lyearData : EChartsOption = { | ||||||
|  |   title: { | ||||||
|  |     text: t('analysis.yearStatistics'), // 修改标题为月度注册人数
 | ||||||
|  |     left: 'center' | ||||||
|  |   }, | ||||||
|  |   xAxis: { | ||||||
|  |     data: [ | ||||||
|  |       t('analysis.year20'), | ||||||
|  |       t('analysis.year21'), | ||||||
|  |       t('analysis.year22'), | ||||||
|  |       t('analysis.year23'), | ||||||
|  |       t('analysis.year24'), | ||||||
|  |       t('analysis.year25'), | ||||||
|  |       t('analysis.year26'), | ||||||
|  |       t('analysis.year27'), | ||||||
|  |       t('analysis.year28'), | ||||||
|  |       t('analysis.year29'), | ||||||
|  |       t('analysis.year30'), | ||||||
|  |     ], | ||||||
|  |     boundaryGap: false, | ||||||
|  |     axisTick: { | ||||||
|  |       show: false | ||||||
|  |     } | ||||||
|  |   }, | ||||||
|  |   grid: { | ||||||
|  |     left: 20, | ||||||
|  |     right: 20, | ||||||
|  |     bottom: 20, | ||||||
|  |     top: 80, | ||||||
|  |     containLabel: true | ||||||
|  |   }, | ||||||
|  |   tooltip: { | ||||||
|  |     trigger: 'axis', | ||||||
|  |     axisPointer: { | ||||||
|  |       type: 'cross' | ||||||
|  |     }, | ||||||
|  |     padding: [5, 10] | ||||||
|  |   }, | ||||||
|  |   yAxis: { | ||||||
|  |     axisTick: { | ||||||
|  |       show: false | ||||||
|  |     } | ||||||
|  |   }, | ||||||
|  |   legend: { | ||||||
|  |     data: [t('analysis.value')], | ||||||
|  |     top: 50 | ||||||
|  |   }, | ||||||
|  |   series: [ | ||||||
|  |     { | ||||||
|  |       name: t('analysis.value'), | ||||||
|  |       smooth: true, | ||||||
|  |       type: 'line', | ||||||
|  |       data: [], // 后端接口获取的预估注册人数数据将填充在这里
 | ||||||
|  |       animationDuration: 2800, | ||||||
|  |       animationEasing: 'cubicInOut' | ||||||
|  |     } | ||||||
|  |   ] | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | //
 | ||||||
|  | export const EnterpriseData: EChartsOption = { | ||||||
|  |   title: { | ||||||
|  |     text: t('analysis.enterpriseData'), | ||||||
|  |     left: 'center' | ||||||
|  |   }, | ||||||
|  |   tooltip: { | ||||||
|  |     trigger: 'item', | ||||||
|  |     formatter: '{a} <br/>{b} : {c} ({d}%)' | ||||||
|  |   }, | ||||||
|  |   legend: { | ||||||
|  |     orient: 'vertical', | ||||||
|  |     left: 'left', | ||||||
|  |     data: [ | ||||||
|  |       t('analysis.greatEnterprise'), | ||||||
|  |       t('analysis.centreEnterprise'), | ||||||
|  |       t('analysis.smallEnterprise') | ||||||
|  |     ] | ||||||
|  |   }, | ||||||
|  |   series: [ | ||||||
|  |     { | ||||||
|  |       name: t('analysis.value'), | ||||||
|  |       type: 'pie', | ||||||
|  |       radius: '55%', | ||||||
|  |       center: ['50%', '60%'], | ||||||
|  |       data: [] | ||||||
|  |     } | ||||||
|  |   ] | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | //审核状态统计
 | ||||||
|  | export const lauditStatusData: EChartsOption = { | ||||||
|  |   tooltip: { | ||||||
|  |     trigger: 'item' | ||||||
|  |   }, | ||||||
|  |   legend: { | ||||||
|  |     top: '5%', | ||||||
|  |     left: 'center', | ||||||
|  |     data:[ | ||||||
|  |       t('analysis.running'), | ||||||
|  |       t('analysis.approve'), | ||||||
|  |       t('analysis.reject'), | ||||||
|  |       t('analysis.cancel') | ||||||
|  |     ] | ||||||
|  |   }, | ||||||
|  |   series: [ | ||||||
|  |     { | ||||||
|  |       name: 'Access From', | ||||||
|  |       type: 'pie', | ||||||
|  |       radius: ['40%', '70%'], | ||||||
|  |       avoidLabelOverlap: false, | ||||||
|  |       label: { | ||||||
|  |         show: false, | ||||||
|  |         position: 'center' | ||||||
|  |       }, | ||||||
|  |       emphasis: { | ||||||
|  |         label: { | ||||||
|  |           show: true, | ||||||
|  |           fontSize: 40, | ||||||
|  |           fontWeight: 'bold' | ||||||
|  |         } | ||||||
|  |       }, | ||||||
|  |       labelLine: { | ||||||
|  |         show: false | ||||||
|  |       }, | ||||||
|  |       data: [] | ||||||
|  |     } | ||||||
|  |   ] | ||||||
|  | } | ||||||
| @ -1,11 +1,219 @@ | |||||||
| <script setup lang="ts"> | <!--企业信息饼状图分析--> | ||||||
| 
 |  | ||||||
| </script> |  | ||||||
| 
 |  | ||||||
| <template> | <template> | ||||||
|     企业信息饼状图分析 |   <el-row class="mt-8px" :gutter="8" justify="space-between"> | ||||||
|  |   <el-col :xl="16" :lg="32" :md="32" :sm="24" :xs="24" class="mb-8px"> | ||||||
|  |     <el-card shadow="never" class="mt-8px"> | ||||||
|  |       <el-skeleton :loading="loading" animated> | ||||||
|  |         <el-row :gutter="20" justify="space-between"> | ||||||
|  |           <!-- 第一个饼图--> | ||||||
|  |           <el-col :xl="12" :lg="12" :md="12" :sm="12" :xs="12"> | ||||||
|  |             <el-card shadow="hover" class="mb-8px"> | ||||||
|  |               <el-skeleton :loading="loading" animated> | ||||||
|  |                 <Echart :options="enterpriseData" :height="280" /> | ||||||
|  |               </el-skeleton> | ||||||
|  |             </el-card> | ||||||
|  |           </el-col> | ||||||
|  |           <!-- 第二个饼图--> | ||||||
|  |           <el-col :xl="12" :lg="12" :md="12" :sm="12" :xs="12"> | ||||||
|  |             <el-card shadow="hover" class="mb-8px"> | ||||||
|  |               <el-skeleton :loading="loading" animated> | ||||||
|  |                 <Echart :options="auditStatusData" :height="280" /> | ||||||
|  |               </el-skeleton> | ||||||
|  |             </el-card> | ||||||
|  |           </el-col> | ||||||
|  |           <!-- 月度企业统计 --> | ||||||
|  |           <el-col :xl="12" :lg="12" :md="12" :sm="12" :xs="12"> | ||||||
|  |             <el-card shadow="hover" class="mb-8px"> | ||||||
|  |               <el-skeleton :loading="loading" animated> | ||||||
|  |                 <Echart :options="monthlData" :height="280" /> | ||||||
|  |               </el-skeleton> | ||||||
|  |             </el-card> | ||||||
|  |           </el-col> | ||||||
|  |           <!-- 季度企业统计 --> | ||||||
|  |           <el-col :xl="12" :lg="12" :md="12" :sm="12" :xs="12"> | ||||||
|  |             <el-card shadow="hover" class="mb-8px"> | ||||||
|  |               <el-skeleton :loading="loading" animated> | ||||||
|  |                 <Echart :options="quarterData" :height="280" /> | ||||||
|  |               </el-skeleton> | ||||||
|  |             </el-card> | ||||||
|  |           </el-col> | ||||||
|  |         </el-row> | ||||||
|  |       </el-skeleton> | ||||||
|  |      <!--      年度度企业统计(自己一行)--> | ||||||
|  |       <el-row :gutter="20"> | ||||||
|  |         <el-col :xl="24" :lg="24" :md="24" :sm="24" :xs="24"> | ||||||
|  |           <el-card shadow="hover" class="mb-8px"> | ||||||
|  |             <el-skeleton :loading="loading" animated> | ||||||
|  |               <Echart :options="yearData" :height="280" /> | ||||||
|  |             </el-skeleton> | ||||||
|  |           </el-card> | ||||||
|  |         </el-col> | ||||||
|  |       </el-row> | ||||||
|  |     </el-card> | ||||||
|  |   </el-col> | ||||||
|  |   </el-row> | ||||||
|  | 
 | ||||||
| </template> | </template> | ||||||
| 
 | 
 | ||||||
| <style scoped lang="scss"> | <script lang="ts" setup> | ||||||
|  | import {EChartsOption} from "echarts"; | ||||||
|  | import {EnterpriseData, lmonthlData, lquarterData, lyearData, lauditStatusData} from './echarts-data' | ||||||
|  | import { set } from 'lodash-es' | ||||||
|  | import {pieOptions} from "@/views/Home/echarts-data"; | ||||||
|  | import {EnterprisestatisticsApi} from "@/api/fta/enterprisestatistics"; | ||||||
|  | const { t } = useI18n() | ||||||
|  | const loading = ref(true) | ||||||
|  | 
 | ||||||
|  | defineOptions({ name: 'enterprisestatistics' }) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | //月度monthl | ||||||
|  | const monthlData = reactive<EChartsOption>(lmonthlData) as EChartsOption | ||||||
|  | // 季度quarter | ||||||
|  | const quarterData = reactive<EChartsOption>(lquarterData) as EChartsOption | ||||||
|  | // 年度year | ||||||
|  | const yearData = reactive<EChartsOption>(lyearData) as EChartsOption | ||||||
|  | //企业类型统计(大型企业great enterprise、中型企业centre enterprise、小型企业small enterprise) | ||||||
|  | const enterpriseData = reactive<EChartsOption>(EnterpriseData) as EChartsOption | ||||||
|  | //审核状态统计() | ||||||
|  | const auditStatusData = reactive<EChartsOption>(lauditStatusData) as EChartsOption | ||||||
|  | 
 | ||||||
|  | //月度 | ||||||
|  | const getMonthlData = async () => { | ||||||
|  |   try { | ||||||
|  |     const data = await EnterprisestatisticsApi.getMonthl(); | ||||||
|  |     // 确保数据格式与之前的假数据一致 | ||||||
|  |     if (!Array.isArray(data)) { | ||||||
|  |       throw new Error('Invalid data format received from API'); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     set( | ||||||
|  |       monthlData, | ||||||
|  |       'xAxis.data', | ||||||
|  |       data.map((v) => t(v.name)) | ||||||
|  |     ); | ||||||
|  |     set(monthlData, 'series', [ | ||||||
|  |       { | ||||||
|  |         name: t('analysis.value'), | ||||||
|  |         smooth: true, | ||||||
|  |         type: 'line', | ||||||
|  |         data: data.map((v) => v.value), | ||||||
|  |         animationDuration: 2800, | ||||||
|  |         animationEasing: 'cubicInOut' | ||||||
|  |       } | ||||||
|  |     ]); | ||||||
|  |   } catch (error) { | ||||||
|  |     console.error('Failed to fetch monthly data:', error); | ||||||
|  |   } | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | //季度 | ||||||
|  | const getQuarterData = async () => { | ||||||
|  |   try { | ||||||
|  |     const data = await EnterprisestatisticsApi.getQuarter(); | ||||||
|  |     // 确保数据格式与之前的假数据一致 | ||||||
|  |     if (!Array.isArray(data)) { | ||||||
|  |       throw new Error('Invalid data format received from API'); | ||||||
|  |     } | ||||||
|  |     set( | ||||||
|  |       quarterData, | ||||||
|  |       'xAxis.data', | ||||||
|  |       data.map((v) => t(v.name)) | ||||||
|  |     ) | ||||||
|  |     set(quarterData, 'series', [ | ||||||
|  |       { | ||||||
|  |         name: t('analysis.value'), | ||||||
|  |         smooth: true, | ||||||
|  |         type: 'line', | ||||||
|  |         data: data.map((v) => v.value), | ||||||
|  |         animationDuration: 2800, | ||||||
|  |         animationEasing: 'cubicInOut' | ||||||
|  |       } | ||||||
|  |     ]); | ||||||
|  |   } catch (error) { | ||||||
|  |     console.error('Failed to fetch monthly data:', error); | ||||||
|  |   } | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | // 年度 | ||||||
|  | const getYearData = async () => { | ||||||
|  |   try { | ||||||
|  |     const data = await EnterprisestatisticsApi.getYear(); | ||||||
|  |     console.log('-------------2------',data); | ||||||
|  |     // 确保数据格式与之前的假数据一致 | ||||||
|  |     if (!Array.isArray(data)) { | ||||||
|  |       throw new Error('Invalid data format received from API'); | ||||||
|  |     } | ||||||
|  |     set( | ||||||
|  |       yearData, | ||||||
|  |       'xAxis.data', | ||||||
|  |       data.map((v) => t(v.name)) | ||||||
|  |     ) | ||||||
|  |     set(yearData, 'series', [ | ||||||
|  |       { | ||||||
|  |         name: t('analysis.value'), | ||||||
|  |         smooth: true, | ||||||
|  |         type: 'line', | ||||||
|  |         data: data.map((v) => v.value), | ||||||
|  |         animationDuration: 2800, | ||||||
|  |         animationEasing: 'cubicInOut' | ||||||
|  |       } | ||||||
|  |     ]); | ||||||
|  |   } catch (error) { | ||||||
|  |     console.error('Failed to fetch monthly data:', error); | ||||||
|  |   } | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | //企业类型统计 | ||||||
|  | const getEnterprise = async () => { | ||||||
|  |   const data = await EnterprisestatisticsApi.getEnterpriseData(); | ||||||
|  |   if (!Array.isArray(data)) { | ||||||
|  |     throw new Error('Invalid data format received from API'); | ||||||
|  |   } | ||||||
|  |   set( | ||||||
|  |     enterpriseData, | ||||||
|  |     'legend.data', | ||||||
|  |     data.map((v) => t(v.name)) | ||||||
|  |   ) | ||||||
|  |   enterpriseData!.series![0].data = data.map((v) => { | ||||||
|  |     return { | ||||||
|  |       name: t(v.name), | ||||||
|  |       value: v.value | ||||||
|  |     } | ||||||
|  |   }) | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | //审核状态统计 | ||||||
|  | const getAuditStatus= async () => { | ||||||
|  | 
 | ||||||
|  |   const data = await EnterprisestatisticsApi.getAuditStatusData(); | ||||||
|  |   set( | ||||||
|  |     auditStatusData, | ||||||
|  |     'legend.data', | ||||||
|  |     data.map((v) => t(v.name)) | ||||||
|  |   ) | ||||||
|  |   auditStatusData!.series![0].data = data.map((v) => { | ||||||
|  |     return { | ||||||
|  |       name: t(v.name), | ||||||
|  |       value: v.value | ||||||
|  |     } | ||||||
|  |   }) | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | const getAllApi = async () => { | ||||||
|  |   await Promise.all([ | ||||||
|  |     getMonthlData(), | ||||||
|  |     getQuarterData(), | ||||||
|  |     getYearData(), | ||||||
|  |     getEnterprise(), | ||||||
|  |     getAuditStatus() | ||||||
|  |   ]) | ||||||
|  | 
 | ||||||
|  |   loading.value = false | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | getAllApi() | ||||||
|  | </script> | ||||||
| 
 | 
 | ||||||
| </style> |  | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user