vue-cli 项目中使用 v-chart 及导出 chart 图片


安装:

npm i v-charts echarts -S

组件中使用:

 1 <template>
 2     <div class="app-chart">
 3         <div id="print-content">
 4             <!--用于图标组件-->
 5             <ve-pie :data="chartData" :colors="colors"></ve-pie>
 6             <!--导出的图片box-->
 7             <div ref="box"></div>
 8         </div>
 9         <div class="foot">
 10             <!--打印操作-->
 11             <button type="primary" @click="doPrint">打 印</button>
 12         </div>
 13     </div>
 14 </template>
 15 
 16 <script>
 17     //引入图标组件
 18     import VePie from 'v-charts/lib/pie.common'
 19     
 20     export default {  21         
 22         name: "app-pie",  23         
 24  data(){  25             
 26             return{  27                 
 28                 //图标相关参数(详情见官方文档)
 29  chartData:{  30                             columns: ['日期', '销售量'],  31                             
 32  rows: [  33                                 { '日期': '1月1日', '销售量': 123 },  34                                 { '日期': '1月2日', '销售量': 207 },  35                                 { '日期': '1月3日', '销售量': 167 },  36                                 { '日期': '1月4日', '销售量': 193 },  37  ]  38                             
 39  },  40                        
 41                 //图标样式的配置(相关配置查看官方文档)
 42                 colors:['#19d4ae','#fa6e86']  43  }  44             
 45  },  46         
 47         //注册图标组件
 48  components:{  49  VePie  50  },  51         
 52  methods:{  53             
 54             //打印页面
 55  doPrint(){  56                 
 57                 this.createImage();  58                 
 59                 this.$nextTick(()=>{  60                     
 61                     if(this.$refs.box.innerHTML){  62                         
 63                         let PrintContent = document.getElementById('print-content');  64                         let newContent =PrintContent.innerHTML;  65                         let oldContent = document.body.innerHTML;  66                         document.body.innerHTML = newContent;  67  window.print();  68  window.location.reload();  69                         document.body.innerHTML = oldContent;  70                         return false;  71                         
 72  }  73                     
 74  });  75                 
 76  },  77             
 78             //chart图标导出图片
 79  createImage(){  80                 
 81 // this.$nextTick(()=>{});
 82                 
 83                 const canvas = document.getElementsByTagName('canvas')[0];  84                     
 85                 const box = this.$refs.box;  86                 
 87                 let image = canvas.toDataURL({  88                         type:"png",  89                         pixelRatio: 2,  90                         backgroundColor: '#fff',//不设置此项,导出图片的底色是黑色
 91  });  92                     
 93                 box.innerHTML = '<img src="'+image+'" alt="">';  94  }  95  },  96  }  97 </script>
 98 
 99 <style scoped>
100  @media print { 101         .no-print{ 102  display: none; 103  } 104  } 105 </style>
 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM