<template> <div id="staff-line" class="container"> <ve-line v-if="isShow" :width='width' :height='height' :judge-width="true" :data="chartData" :extend="extend" :settings="chartSettings"/> </div> </template> <script> export default { name: 'StaffLine', data() { return { isShow: true, height: '0', width: '0', chartSettings: { labelMap: { time: '时间' }, metrics: [], dimension: ['time'] }, extend: { color: ['#0071ff88', '#00afff88', '#00fdc088'], legend: { textStyle: { color: '#cce9ff', fontWeight: 'bold' }, lineStyle: { width: 10 }, data: ['一期主楼', '二期主楼', '录制楼'] }, tooltip: { trigger: 'axis', axisPointer: { type: 'cross', label: { backgroundColor: '#cce9ff' } } }, grid: { left: '1%', right: '2%', bottom: '0%', top: '20%', containLabel: true }, xAxis: { type: 'category', boundaryGap: false, axisLabel: { color: '#cce9ff' } }, yAxis: { position: 'left', type: 'value', axisLabel: { color: '#cce9ff' } }, series: { type: 'line', symbol: 'circle', symbolSize: 6, areaStyle: {}, emphasis: { focus: 'series' } } }, chartData: { columns: [], rows: [] } } }, mounted() { this.height = document.getElementById('staff-line').clientHeight - 10 + 'px' this.width = document.getElementById('staff-line').clientWidth - 10 + 'px' const that = this window.addEventListener('resize', function() { that.reload() }) this.fetchData() }, methods: { async reload() { this.isShow = false await this.$nextTick() this.height = document.getElementById('staff-line').clientHeight - 10 + 'px' this.width = document.getElementById('staff-line').clientWidth - 10 + 'px' this.isShow = true }, // 获取数据 fetchData() { this.chartData.columns = ['time', '一期主楼', '二期主楼', '录制楼'] this.chartSettings.metrics = ['一期主楼', '二期主楼', '录制楼'] this.chartSettings.labelMap = { 'time': '时间' } // 模拟数据 this.chartData.rows = [ { time: '0', '一期主楼': '1345', '二期主楼': '942', '录制楼': '194'}, { time: '1', '一期主楼': '1445', '二期主楼': '1012', '录制楼': '294'}, { time: '2', '一期主楼': '1545', '二期主楼': '1192', '录制楼': '394'}, { time: '3', '一期主楼': '1645', '二期主楼': '1142', '录制楼': '494'}, { time: '4', '一期主楼': '1745', '二期主楼': '1072', '录制楼': '594'}, { time: '5', '一期主楼': '1645', '二期主楼': '912', '录制楼': '494'}, { time: '6', '一期主楼': '1665', '二期主楼': '992', '录制楼': '294'}, { time: '7', '一期主楼': '1635', '二期主楼': '942', '录制楼': '494'}, { time: '8', '一期主楼': '1595', '二期主楼': '922', '录制楼': '394'}, { time: '9', '一期主楼': '1545', '二期主楼': '942', '录制楼': '394'}, { time: '10', '一期主楼': '1445', '二期主楼': '900', '录制楼': '234'}, { time: '11', '一期主楼': '1345', '二期主楼': '1000', '录制楼': '294'}, { time: '12', '一期主楼': '1375', '二期主楼': '800', '录制楼': '394'}, { time: '13', '一期主楼': '1325', '二期主楼': '842', '录制楼': '244'}, { time: '14', '一期主楼': '1345', '二期主楼': '742', '录制楼': '194'}, { time: '15', '一期主楼': '1445', '二期主楼': '642', '录制楼': '184'}, { time: '16', '一期主楼': '1345', '二期主楼': '542', '录制楼': '174'}, { time: '17', '一期主楼': '1545', '二期主楼': '442', '录制楼': '224'}, { time: '18', '一期主楼': '1345', '二期主楼': '542', '录制楼': '194'}, { time: '19', '一期主楼': '1245', '二期主楼': '642', '录制楼': '184'}, { time: '20', '一期主楼': '1215', '二期主楼': '542', '录制楼': '194'}, { time: '21', '一期主楼': '1235', '二期主楼': '442', '录制楼': '164'}, { time: '22', '一期主楼': '1195', '二期主楼': '342', '录制楼': '144'}, { time: '23', '一期主楼': '1145', '二期主楼': '242', '录制楼': '114'} ] } } } </script> <style lang="scss" scoped> .container{ position:relative; width: 100%; height:100%; } </style>