<template>  <div style="margin-bottom: 0.5rem">    <div      v-if="chartData && chartData.length > 0"      style="height: 1.98rem"      :id="chartId"      v-on-echart-resize    ></div>    <div      style="height: 1.98rem"      v-if="!chartData || !(chartData.length > 0)"      class="temp-data"    >      <img src="../assets/img/kong1.png" alt="" />      <div>暂无此维度数据</div>    </div>  </div></template><script>const sortNum = new Date().getTime();export default {  props: {    name: "",    chartData: {      type: Array,    },    xData: {      type: Array,    },  },  data() {    return {      myChart: null,      colorList: ["#3DFFCA", "#0EB5FF", "#FBBF00", "#FF6926", "#707070"],    };  },  computed: {    chartId: function () {      return this.name + new Date().getTime();    },  },  /**   * 深度监听 图表生成之后 传定时刷新数据进来 因为数据不能动静传值,所以子组件应用深度监听来监控数据变动   */  watch: {    chartData: {      deep: true,      handler(newVal, oldVal) {        if (this.myChart) {          this.myChart.dispose(); //数据变换 先销毁          this.drawLine();        } else {          this.drawLine();        }      },    },  },  mounted() {    this.drawLine();  },  beforeDestroy() {    if (this.myChart) {      this.myChart.dispose();      this.myChart = null;    }  },  methods: {    drawLine() {      let _this = this;      let dataZoomLength = 100;      if (!this.xData.length || this.xData.length > 8) {        dataZoomLength = 10;      }      //构建数据      let serOpt = [];      for (let i = 0; i < this.chartData.length; i++) {        let target = this.chartData[i];        let item = {          name: target.name,          type: target.type,          data: target.data,          itemStyle: {            normal: {              color: this.colorList[i],              barBorderRadius: [2, 2, 2, 2],              label: {                show: false, //开启显示                position: "top", //在上方显示                textStyle: {                  //数值款式                  color: "#FBBF00",                  fontSize: 8,                },              },            },          },          showBackground: true,          barWidth: 13,          backgroundStyle: {            color: "rgba(0,0,0,0.3)",          },        };        serOpt.push(item);      }      //构建图表      let option = {        tooltip: {          // 鼠标是否能够进入悬浮框          // 触发形式 mousemove, click, none, mousemove|click          triggerOn: `mousemove|click`,          trigger: "axis",          axisPointer: {            // 坐标轴指示器,坐标轴触发无效            type: "shadow", // 默认为直线,可选为:'line' | 'shadow'          },          position: function (point, params, dom, rect, size) {            // 鼠标坐标和提示框地位的参考坐标系是:以外层div的左上角那一点为原点,x轴向右,y轴向下            // 提示框地位            var x = 0; // x坐标地位            var y = 0; // y坐标地位            // 以后鼠标地位            var pointX = point[0];            var pointY = point[1];            // 外层div大小            // var viewWidth = size.viewSize[0];            // var viewHeight = size.viewSize[1];            // 提示框大小            var boxWidth = size.contentSize[0] / 3;            var boxHeight = size.contentSize[1] / 3;            // boxWidth > pointX 阐明鼠标右边放不下提示框            if (boxWidth > pointX) {              x = 5;            } else {              // 右边放的下              x = pointX - boxWidth;            }            // boxHeight > pointY 阐明鼠标上边放不下提示框            if (boxHeight > pointY) {              y = 5;            } else {              // 上边放得下              y = pointY - boxHeight;            }            return [x, y];          },        },        legend: {          // data: ["目标值", "理论值"],          top: "-1%",          left: "5%",          itemWidth: 6,          itemHeight: 6,          textStyle: {            color: "#78D4CE", //更改坐标轴文字色彩            fontSize: 10, //更改坐标轴文字大小          },        },        grid: {          left: "3%",          top: "20%",          right: "5%",          bottom: "0%",          containLabel: true,        },        xAxis: {          type: "category",          data: this.xData,          axisLine: {            lineStyle: {              color: "#0E635E", //更改坐标轴色彩 #0E635E #052626            },          },          axisLabel: {            interval: 0,            rotate: 30, //歪斜            textStyle: {              color: "#78D4CE", //更改坐标轴文字色彩              fontSize: 10, //更改坐标轴文字大小            },          },        },        dataZoom: [          {            type: "inside", //图表下方的伸缩条            show: true, //是否显示            realtime: true, //拖动时,是否实时更新系列的视图            start: 0, //伸缩条开始地位(1-100),能够随时更改            end: dataZoomLength, //伸缩条完结地位(1-100),能够随时更改          },        ],        yAxis: [          {            // name: "",            type: "value",            // min: 0,            // max: 0.14,            nameGap: 35,            splitNumber: 4,            splitLine: {              show: true,              lineStyle: {                type: "dotted",                color: "#0E635E",              },            },            axisLine: {              lineStyle: {                color: "rgba(6, 50, 49, 0.5)", //更改坐标轴色彩#052626              },            },            axisLabel: {              textStyle: {                color: "#78D4CE", //更改坐标轴文字色彩                fontSize: 10, //更改坐标轴文字大小              },            },          },        ],        series: serOpt,      };      // 基于筹备好的dom,初始化echarts实例      if (this.chartId && document.getElementById(this.chartId)) {        //动静存在 找不到问题。临时应用判断        this.myChart = this.$echarts.init(          document.getElementById(this.chartId)        );        // 绘制图表        this.myChart.setOption(option);      }      window.addEventListener("resize", function () {        if (_this.myChart && _this.myChart.resize()) {          _this.myChart.resize();        }      });    },  },};</script><style></style>