VUE3:统计分析页面布局+自适应页面参考

一、布局

<template><div class="container1"><div class="form white"><el-form :inline="true" :rules="rules" :model="queryParams" label-width="80px" ref="querParmRef"><el-form-item label="城市" prop="cityId"><el-select v-model="queryParams.cityId" clearable filterable placeholder="请选择城市" style="width: 169px"><el-option v-for="item in citylists" :key="item.english" :label="item.english":value="item.chinese"></el-option> </el-select></el-form-item><el-form-item label="公司" prop="companyId"><el-select v-model="queryParams.companyId" clearable filterable placeholder="请选择公司"style="width: 169px"><el-option v-for="item in citylists" :key="item.english" :label="item.english":value="item.chinese"></el-option> </el-select></el-form-item><el-form-item label="日期" prop="date"><el-date-picker v-model="queryParams.date" value-format="YYYY-MM-DD" style="width: 169px" type="date"placeholder="" /></el-form-item><el-form-item label="对比日期" prop="date"><el-date-picker v-model="queryParams.date" value-format="YYYY-MM-DD" style="width: 169px" type="date"placeholder="" /></el-form-item><el-form-item><el-button @click="resetQuery">重置</el-button><el-button type="primary" @click="btntop()" class="btnClick">搜索</el-button></el-form-item><!-- <el-form-item label="起止时间"><el-date-picker style="width: 358px" v-model="queryParams.timeValue" type="datetimerange"range-separator="-" value-format="YYYY-MM-DD HH:mm:ss" start-placeholder="开始时间"end-placeholder="结束时间" :size="size" /></el-form-item> --><div></div></el-form></div><div class="echartsBot white"><el-tabs v-model="activeName" class="tabs"><el-tab-pane label="1" name="first"></el-tab-pane><el-tab-pane label="2" name="second">2</el-tab-pane><el-tab-pane label="3" name="third">3</el-tab-pane></el-tabs><!-- 上部分 --><div class="top"><!-- 左边 --><div class="left"><div class="chart chart1"></div><div class="chart chart2"></div></div><!-- 中间 --><div class="middle"><div class="chart chart3"></div></div><!-- 右边 --><div class="right"><div class="chart chart4"></div></div></div><!-- 下部分 --><div class="bottom"><div class="chart chart5"></div><div class="chart chart6"></div><div class="chart chart7"></div><div class="chart chart8"></div></div></div></div>
</template><style scoped lang="scss">
.container1 {padding: calc(100vw * 15 / 1920);display: flex;flex-direction: column;/* 设置垂直方向排列 */height: 100%;width: 100%;background-color: #F7F8FA;}.white {background-color: #fff;
}.echartsBot {flex: 1;width: 100%;padding: 0 calc(100vw * 15 / 1920) calc(100vw * 15 / 1920);margin-top: calc(100vw * 10 / 1920);
}.titles1 {width: 100%;height: calc(100vw * 20 / 1920);font-size: calc(100vw * 14 / 1920);font-weight: 600;color: #1d2129;line-height: calc(100vw * 20 / 1920);padding-left: 1vh;
}/* 上部分 */
.echartsBot .top {display: flex;height: calc(65% - 50px)
}/* 左边 */
.echartsBot .left {width: 46%;display: flex;flex-direction: column;margin-right: calc(100vw * 15 / 1920);}/* 中间 */
.echartsBot .middle {width: 27%;background-color: #5be948;margin-right: calc(100vw * 15 / 1920);}/* 右边 */
.echartsBot .right {width: 27%;background-color: #1e7f97;}/* 柱状图 */
.echartsBot .chart {/* 修改为需要的宽度和高度 */// width: 300px;// height: 200px;
}/* 左边的柱状图 */
.echartsBot .left .chart1 {/* 样式设置 */flex:1;margin-bottom: calc(100vw * 15 / 1920);background-color: #64b959;}.echartsBot .left .chart2 {/* 样式设置 */flex:1;background-color: #8d2424;}/* 中间的柱状图 */
.echartsBot .middle .chart3 {/* 样式设置 */
}/* 右边的柱状图 */
.echartsBot .right .chart4 {/* 样式设置 */
}/* 下部分 */
.echartsBot .bottom {display: flex;// height: 40%;margin-top: calc(100vw * 15 / 1920); // height: calc(50%- 10px);height: calc(35% - calc(100vw * 19 / 1920));
}/* 底部柱状图 */
.echartsBot .bottom .chart {/* 修改为需要的宽度和高度 */// width: 200px;// height: 150px;
}.echartsBot .bottom .chart5 {/* 样式设置 */flex: 1;background-color: #ecd2d2;height: 100%;margin-right: calc(100vw * 15 / 1920);}.echartsBot .bottom .chart6 {/* 样式设置 */flex: 1;margin-right: calc(100vw * 15 / 1920);background-color: #b6c789;height: 100%;}.echartsBot .bottom .chart7 {/* 样式设置 */flex: 1;margin-right: calc(100vw * 15 / 1920);background-color: #a7a2e0;height: 100%;}.echartsBot .bottom .chart8 {/* 样式设置 */flex: 1;background-color: #dba6d0;height: 100%;}
</style>

 上面效果图的代码,用的flex布局,宽高边距都用了动态的,浏览器窗口大小改变也会自适应

二、分完模块优化

最终效果图如上

完整版代码

 

<template><div class="container1"><div class="form white"><el-form :inline="true" :rules="rules" :model="queryParams" label-width="80px" ref="querParmRef"><el-form-item label="城市" prop="cityId"><el-select v-model="queryParams.cityId" clearable filterable placeholder="请选择城市" style="width: 169px"><el-option v-for="item in citylists" :key="item.english" :label="item.english":value="item.chinese"></el-option> </el-select></el-form-item><el-form-item label="公司" prop="companyId"><el-select v-model="queryParams.companyId" clearable filterable placeholder="请选择公司"style="width: 169px"><el-option v-for="item in citylists" :key="item.english" :label="item.english":value="item.chinese"></el-option> </el-select></el-form-item><el-form-item label="日期" prop="date"><el-date-picker v-model="queryParams.date" value-format="YYYY-MM-DD" style="width: 169px" type="date"placeholder="" /></el-form-item><el-form-item label="对比日期" prop="date"><el-date-picker v-model="queryParams.date" value-format="YYYY-MM-DD" style="width: 169px" type="date"placeholder="" /></el-form-item><el-form-item><el-button @click="resetQuery">重置</el-button><el-button type="primary" @click="btntop()" class="btnClick">搜索</el-button></el-form-item><!-- <el-form-item label="起止时间"><el-date-picker style="width: 358px" v-model="queryParams.timeValue" type="datetimerange"range-separator="-" value-format="YYYY-MM-DD HH:mm:ss" start-placeholder="开始时间"end-placeholder="结束时间" :size="size" /></el-form-item> --><div></div></el-form></div><div class="echartsBot white"><el-tabs v-model="activeName" class="tabs"><el-tab-pane label="1" name="first"></el-tab-pane><!-- <el-tab-pane label="冷热能效耗能排名总览" name="first"></el-tab-pane> --><el-tab-pane label="2" name="second">2</el-tab-pane><el-tab-pane label="3" name="third">3</el-tab-pane></el-tabs><!-- 上部分 --><div class="top"><!-- 左边 --><div class="left"><div class="chart chart1"><div class="titles1">面积排名</div><Echarts1 :echartList="echartList1" /></div><div class="chart chart2"><div class="titles1">运营天数排名</div><Echarts2 :echartList="echartList2" /></div></div><!-- 中间 --><div class="middle"><div class="titles1">COP排名</div><Echarts3 :echartList="echartList3" /><!-- <div class="chart chart3"></div> --></div><!-- 右边 --><div class="right"><div class="titles1">SCOP排名</div><Echarts4 :echartList="echartList4" /></div></div><!-- 下部分 --><div class="bottom"><div class="chart chart5"><div class="titles1">热单耗排名</div><Echarts5 :echartList="echartList5" /></div><div class="chart chart6"><div class="titles1">热单耗排名</div><Echarts6 :echartList="echartList6" /></div><div class="chart chart7"><div class="titles1">热单耗排名</div><Echarts7 :echartList="echartList7" /></div><div class="chart chart8"><div class="titles1">热单耗排名</div><Echarts8 :echartList="echartList8" /></div></div></div></div>
</template>
<script setup>
import { ElMessageBox, ElMessage, ElLoading } from "element-plus";
import Echarts1 from "./echarts/echarts1.vue";
import Echarts2 from "./echarts/echarts2.vue";
import Echarts3 from "./echarts/echarts3.vue";
import Echarts4 from "./echarts/echarts4.vue";
import Echarts5 from "./echarts/echarts5.vue";
import Echarts6 from "./echarts/echarts6.vue";
import Echarts7 from "./echarts/echarts7.vue";
import Echarts8 from "./echarts/echarts8.vue";
const { proxy } = getCurrentInstance();
import { parseTime } from "@/utils/ruoyi";
import { useRoute } from "vue-router";const echartList1 = ref([{ cityName: '济南', parkArea: 12 }, { cityName: '济南', parkArea: 12 }, { cityName: '济南', parkArea: 12 },{ cityName: '济南', parkArea: 12 }, { cityName: '济南', parkArea: 12 }, { cityName: '济南', parkArea: 12 },{ cityName: '济南', parkArea: 12 }, { cityName: '济南', parkArea: 12 }, { cityName: '济南', parkArea: 12 },{ cityName: '济南', parkArea: 12 }, { cityName: '济南', parkArea: 12 }, { cityName: '济南', parkArea: 12 },{ cityName: '济南', parkArea: 12 }, { cityName: '济南', parkArea: 12 }, { cityName: '济南', parkArea: 12 },{ cityName: '济南', parkArea: 12 }, { cityName: '济南', parkArea: 12 }, { cityName: '济南', parkArea: 12 },{ cityName: '济南', parkArea: 12 }, { cityName: '济南', parkArea: 12 }, { cityName: '济南', parkArea: 12 },
]);
const echartList2 = ref([{ cityName: '济南', parkArea: 12 }, { cityName: '济南', parkArea: 12 }, { cityName: '济南', parkArea: 12 },{ cityName: '济南', parkArea: 12 }, { cityName: '济南', parkArea: 12 }, { cityName: '济南', parkArea: 12 },]);
const echartList3 = ref([{ cityName: '济南', parkArea: 12 }, { cityName: '济南', parkArea: 12 }, { cityName: '济南', parkArea: 12 },{ cityName: '济南', parkArea: 12 }, { cityName: '济南', parkArea: 12 }, { cityName: '济南', parkArea: 12 },]);
const echartList4 = ref([{ cityName: '济南', parkArea: 12 }, { cityName: '济南', parkArea: 12 }, { cityName: '济南', parkArea: 12 }])
const echartList5 = ref([{ cityName: '济南', parkArea: 12 }, { cityName: '济南', parkArea: 12 }, { cityName: '济南', parkArea: 12 },{ cityName: '济南', parkArea: 12 }, { cityName: '济南', parkArea: 12 }, { cityName: '济南', parkArea: 12 }])
const echartList6 = ref([{ cityName: '济南', parkArea: 12 }, { cityName: '济南', parkArea: 12 }, { cityName: '济南', parkArea: 12 }, { cityName: '济南', parkArea: 12 }, { cityName: '济南', parkArea: 12 }, { cityName: '济南', parkArea: 12 }])
const echartList7 = ref([{ cityName: '济南', parkArea: 12 }, { cityName: '济南', parkArea: 12 }, { cityName: '济南', parkArea: 12 }, { cityName: '济南', parkArea: 12 }, { cityName: '济南', parkArea: 12 }, { cityName: '济南', parkArea: 12 }])
const echartList8 = ref([{ cityName: '济南', parkArea: 12 }, { cityName: '济南', parkArea: 12 }, { cityName: '济南', parkArea: 12 }, { cityName: '济南', parkArea: 12 }, { cityName: '济南', parkArea: 12 }, { cityName: '济南', parkArea: 12 }])
const activeName = ref('first')
</script>
<style scoped lang="scss">
.container1 {padding: calc(100vw * 15 / 1920);display: flex;flex-direction: column;/* 设置垂直方向排列 */height: 100%;width: 100%;background-color: #F7F8FA;}.white {background-color: #fff;
}.echartsBot {flex: 1;width: 100%;padding: 0 calc(100vw * 15 / 1920) ;margin-top: calc(100vw * 10 / 1920);
}.titles1 {width: 100%;height: calc(100vw * 20 / 1920);font-size: calc(100vw * 14 / 1920);font-weight: 600;color: #1d2129;line-height: calc(100vw * 20 / 1920);padding-left: 1vh;
}/* 上部分 */
.echartsBot .top {display: flex;height: calc(63% - 50px)
}/* 左边 */
.echartsBot .left {width: 46%;display: flex;flex-direction: column;margin-right: calc(100vw * 15 / 1920);}/* 中间 */
.echartsBot .middle {width: 27%;// padding: calc(100vw * 15 / 1920);margin-right: calc(100vw * 15 / 1920);border-radius: 4px 4px 4px 4px;border: 1px solid rgba(61, 61, 61, 0.1);
}/* 右边 */
.echartsBot .right {width: 27%;// padding: calc(100vw * 15 / 1920);border-radius: 4px 4px 4px 4px;border: 1px solid rgba(61, 61, 61, 0.1);
}/* 柱状图 */
.chart {/* 修改为需要的宽度和高度 */// width: 300px;// height: 200px;// padding: calc(100vw * 15 / 1920);}/* 左边的柱状图 */
.echartsBot .left .chart1 {/* 样式设置 */height: calc(50% - calc(100vw * 16 / 1920));margin-bottom: calc(100vw * 10 / 1920);border-radius: 4px 4px 4px 4px;border: 1px solid rgba(61, 61, 61, 0.1);
}.echartsBot .left .chart2 {/* 样式设置 */flex: 1;border-radius: 4px 4px 4px 4px;border: 1px solid rgba(61, 61, 61, 0.1);
}/* 中间的柱状图 */
.echartsBot .middle .chart3 {/* 样式设置 */
}/* 右边的柱状图 */
.echartsBot .right .chart4 {/* 样式设置 */
}/* 下部分 */
.echartsBot .bottom {display: flex;// height: 40%;margin-top: calc(100vw * 15 / 1920); // height: calc(50%- 10px);height: calc(35% - calc(100vw * 19 / 1920));
}/* 底部柱状图 */
.echartsBot .bottom .chart {/* 修改为需要的宽度和高度 */// width: 200px;// height: 150px;
}.echartsBot .bottom .chart5 {/* 样式设置 */flex: 1;height: 100%;margin-right: calc(100vw * 15 / 1920);border-radius: 4px 4px 4px 4px;border: 1px solid rgba(61, 61, 61, 0.1);}.echartsBot .bottom .chart6 {/* 样式设置 */flex: 1;margin-right: calc(100vw * 15 / 1920);height: 100%;border-radius: 4px 4px 4px 4px;border: 1px solid rgba(61, 61, 61, 0.1);
}.echartsBot .bottom .chart7 {/* 样式设置 */flex: 1;margin-right: calc(100vw * 15 / 1920);height: 100%;border-radius: 4px 4px 4px 4px;border: 1px solid rgba(61, 61, 61, 0.1);
}.echartsBot .bottom .chart8 {/* 样式设置 */flex: 1;height: 100%;border-radius: 4px 4px 4px 4px;border: 1px solid rgba(61, 61, 61, 0.1);
}
</style>

具体echarts图

第一个

<template><div id="echarts1"></div>
</template><script setup>
import * as echarts from "echarts";
const emit = defineEmits();const props = defineProps({echartList: {default: [],},
});
const initChart = () => {let xdata = [];let ydata1 = [];let xdataid = [];props.echartList.forEach((item) => {xdata.push(item.cityName);xdataid.push(item.cityId);ydata1.push(item.parkArea);});const machart = echarts.init(document.getElementById("echarts1"));var defaultShowNum = 10; // 默认显示的数据条数var start = 0;var end = Math.min(defaultShowNum, xdata.length) / xdata.length * 100;var option = {tooltip: {trigger: "axis",formatter: '{c}', // 修改为只显示名称和数值backgroundColor: 'rgba(255,255,255,0.8)', // 气泡框背景颜色textStyle: {color: '#333', // 文字颜色fontSize: 14 // 文字大小},position: function (pos, params, el, elRect, size) {return { left: pos[0], top: pos[1] };}, // 设置气泡框的位置在鼠标悬浮的地方padding: [10, 10, 10, 10], // 设置气泡框的内边距extraCssText: 'width: auto; height: auto; text-align: center; line-height: 30px;', // 设置气泡框的宽度、高度、文本居中显示},dataZoom: [{type: 'slider', // 缩放条类型为滑动条show: true, // 显示缩放条start: start, // 根据数据计算的开始位置end: end, // 根据数据计算的结束位置bottom: '5%', // 距离底部的距离height: 5, // 设置高度},{type: 'inside', // 内置缩放条start: start,end: end,},],calculable: true,// legend: {//   // data: ["xxx"],//   left: "left",s//   x: "left",//   top: "0%",//   left: "2%",//   icon: "roundRect",//   itemWidth: 10, // 设置宽度//   itemHeight: 10, // 设置高度// },color: ["#579AFF", "#B1B1F0", "#F7BEBE", '#BDF6E6'],grid: {top: "14sss%",bottom: "10%",left: "1%",right: "1%",containLabel: true,},xAxis: [{type: "category",data: xdata,axisTick: {show: false, // 不显示刻度},},],yAxis: [{type: "value",},],series: [{// name: "城市占比",type: "bar",data: ydata1,barWidth: "35%",//   label: { // 添加标签配置//   show: true, // 显示标签//   position: 'top', // 标签位置为柱子顶部//   formatter: '{c} ', // 标签内容格式为数据加单位// },},],};machart.setOption(option);setTimeout(() => {window.addEventListener("resize", resizeFn);}, 100);const resizeFn = () => {return machart.resize();};machart.on("click", (params) => {if (params.componentType === "series") {const dataIndex = params.dataIndex;const yValue = xdata[dataIndex]; // 获取对应柱子的y值const cidtyid = xdataid[dataIndex]; // 获取对应柱子的y值emit("changedi", yValue, cidtyid);// 在这里你可以对获取到的y值进行其他操作,比如弹窗显示等}});
};
setTimeout(() => {initChart();
}, 800);
defineExpose({initChart,
});
onBeforeUnmount(() => {// 离开页面必须进行移除,否则会造成内存泄漏,导致卡顿window.removeEventListener("resize", initChart);
});
</script><style scoped>
#echarts1 {width: 100%;height: 95%;/* height:    calc(30vh- 10px); */
}
</style>

右边两个

<template><div id="echarts3"></div>
</template><script setup>
import * as echarts from "echarts";
const emit = defineEmits();const props = defineProps({echartList: {default: [],},
});
const initChart = () => {let xdata = [];let ydata1 = [];let xdataid = [];props.echartList.forEach((item) => {xdata.push(item.cityName);xdataid.push(item.cityId);ydata1.push(item.parkArea);});const machart = echarts.init(document.getElementById("echarts3"));var defaultShowNum = 10; // 默认显示的数据条数var start = 0;var end = Math.min(defaultShowNum, xdata.length) / xdata.length * 100;var option = {tooltip: {trigger: "axis",formatter: '{c}', // 修改为只显示名称和数值backgroundColor: 'rgba(255,255,255,0.8)', // 气泡框背景颜色textStyle: {color: '#333', // 文字颜色fontSize: 14 // 文字大小},position: function (pos, params, el, elRect, size) {return { left: pos[0], top: pos[1] };}, // 设置气泡框的位置在鼠标悬浮的地方padding: [10, 10, 10, 10], // 设置气泡框的内边距extraCssText: 'width: auto; height: auto; text-align: center; line-height: 30px;', // 设置气泡框的宽度、高度、文本居中显示},dataZoom: [{type: 'slider',orient: 'vertical', // 设置为垂直方向show: true,start: start,end: end,right: 0, // 距离右侧的距离width: 10, // 设置宽度},{type: 'inside', // 内置缩放条start: start,end: end,},],calculable: true,// legend: {//   // data: ["xxx"],//   left: "left",s//   x: "left",//   top: "0%",//   left: "2%",//   icon: "roundRect",//   itemWidth: 10, // 设置宽度//   itemHeight: 10, // 设置高度// },// color: ["#579AFF", "#B1B1F0", "#F7BEBE", '#BDF6E6'],grid: {top: "5%",bottom: "1%",left: "1%",right: "8%",containLabel: true,},yAxis: [{type: "category",data: xdata.reverse(),axisLine: {show: false, // 隐藏坐标轴线},axisTick: {show: false, // 不显示刻度线},axisLabel: {show: true, // 显示坐标轴标签},},],xAxis: [{type: "value",show: false, // 不显示x轴},],series: [{// name: "城市占比",type: "bar",data: ydata1.reverse(),barWidth: "35%",itemStyle: {color: function (params) {if (params.dataIndex >= xdata.length - 3) {// 最后三条数据if (params.dataIndex === xdata.length - 1) {return '#E96163'; // 设置最后一条数据的颜色} else if (params.dataIndex === xdata.length - 2) {return '#FEA935'; // 设置倒数第二条数据的颜色} else {return '#F0DC5A'; // 设置倒数第三条数据的颜色}} else {return '#579AFF'; // 其他数据的颜色}}},},],};machart.setOption(option);setTimeout(() => {window.addEventListener("resize", resizeFn);}, 100);const resizeFn = () => {return machart.resize();};machart.on("click", (params) => {if (params.componentType === "series") {const dataIndex = params.dataIndex;const yValue = xdata[dataIndex]; // 获取对应柱子的y值const cidtyid = xdataid[dataIndex]; // 获取对应柱子的y值emit("changedi", yValue, cidtyid);// 在这里你可以对获取到的y值进行其他操作,比如弹窗显示等}});
};
setTimeout(() => {initChart();
}, 800);
defineExpose({initChart,
});
onBeforeUnmount(() => {// 离开页面必须进行移除,否则会造成内存泄漏,导致卡顿window.removeEventListener("resize", initChart);
});
</script><style scoped>
#echarts3 {width: 100%;height: 95%;/* height:    calc(30vh- 10px); */
}
</style>

最下面的

<template><div id="echarts8"></div>
</template><script setup>
import * as echarts from "echarts";
const emit = defineEmits();const props = defineProps({echartList: {default: [],},
});
const initChart = () => {let xdata = [];let ydata1 = [];let xdataid = [];props.echartList.forEach((item) => {xdata.push(item.cityName);xdataid.push(item.cityId);ydata1.push(item.parkArea);});const machart = echarts.init(document.getElementById("echarts8"));var defaultShowNum = 10; // 默认显示的数据条数var start = 0;var end = Math.min(defaultShowNum, xdata.length) / xdata.length * 100;var option = {tooltip: {trigger: "axis",formatter: '{c}', // 修改为只显示名称和数值backgroundColor: 'rgba(255,255,255,0.8)', // 气泡框背景颜色textStyle: {color: '#333', // 文字颜色fontSize: 14 // 文字大小},position: function (pos, params, el, elRect, size) {return { left: pos[0], top: pos[1] };}, // 设置气泡框的位置在鼠标悬浮的地方padding: [10, 10, 10, 10], // 设置气泡框的内边距extraCssText: 'width: auto; height: auto; text-align: center; line-height: 30px;', // 设置气泡框的宽度、高度、文本居中显示},dataZoom: [{type: 'slider', // 缩放条类型为滑动条show: true, // 显示缩放条start: start, // 根据数据计算的开始位置end: end, // 根据数据计算的结束位置bottom: 10, // 距离底部的距离height: 5, // 设置高度},{type: 'inside', // 内置缩放条start: start,end: end,},],calculable: true,// legend: {//   // data: ["xxx"],//   left: "left",s//   x: "left",//   top: "0%",//   left: "2%",//   icon: "roundRect",//   itemWidth: 10, // 设置宽度//   itemHeight: 10, // 设置高度// },color: ["#579AFF", "#B1B1F0", "#F7BEBE", '#BDF6E6'],grid: {top: "8%",bottom: "8%",left: "1%",right: "1%",containLabel: true,},xAxis: [{type: "category",data: xdata,axisTick: {show: false, // 不显示刻度},},],yAxis: [{type: "value",},],series: [{// name: "城市占比",type: "bar",data: ydata1,barWidth: "35%",itemStyle: {color: function (params) {// 判断是否为最上面的三个柱子,分别设置为红色、橘色、黄色if (params.dataIndex <= 2) {return params.dataIndex === 0 ? '#E96163' : params.dataIndex === 1 ? '#FEA935' : '#F0DC5A';} else {return '#D9D9D9'; // 设置其他柱子的颜色}}},},],};machart.setOption(option);setTimeout(() => {window.addEventListener("resize", resizeFn);}, 100);const resizeFn = () => {return machart.resize();};machart.on("click", (params) => {if (params.componentType === "series") {const dataIndex = params.dataIndex;const yValue = xdata[dataIndex]; // 获取对应柱子的y值const cidtyid = xdataid[dataIndex]; // 获取对应柱子的y值emit("changedi", yValue, cidtyid);// 在这里你可以对获取到的y值进行其他操作,比如弹窗显示等}});
};
setTimeout(() => {initChart();
}, 800);
defineExpose({initChart,
});
onBeforeUnmount(() => {// 离开页面必须进行移除,否则会造成内存泄漏,导致卡顿window.removeEventListener("resize", initChart);
});
</script><style scoped>
#echarts8 {width: 100%;height: 95%;/* height:    calc(30vh- 10px); */
}
</style>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/498339.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

apache 模式、优化、功能 与 nginx优化、应用

一、I/O模型——Input/Output模型 1.同步/异步 A程序需要调用B程序的某一个功能&#xff0c;A发送一个请求需要B完成一个任务 同步&#xff1a;B不会主动去通知A是否完成需要A自己去问 异步&#xff1a;B会主动通知A是否完成 2.阻塞/非阻塞 A发送一个请求需要B完成一个任务 …

hive报错:FAILED: NullPointerException null

发现问题 起因是我虚拟机的hive不管执行什么命令都报空指针异常的错误 我也在网上找了很多相关问题的资料&#xff0c;发现都不是我这个问题的解决方法&#xff0c;后来在hive官网上与hive 3.1.3版本相匹配的hadoop版本是3.x的版本&#xff0c;而我的hadoop版本还是2.7.2的版本…

简单1步搞定 NET Framework 3.5 ,离线下载

https://download.csdn.net/download/m0_72735063/88889747?spm1001.2014.3001.5503

Redisson限流算法

引入依赖 <dependency><groupId>org.redisson</groupId><artifactId>redisson-spring-boot-starter</artifactId><version>3.12.3</version> </dependency>建议版本使用3.15.5以上 使用 这边写了一个demo示例&#xff0c;定…

给MATLAB安装runtime插件

给MATLAB安装runtime插件&#xff0c;将MATLAB程序打包成exe文件方法 1.查看已安装的MATLAB是否有runtime插件。操作:在command窗口直接输入mcrinstaller。 如果如图上所示&#xff0c;那就是没有。(2019版本以后包括2019一般均没有) 2.下载MATLAB对应子版本的runtime。(很多…

测评ONLYOFFICE 8.0版本:办公利器再升级

测评ONLYOFFICE 8.0版本&#xff1a;办公利器再升级 前言注册使用升级功能速览全新外观设计wordexcelPPTPDF 协作功能强化更强大的功能复杂表单的填写 移动端优化结语 前言 随着科技的不断发展&#xff0c;办公软件在提升用户体验和工作效率方面扮演着越来越重要的角色。作为一…

王者荣耀,急于补齐内容短板

问十个人&#xff0c;有九个人知道《王者荣耀》&#xff1b;但如果再问十个知道《王者荣耀》的人&#xff0c;这款游戏到底讲了一个什么故事&#xff0c;每个角色又有怎样的背景&#xff0c;可能十个人都不知道。 整个新年档口&#xff0c;《王者荣耀》都很忙碌。 1月&#x…

网上申请手机流量卡:便捷、快速、无忧的选择

随着互联网的普及和科技的发展&#xff0c;越来越多的人选择在网上办理各种业务。其中&#xff0c;网上申请手机流量卡成为了一种便捷、快速、无忧的选择。今天小编将详细介绍网上申请手机流量卡的流程和优势&#xff0c;帮助您更好地了解这种新型的办理方式&#xff0c;希望能…

JAVA计算表达式

需求&#xff1a; 1、例如if(score>85){return 1;}else if(score>70){return 2;}else if(score>60){return 3;}else{return 4;}有这一串字符串&#xff0c;要执行这个字符串&#xff0c; 如果score为86分&#xff0c;则能得到1&#xff1b;如果score为30分&#xff…

【Vue3】回顾watch,学习watchEffect

&#x1f497;&#x1f497;&#x1f497;欢迎来到我的博客&#xff0c;你将找到有关如何使用技术解决问题的文章&#xff0c;也会找到某个技术的学习路线。无论你是何种职业&#xff0c;我都希望我的博客对你有所帮助。最后不要忘记订阅我的博客以获取最新文章&#xff0c;也欢…

【记录】成为创作者的第 365 天

机缘 原来 365 天过得这么快&#xff0c;想想一年前的我还只是一个啥都不懂的小白&#xff08;虽然现在懂的也不算多&#xff09;&#xff0c;只能算是刚入门吧。知道 CSDN 这个平台是偶然在朋友圈看到一条有关该平台的博客转发&#xff0c;于是便注册了账号。 还是那句话&am…

归并分治问题练习和题解

文章目录 简介排序数组原理代码 交易逆序对的总数原理代码跑的过程代码 计算右侧小于当前元素的个数原理代码 翻转对代码 简介 大家好,这里是jiantaoyab,这篇文章给大家带来的是归并类型相关的题目练习和解析,涉及到递归的题目大家可以画递归展开图来方便理解,后面的题目有点绕…