|
@@ -1,6 +1,7 @@
|
|
<template>
|
|
<template>
|
|
<div>
|
|
<div>
|
|
- <div ref="chart" class="chart"></div>
|
|
|
|
|
|
+ <!-- 如果 nodeName 不为空,才渲染图表 -->
|
|
|
|
+ <div v-if="nodeName" ref="chart" class="chart"></div>
|
|
</div>
|
|
</div>
|
|
</template>
|
|
</template>
|
|
|
|
|
|
@@ -12,14 +13,30 @@ import axiosRequestAPI from '../Platform/ShiKongFenXi/lib/axiosRequestAPI';
|
|
|
|
|
|
export default {
|
|
export default {
|
|
name: 'MyChart',
|
|
name: 'MyChart',
|
|
|
|
+ props: {
|
|
|
|
+ nodeName: {
|
|
|
|
+ type: String,
|
|
|
|
+ required: false
|
|
|
|
+ }
|
|
|
|
+ },
|
|
data() {
|
|
data() {
|
|
return {
|
|
return {
|
|
- xAxisData: [], // 存储 class_name 数据
|
|
|
|
- yAxisData: [], // 存储每个 class_name 对应的 shape_area 总和
|
|
|
|
|
|
+ xAxisData: [],
|
|
|
|
+ yAxisData: []
|
|
};
|
|
};
|
|
},
|
|
},
|
|
- mounted() {
|
|
|
|
- this.fetchData(); // 在 mounted 生命周期钩子中调用 fetchData 获取数据
|
|
|
|
|
|
+ watch: {
|
|
|
|
+ // 监听 nodeName 的变化,动态加载图表
|
|
|
|
+ nodeName(newNodeName) {
|
|
|
|
+ if (newNodeName) {
|
|
|
|
+ // 如果有 nodeName,加载数据并渲染图表
|
|
|
|
+ this.fetchData(newNodeName);
|
|
|
|
+ } else {
|
|
|
|
+ // 如果没有 nodeName,不显示图表并清空数据
|
|
|
|
+ this.xAxisData = [];
|
|
|
|
+ this.yAxisData = [];
|
|
|
|
+ }
|
|
|
|
+ }
|
|
},
|
|
},
|
|
methods: {
|
|
methods: {
|
|
// 初始化图表
|
|
// 初始化图表
|
|
@@ -31,7 +48,7 @@ export default {
|
|
title: {
|
|
title: {
|
|
text: '用地类型',
|
|
text: '用地类型',
|
|
textStyle: {
|
|
textStyle: {
|
|
- color: '#000000', // 设置标题颜色
|
|
|
|
|
|
+ color: '#000000',
|
|
fontWeight: 'bold',
|
|
fontWeight: 'bold',
|
|
fontSize: 18
|
|
fontSize: 18
|
|
}
|
|
}
|
|
@@ -40,19 +57,19 @@ export default {
|
|
legend: {
|
|
legend: {
|
|
data: ['面积总和'],
|
|
data: ['面积总和'],
|
|
textStyle: {
|
|
textStyle: {
|
|
- color: '#000000', // 设置图例字体颜色
|
|
|
|
|
|
+ color: '#000000',
|
|
}
|
|
}
|
|
},
|
|
},
|
|
xAxis: {
|
|
xAxis: {
|
|
data: this.xAxisData,
|
|
data: this.xAxisData,
|
|
axisLabel: {
|
|
axisLabel: {
|
|
- interval: 0, // 强制显示所有标签
|
|
|
|
- color: '#000000', // 设置 X 轴标签字体颜色
|
|
|
|
|
|
+ interval: 0,
|
|
|
|
+ color: '#000000',
|
|
}
|
|
}
|
|
},
|
|
},
|
|
yAxis: {
|
|
yAxis: {
|
|
axisLabel: {
|
|
axisLabel: {
|
|
- color: '#000000', // 设置 Y 轴标签字体颜色
|
|
|
|
|
|
+ color: '#000000',
|
|
}
|
|
}
|
|
},
|
|
},
|
|
series: [
|
|
series: [
|
|
@@ -65,22 +82,20 @@ export default {
|
|
};
|
|
};
|
|
|
|
|
|
myChart.setOption(option);
|
|
myChart.setOption(option);
|
|
-
|
|
|
|
- // 自动调整图表大小
|
|
|
|
window.addEventListener('resize', () => {
|
|
window.addEventListener('resize', () => {
|
|
myChart.resize();
|
|
myChart.resize();
|
|
});
|
|
});
|
|
},
|
|
},
|
|
|
|
|
|
// 获取数据
|
|
// 获取数据
|
|
- fetchData() {
|
|
|
|
- axiosRequestAPI.listClassNameAndShapeArea()
|
|
|
|
|
|
+ fetchData(nodeName) {
|
|
|
|
+ axiosRequestAPI.listClassNameAndShapeArea(nodeName)
|
|
.then((data) => {
|
|
.then((data) => {
|
|
- console.log("Fetched data:", data); // 打印原始数据
|
|
|
|
|
|
+ console.log("Fetched data for", nodeName, ":", data);
|
|
if (Array.isArray(data)) {
|
|
if (Array.isArray(data)) {
|
|
- this.xAxisData = data.map(item => item.class_name); // 获取 class_name
|
|
|
|
- this.yAxisData = data.map(item => item.total_area); // 获取 total_area(面积总和)
|
|
|
|
- this.initChart(); // 数据加载完成后初始化图表
|
|
|
|
|
|
+ this.xAxisData = data.map(item => item.class_name);
|
|
|
|
+ this.yAxisData = data.map(item => item.total_area);
|
|
|
|
+ this.initChart();
|
|
} else {
|
|
} else {
|
|
console.error('返回的数据格式不正确');
|
|
console.error('返回的数据格式不正确');
|
|
}
|
|
}
|
|
@@ -89,11 +104,13 @@ export default {
|
|
console.error('获取数据失败:', error);
|
|
console.error('获取数据失败:', error);
|
|
});
|
|
});
|
|
}
|
|
}
|
|
-
|
|
|
|
}
|
|
}
|
|
};
|
|
};
|
|
</script>
|
|
</script>
|
|
|
|
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
<style scoped>
|
|
<style scoped>
|
|
.chart {
|
|
.chart {
|
|
width: 100%;
|
|
width: 100%;
|