IDCDatasync-vue/src/views/data/statistics.vue

264 lines
9.5 KiB
Vue
Raw Normal View History

2025-03-07 15:44:35 +08:00
<template>
2025-04-13 17:15:01 +08:00
<div style="margin-top: -10px;">
<a-row :gutter="20">
<a-col :md="12" :sm="1" style="height:calc(50vh - 125px);">
<div class="linese"></div>
<div class="echartsTitle"><div class="ecicon"></div>数据清洗差异统计</div>
2025-04-13 17:15:01 +08:00
<div id="cleaningVariance" class="cleaningVariance" ref="cleaningVariance" style="width: 100%;background:#e6e9f1; height: calc(100% - 70px);"></div>
<div class="linese"></div>
2025-03-07 15:44:35 +08:00
</a-col>
<a-col :md="12" :sm="2" style="height:calc(50vh - 125px);">
<div class="linese"></div>
<div class="echartsTitle"><div class="ecicon"></div>数据编目总量统计</div>
2025-04-13 17:15:01 +08:00
<div id="totalNumberCatalogues" class="totalNumberCatalogues" ref="totalNumberCatalogues" style="width: 100%;background:#e6e9f1; height: calc(100% - 70px); "></div>
<div class="linese"></div>
2025-03-07 15:44:35 +08:00
</a-col>
<a-col :md="12" :sm="3" style="height:calc(50vh - 125px);">
<div class="linese"></div>
<div class="echartsTitle"><div class="ecicon"></div>数据类型存储占比统计</div>
2025-04-13 17:15:01 +08:00
<div id="catalogingStorage" class="catalogingStorage" ref="catalogingStorage" style="width: 100%;background:#e6e9f1; height: calc(100% - 70px);"></div>
<div class="linese"></div>
2025-03-07 15:44:35 +08:00
</a-col>
<a-col :md="12" :sm="4" style="height:calc(50vh - 125px);">
<div class="linese"></div>
<div class="echartsTitle"><div class="ecicon"></div>数据编目存储占比统计</div>
2025-04-13 17:15:01 +08:00
<div id="typeStorage" class="typeStorage" ref="typeStorage" style="width: 100%;background:#e6e9f1; height: calc(100% - 70px);"></div>
<div class="linese"></div>
2025-03-07 15:44:35 +08:00
</a-col>
</a-row>
</div>
</template>
<script>
import { getAction } from '@/api/manage'
import JEllipsis from "@/components/jeecg/JEllipsis";
export default {
name: "statistics",
components: {
JEllipsis
},
data () {
return {
description: '数据统计',
2025-03-09 12:30:49 +08:00
cleaningVarianceData:[],
totalNumberCataloguesData:[],
catalogingStorageData:[],
typeStorage:[]
2025-03-07 15:44:35 +08:00
}
},
mounted() {
this.getTables()
2025-03-07 15:44:35 +08:00
},
computed: {
},
destroyed: function () {
},
created () {
},
methods: {
dataAdd(){
},
getselect(){
2025-03-07 15:44:35 +08:00
},
getTables(){
2025-03-09 12:30:49 +08:00
this.cleaningVarianceData =[['product', '原始库', '标准库']];
getAction("/dataAnalysis/getClnDiffStats",{}).then((res)=>{
if(res.success){
res.result.schemaNames.forEach(row => {
this.cleaningVarianceData.push([row, parseInt(res.result.numRowOriMap[row]),parseInt(res.result.numRowStaMap[row]) ])
})
this.getcleaningVariance();
}
});
this.totalNumberCataloguesData =[];
getAction("/dataAnalysis/getTagStats",{}).then((res)=>{
if(res.success){
res.result.tagNames.forEach(row => {
this.totalNumberCataloguesData.push([row, parseInt(res.result.tagNumRow[row]) ])
})
this.gettotalNumberCatalogues();
}
});
this.catalogingStorageData =[];
getAction("/dataAnalysis/getDataTypeAnalysis",{}).then((res)=>{
if(res.success){
res.result.typeName.forEach(row => {
this.catalogingStorageData.push({ value: parseInt(res.result.numRowMap[row]), name: row })
})
this.getcatalogingStorage();
}
});
this.typeStorage =[]
getAction("/dataAnalysis/getTagNumRowStats",{}).then((res)=>{
if(res.success){
res.result.tagNames.forEach(row => {
this.typeStorage.push({ value: parseInt(res.result.tagNumRow[row]), name: row })
})
this.gettypeStorage();
}
});
2025-03-07 15:44:35 +08:00
},
getcleaningVariance(){
var myChart = this.$echarts.init(this.$refs.cleaningVariance);
var option = {
tooltip: {},
grid:{
2025-04-13 17:15:01 +08:00
left:'80px',
right:'20px',
top:'20px',
2025-04-13 17:15:01 +08:00
bottom:'30px'
2025-03-07 15:44:35 +08:00
},
xAxis: {
type: 'category' ,
axisLabel:{
2025-04-13 17:15:01 +08:00
color: '#6C758B'
},
splitLine:{
lineStyle:{
2025-04-13 17:15:01 +08:00
color: '#6C758B'
}
},
axisLine:{
lineStyle:{
2025-04-13 17:15:01 +08:00
color: '#6C758B'
}
},
},
yAxis: {
axisLabel:{
2025-04-13 17:15:01 +08:00
color: '#6C758B'
},
splitLine:{
lineStyle:{
2025-04-13 17:15:01 +08:00
color: '#6C758B'
}
},
axisLine:{
lineStyle:{
2025-04-13 17:15:01 +08:00
color: '#6C758B'
}
},
},
2025-03-07 15:44:35 +08:00
dataset: {
2025-03-09 12:30:49 +08:00
source: this.cleaningVarianceData
2025-03-07 15:44:35 +08:00
},
// Declare several bar series, each will be mapped
// to a column of dataset.source by default.
series: [{ type: 'bar',barMaxWidth: 20, }, { type: 'bar',barMaxWidth: 20, }],
2025-03-07 15:44:35 +08:00
color:['#5470c6', '#91cc75', '#fac858', '#ee6666', '#73c0de', '#3ba272', '#fc8452', '#9a60b4', '#ea7ccc']
};
myChart.setOption(option);
},
gettotalNumberCatalogues(){
var myChart = this.$echarts.init(this.$refs.totalNumberCatalogues);
var option = {
tooltip: {},
dataset: {
2025-03-09 12:30:49 +08:00
source: this.totalNumberCataloguesData
},
grid:{
left:'40px',
right:'20px',
top:'20px',
2025-04-13 17:15:01 +08:00
bottom:'30px'
},
xAxis: {
type: 'category' ,
axisLabel:{
2025-04-13 17:15:01 +08:00
color: '#6C758B'
},
splitLine:{
lineStyle:{
2025-04-13 17:15:01 +08:00
color: '#6C758B'
}
},
axisLine:{
lineStyle:{
2025-04-13 17:15:01 +08:00
color: '#6C758B'
}
},
},
yAxis: {
axisLabel:{
2025-04-13 17:15:01 +08:00
color: '#6C758B'
},
splitLine:{
lineStyle:{
2025-04-13 17:15:01 +08:00
color: '#6C758B'
}
},
axisLine:{
lineStyle:{
2025-04-13 17:15:01 +08:00
color: '#6C758B'
}
},
2025-03-07 15:44:35 +08:00
},
// Declare several bar series, each will be mapped
// to a column of dataset.source by default.
series: [{ type: 'bar',barMaxWidth: 30, }],
2025-03-07 15:44:35 +08:00
color:['#5470c6', '#91cc75', '#fac858', '#ee6666', '#73c0de', '#3ba272', '#fc8452', '#9a60b4', '#ea7ccc']
};
myChart.setOption(option);
},
getcatalogingStorage(){
var myChart = this.$echarts.init(this.$refs.catalogingStorage);
var option = {
tooltip: {
trigger: 'item'
},
series: [
{
name: '占比',
type: 'pie',
2025-03-09 22:09:38 +08:00
radius: '70%',
2025-03-09 12:30:49 +08:00
data: this.catalogingStorageData,
2025-03-07 15:44:35 +08:00
emphasis: {
itemStyle: {
shadowBlur: 10,
shadowOffsetX: 0,
shadowColor: 'rgba(0, 0, 0, 0.5)'
}
}
}
],
color:['#5470c6', '#91cc75', '#fac858', '#ee6666', '#73c0de', '#3ba272', '#fc8452', '#9a60b4', '#ea7ccc']
};
myChart.setOption(option);
},
gettypeStorage(){
var myChart = this.$echarts.init(this.$refs.typeStorage);
var option = {
tooltip: {
trigger: 'item'
},
series: [
{
name: '占比',
type: 'pie',
2025-03-09 22:09:38 +08:00
radius: '70%',
2025-03-09 12:30:49 +08:00
data: this.typeStorage,
2025-03-07 15:44:35 +08:00
emphasis: {
itemStyle: {
shadowBlur: 10,
shadowOffsetX: 0,
shadowColor: 'rgba(0, 0, 0, 0.5)'
}
}
}
],
color:['#5470c6', '#91cc75', '#fac858', '#ee6666', '#73c0de', '#3ba272', '#fc8452', '#9a60b4', '#ea7ccc']
};
myChart.setOption(option);
},
}
}
</script>
<style scoped>
@import '~@assets/less/common.less';
</style>