Commit e03e90ed by yuwei

项目初始化

parent 45945c15
/**
* @param img 压缩图片
* @param width:压缩后宽度
* @param height:压缩后高度
* @param rate:压缩比率,0~1,越小压缩比率越大
* @returns {string} 返回base64
*/
export function compressImg(img, width, height, rate) {
const canvas = document.createElement('canvas')
const ctx = canvas.getContext('2d')
canvas.width = width
canvas.height = height
ctx.drawImage(img, 0, 0, img.naturalWidth, img.naturalHeight, 0, 0, width, height)
return canvas.toDataURL('image/png', rate)
}
...@@ -28,7 +28,7 @@ ...@@ -28,7 +28,7 @@
取消 取消
</el-button> </el-button>
</div> </div>
<div class="widget-right-wrapper"> <div class="widget-right-wrapper" id="boardWrapper">
<grid-layout <grid-layout
:layout.sync="layout" :layout.sync="layout"
:col-num="24" :col-num="24"
...@@ -74,6 +74,8 @@ import { getDataBoard, buildDataBoard } from '@/api/visual/databoard' ...@@ -74,6 +74,8 @@ import { getDataBoard, buildDataBoard } from '@/api/visual/databoard'
import { listDataChart, getDataChart, dataParser } from '@/api/visual/datachart' import { listDataChart, getDataChart, dataParser } from '@/api/visual/datachart'
import VueGridLayout from 'vue-grid-layout' import VueGridLayout from 'vue-grid-layout'
import ChartPanel from '../datachart/components/ChartPanel' import ChartPanel from '../datachart/components/ChartPanel'
import html2canvas from 'html2canvas'
import { compressImg } from '@/utils/image-compress'
export default { export default {
name: 'DataBoardBuild', name: 'DataBoardBuild',
...@@ -105,7 +107,8 @@ export default { ...@@ -105,7 +107,8 @@ export default {
charts.forEach(function(item, index, arr) { charts.forEach(function(item, index, arr) {
_this.parserChart(item) _this.parserChart(item)
}) })
this.charts = charts this.dataBoard.charts = JSON.parse(JSON.stringify(charts))
this.charts = JSON.parse(JSON.stringify(charts))
} }
}) })
}, },
...@@ -163,11 +166,15 @@ export default { ...@@ -163,11 +166,15 @@ export default {
}, },
handleReset() { handleReset() {
this.layout = this.dataBoard.boardConfig ? JSON.parse(JSON.stringify(this.dataBoard.boardConfig.layout)) : [] this.layout = this.dataBoard.boardConfig ? JSON.parse(JSON.stringify(this.dataBoard.boardConfig.layout)) : []
this.charts = JSON.parse(JSON.stringify(this.dataBoard.charts))
this.dataChartList.forEach(function(item, index, arr) {
this.$set(item, 'disabled', false)
})
}, },
handleSubmit() { handleSubmit() {
const data = { const data = {
id: this.dataBoard.id, id: this.dataBoard.id,
boardThumbnail: undefined, boardThumbnail: this.dataBoard.boardThumbnail,
boardConfig: { boardConfig: {
layout: this.layout layout: this.layout
} }
...@@ -184,6 +191,14 @@ export default { ...@@ -184,6 +191,14 @@ export default {
}, },
handleResize(i, newH, newW, newHPx, newWPx) { handleResize(i, newH, newW, newHPx, newWPx) {
this.$refs[`charts${i}`][0].$children[0].$emit('resized') this.$refs[`charts${i}`][0].$children[0].$emit('resized')
},
generatorImage() {
html2canvas(document.getElementById('boardWrapper')).then(canvas => {
const image = new Image()
image.src = canvas.toDataURL('image/png')
const dataURL = compressImg(image, 250, 150, 0.5)
this.$set(this.dataBoard, 'boardThumbnail', dataURL)
})
} }
} }
} }
......
...@@ -86,7 +86,7 @@ ...@@ -86,7 +86,7 @@
<el-tabs type="card"> <el-tabs type="card">
<el-tab-pane label="图表预览"> <el-tab-pane label="图表预览">
<div class="widget-center-pane-chart"> <div class="widget-center-pane-chart">
<chart-panel id="chartPanel" :chart-schema="widget" :chart-data="[]" /> <chart-panel id="chartPanel" ref="chartPanel" :chart-schema="widget" :chart-data="[]" />
</div> </div>
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="查询脚本"> <el-tab-pane label="查询脚本">
...@@ -139,6 +139,7 @@ import draggable from 'vuedraggable' ...@@ -139,6 +139,7 @@ import draggable from 'vuedraggable'
import chartTypes from '@/utils/visual-chart' import chartTypes from '@/utils/visual-chart'
import ChartPanel from './components/ChartPanel' import ChartPanel from './components/ChartPanel'
import html2canvas from 'html2canvas' import html2canvas from 'html2canvas'
import { compressImg } from '@/utils/image-compress'
export default { export default {
name: 'DataChartBuild', name: 'DataChartBuild',
...@@ -252,11 +253,12 @@ export default { ...@@ -252,11 +253,12 @@ export default {
}, },
changeChart(chart) { changeChart(chart) {
this.widget.chartType = chart this.widget.chartType = chart
console.log(this.widget)
}, },
generatorImage() { generatorImage() {
html2canvas(document.getElementById('chartPanel')).then(canvas => { html2canvas(document.getElementById('chartPanel')).then(canvas => {
const dataURL = canvas.toDataURL('image/png') const image = new Image()
image.src = canvas.toDataURL('image/png')
const dataURL = compressImg(image, 250, 150, 0.5)
this.$set(this.dataChart, 'chartThumbnail', dataURL) this.$set(this.dataChart, 'chartThumbnail', dataURL)
}) })
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment