2

实现效果:
实现图表的二次封装以及表格的自由拖动,缩放功能
图片描述
图片描述

先贴出两个组件的地址:
vue-draggable-resizable-gorkys

v-chart

图标的二次封装
这里我们先做一个简单的封装
比如标题+图表的形式📈

  <div class="chartcontainer">
    <div>{{diyposition.title}}</div>
    <ve-line :data="chartData[0]" width="100%" height="100%" :judge-width="true" ref="mychart" :colors="colors"></ve-line>
  </div>

尤其说明一下这里的:judge-width="true"属性
如果不设置这个属性值为true的话 表格很有可能没有办法获取到初始宽度

另外,如果要实现表格宽度根据父组件的宽度自适应的话
我们要使用vue的ref属性
在父组件中监听父组件宽度的变化
一旦监听到宽度发生了变化,就调用子组件的方法

this.$refs.mychart.echarts.resize();

这样就能结合我们的vue-draggable-resizable-gorkys组件
实现图表的宽高自适应

关于图表的配色
我们可以自己定义一个颜色组:

  colors: [
        "#61a0a8",
        "#d48265",
        "#91c7ae",
        "#749f83",
        "#ca8622",
        "#bda29a",
        "#6e7074",
        "#546570",
        "#c4ccd3"
      ]
:colors="colors"

这样就可以完成图表的配色了

vue-draggable-resizable-gorkys组件的使用

   <vdr
        :active="false" //确定组件是否应处于活动状态。
        :w="200px"
        :h="200px"
        :resizable="ifresizable"//定义组件应该可以调整大小。
        :draggable="ifdraggable"//定义组件应该是否可拖动。
        v-on:dragging="onDrag"//每当拖动组件时调用。
        v-on:resizing="onResize"//每当组件调整大小时调用。
        @resizestop="onResizstop(index)"
        @dragstop="onDragstop(index)"//每当组件停止拖动时调用。
      >
         <LineChartBlock
          :chartData="charts.blockdata[index].chartdata"
          :diyposition="item"
          :changesizewidth="width"
          :changesizeheight="height"
          :colors="colors"
          v-if="charts.blockdata[index].type==1"
        ></LineChartBlock>
      </vdr>
      

无锡肖奈
186 声望7 粉丝

十八线野生程序猿 前端开发