// components/safety-pie-chart/index.js import * as echarts from '../../ec-canvas/echarts' Component({ /** * 组件的属性列表 */ properties: { chartId:{ type: String }, data:{ type: Array }, height:{ type: Number } }, observers: { data: function (val) { this.initChart() this.setData({ chartData:val }) }, }, /** * 组件的初始数据 */ data: { ec: { lazyLoad: true }, chart:undefined, chartData:[] }, lifetimes: { created: function(){ //在组件实例刚刚被创建时执行,注意此时不能调用 setData }, attached: function () { //在组件实例进入页面节点树时执行 }, ready: function () { // 在组件在视图层布局完成后执行 this.initChart(); }, detached: function () { // 在组件实例被从页面节点树移除时执行 }, }, /** * 组件的方法列表 */ methods: { initChart(){ var id ='#' + this.data.chartId; this.component = this.selectComponent(id); if(this.component){ this.component.init((canvas, width, height, dpr) => { let chart = echarts.init(canvas, null, { width: width, height: height, devicePixelRatio: dpr }) chart.setOption(this.getData()); return chart; }) } }, getData() { var data = this.data.chartData console.log(data) var yData_1 = [] var yData_2 = [] var xData = [] var legend = ['设计量','应耗量'] var unit = '单位:m³' data.forEach(item =>{ yData_1.push(item.sjQuantity) yData_2.push(item.yesMonitor) xData.push(item.name) }) var option = { tooltip: { trigger: "axis", axisPointer: { type: "shadow", label: { show: true, }, }, }, grid:{ left: "15%", top: "25%", right: "5%", bottom: "12%", }, legend: { data: legend, right: 10, top: 12, textStyle: { color: "#fff", }, itemWidth: 12, itemHeight: 10, // itemGap: 35 }, xAxis: { data: xData, axisLine: { show: true, //隐藏X轴轴线 lineStyle: { color: "#2f4472", width: 1, }, }, axisTick: { show: true, //隐藏X轴刻度 alignWithLabel: true, }, axisLabel: { show: true, textStyle: { color: "#cbdaff", //X轴文字颜色 fontSize: 12, }, interval: 0, }, }, yAxis: { name:unit, nameTextStyle: { //Y轴那么的样式 color: '#42d0ff', fontSize: 12, }, type: "value", axisLabel: { textStyle: { color: "#cbdaff", }, formatter: "{value}", }, splitLine: { lineStyle: { type: "dashed", color: "#2f4472", }, }, axisLine: { show: true, lineStyle: { color: "#2f4472", }, }, }, series: [ { name: legend[0], type: "bar", barWidth: 8, barGap: 2, label: { normal: { show: true, position: "top", color:"#fff" }, }, itemStyle: { normal: { color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [ { offset: 0, color: "rgba(64,124,254,1)", }, { offset: 1, color: "rgba(64,124,254,0.2)", }, ]), }, }, data: yData_1, }, { name: legend[1], type: "bar", barWidth: 8, barGap: 2, label: { normal: { show: true, position: "inside", color:"#fff" }, }, itemStyle: { normal: { color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [ { offset: 0, color: "rgba(25,210,204,1)", }, { offset: 1, color: "rgba(25,210,204,0.2)", }, ]), }, }, data: yData_2, }, ], }; return option; } } })