zoukankan      html  css  js  c++  java
  • vue中echarts自适应

    <template>
      <div :style="{ height: this.echartHeight }">
        <div
          v-if="echartsBarData.length"
          id="myCharts"
          :style="{  '100%', height: '100%' }"
          ref="myChartsBar"
        ></div>
        <empty v-else />
      </div>
    </template>
    
    <script>
    import empty from "../empty";
    import { initEchartBar, tooltip } from "./initEchartBar";
    export default {
      components: {
        empty,
      },
      props: {
        // 判断是哪个页面
        fileName: {
          type: String,
          default: "",
        },
        // echarts  title
        echartTitleCon: {
          type: String,
          default: "",
        },
        // yName,y轴的名字
        yName: {
          type: String,
          default: "",
        },
        // 获取的图标数据
        echartsBarData: {
          type: Array,
          default: [],
        },
        // 是否显示dataZoom
        isshowDataZoom: Boolean,
        // echarts的高
        echartHeight: null,
      },
    
      data() {
        return {
           chart: null,
        };
      },
      mounted() {
        this.drawLine();
          // 绑定监听事件
        window.addEventListener('resize', this.resizeHandler)
      },
      beforeDestroy() { // 清理工作 避免内存泄漏
        // 销毁监听事件
        window.removeEventListener('resize', this.resizeHandler)
    	// 销毁 Echarts 实例
        this.chart.dispose()
      },
      methods: {
        // Echarts 的 resize 方法
        resizeHandler() {
          this.chart.resize()
        },
        computedPosition(length, xArraylength) {
          console.log(length)
          console.log(xArraylength)
          if (xArraylength >= 7) {
            return length <= 7
              ? (this.end = 100)
              : (this.end = 100 - Math.floor((100 / length) * 100));
          } else {
            return 100;
          }
        },
        drawLine() {
          initEchartBar(this.echartsBarData, this.fileName).then((chartsData) => {
            // 基于准备好的dom,初始化echarts实例
            if (JSON.stringify(this.$refs) !== "{}") {
              this.chart = this.$echarts.init(this.$refs.myChartsBar);
              // 绘制图表
              let options = {
                title: {
                  text: this.echartTitleCon, //图表顶部的标题
                  show: this.echartTitleCon ? true : false,
                  left: "center",
                },
                grid: {
                  left: 30,
                  right: 30,
                  bottom: this.isshowDataZoom ? 60 : 10,
                  top: 60,
                  containLabel: true,
                },
                // 如果是白色提示框
                tooltip: {
                  //鼠标悬浮框的提示文字
                  trigger: "axis",
                  extraCssText:
                    "box-shadow: 0px 2px 6px rgba(0, 0, 0, 0.12);opacity: 0.96;",
                  axisPointer: {
                    // 坐标轴指示器,坐标轴触发有效
                    type: "line", // 默认为直线,可选为:'line' | 'shadow'
                    lineStyle: {
                      color: "#FF85C0",
                    },
                  },
                  backgroundColor: "rgba(50, 50, 50, 0.7)",
                  textStyle: {
                    color: "#595959",
                    fontSize: 12,
                  },
                  formatter: (params) => {
                    return tooltip(params, this.echartsBarData);
                  },
                },
                // tooltip: {
                //   //鼠标悬浮框的提示文字
                //   trigger: "axis",
                // },
                color: chartsData.color,
                legend: {
                  data: chartsData.legendData,
                  top: 30,
                },
                xAxis: [
                  {
                    type: "category",
                    data: chartsData.xAxisData,
                    axisTick: {
                      alignWithLabel: true,
                    },
                    axisLine: {
                      lineStyle: {
                        color: "#E5E5E5",
                      },
                    },
                    axisLabel: {
                      show: true,
                      interval: 0,
                      textStyle: {
                        color: "#595959",
                        fontWeight: 400,
                      },
                      margin: 12,
                      rotate: this.isshowDataZoom ? -90 : 0,
                    },
                    nameTextStyle: {
                      color: "#595959",
                      fontSize: 12,
                      align: "center",
                    },
                  },
                ],
                yAxis: {
                  name: this.yName,
                  type: "value",
                  axisLine: {
                    show: false,
                  },
                  axisTick: {
                    show: false,
                  },
    
                  splitLine: {
                    show: true,
                    lineStyle: {
                      color: ["#E5E5E5"],
                       1,
                      type: "dashed",
                    },
                  },
                  axisLabel: {
                    show: true,
                    textStyle: {
                      color: "#595959",
                      fontWeight: 400,
                    },
                  },
                  nameTextStyle: {
                    color: "#8C8C8C",
                    fontFamily: "Microsoft YaHei",
                    fontWeight: 400,
                    fontSize: 10,
                  },
                },
                dataZoom: this.isshowDataZoom
                  ? [
                      {
                        type: "inside",
                        start: 90,
                       end: this.computedPosition(1, this.echartsBarData && this.echartsBarData[0].dateCosList.length ), //xArraylength是x轴返回的数据的个数
                      },
                      {
                        start: 90,
                       end: this.computedPosition(1, this.echartsBarData && this.echartsBarData[0].dateCosList.length ), //xArraylength是x轴返回的数据的个数
                        handleIcon:
                          "M10.7,11.9v-1.3H9.3v1.3c-4.9,0.3-8.8,4.4-8.8,9.4c0,5,3.9,9.1,8.8,9.4v1.3h1.3v-1.3c4.9-0.3,8.8-4.4,8.8-9.4C19.5,16.3,15.6,12.2,10.7,11.9z M13.3,24.4H6.7V23h6.6V24.4z M13.3,19.6H6.7v-1.4h6.6V19.6z",
                        handleSize: "50%",
                        handleStyle: {
                          color: "#fff",
                          shadowBlur: 3,
                          shadowColor: "rgba(0, 0, 0, 0.6)",
                          shadowOffsetX: 2,
                          shadowOffsetY: 2,
                        },
                        bottom: 20,
                      },
                      // {
                      //   show: true,
                      //   type: "inside",
                      //   yAxisIndex: 0,
                      //   filterMode: "empty",
                      //    10,
                      //   height: "100%",
                      //   showDataShadow: false,
                      //   left: "100%",
                      //   start: 0,
                      //   end: this.computedPosition(1, this.echartsBarData && this.echartsBarData[0].dateCosList.length ), //xArraylength是x轴返回的数据的个数
                      // },
                    ]
                  : null,
                series: chartsData.series,
              };
              this.chart.setOption(options);
            }
          });
        },
      },
      watch: {
        yName: function (newValue, oldValue) {
          this.yName = newValue;
          this.drawLine();
        },
        echartsBarData: function (newValue, oldValue) {
          this.echartsBarData = newValue;
          this.drawLine();
        },
      },
    };
    </script>
    

      

  • 相关阅读:
    《转》python学习(5)--数据类型
    《转》python学习(4)对象
    《转》python学习(3)
    《转》python学习--基础下
    《转》python学习--基础上
    python初学总结(二)
    并发编程学习笔记(9)----AQS的共享模式源码分析及CountDownLatch使用及原理
    并发编程学习笔记(8)----ThreadLocal的使用及源码分析
    并发编程学习笔记(7)----线程之间的通信
    并发编程学习笔记(6)----公平锁和ReentrantReadWriteLock使用及原理
  • 原文地址:https://www.cnblogs.com/whlBooK/p/14486043.html
Copyright © 2011-2022 走看看