231 lines
7.0 KiB
JavaScript
231 lines
7.0 KiB
JavaScript
// 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;
|
||
}
|
||
}
|
||
})
|