eharts v5版本树形图数据过多展示全部重叠

//组件
<script setup>
  import { provide, ref, watch, onMounted } from 'vue';
  import { use } from 'echarts/core';
  import { CanvasRenderer } from 'echarts/renderers';
  import { BarChart, LineChart, PieChart, RadarChart, TreeChart } from 'echarts/charts';
  import {
    TitleComponent,
    ToolboxComponent,
    TooltipComponent,
    GridComponent,
    LegendComponent,
  } from 'echarts/components';
  import { UniversalTransition } from 'echarts/features';

  import VChart, { THEME_KEY } from 'vue-echarts';

  const props = defineProps({
    option: Object,
    updateOptions: Object,
    height: {
      type: [Number, String],
      default: 400,
    },
    width: {
      type: [Number, String],
      default: '',
    },
    loading: Boolean,
    manualUpdate: {
      type: Boolean,
      default: false,
    },
  });

  provide(THEME_KEY, 'light');

  use([
    CanvasRenderer,
    PieChart,
    LineChart,
    BarChart,
    RadarChart,
    TitleComponent,
    TooltipComponent,
    LegendComponent,
    GridComponent,
    TreeChart,
    ToolboxComponent,
    UniversalTransition,
  ]);

  const vchart = ref(null);
  const setOption = (option) => {
    vchart.value.setOption({
      ...option,
      series: [
        {
          data: option.series[0].data,
        },
      ],
    });
  };

  const getChartRef = () => {
    return vchart.value;
  };
  watch(
    () => props.option,
    () => {
      setOption(props.option);
    },
  );

  defineExpose({
    setOption,
    getChartRef,
  });
</script>

<template>
  <VChart
    ref="vchart"
    :option="option"
    :update-options="updateOptions"
    :style="{ height: `${height}px`, width: width ? `${width}px` : '100%' }"
    autoresize
    :loading="loading"
    :manual-update="manualUpdate"
  />
</template>

<style lang="scss" scoped></style>
//调用


 const initHeight = () => {
    let myChart = chartsRef.value.getChartRef().chart;
    var container = document.getElementById('personnelStructure-wrap');
    var allNode = 0;
    var nodes = myChart._chartsViews[0]._data._graphicEls;
    if (nodes.length < 20) return;
    for (var i = 0, count = nodes.length; i < count; i++) {
      var node = nodes[i];
      if (node === undefined) continue;
      allNode++;
    }
    var height = window.innerHeight;
    var currentHeight = 35 * allNode;
    var newWidth = Math.max(currentHeight, height);
    // container.style.width = window.innerWidth + 'px';
    container.style.height = newWidth + 'px';
    myChart.resize();
  };

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值