柱状图顶部添加图标

158 阅读2分钟
<template>
  <div class="echart01" ref="echart-dom02">
  </div>
</template>
<script>
import * as echarts from 'echarts';
export default {
  props: {
    status: {
      type: String
    },
    data: {
      type: Object
    }
  },
  data() {
    return {
      myChart: null,
      option: {
          tooltip: {
            show: false,
            trigger: "axis",
            axisPointer: {
              type: "line",
              lineStyle: {
                opacity: 0,
              },
            },
            formatter: function (prams) {

              return prams[0].name + prams[0].data ;
            },
          },
          legend: {
            data: ["支持方向资产数量统计"],
            top: '0%'
          },
          grid: {
            left: "1%",
            right: "0%",
            bottom: "2%",
            top: "15%",
            height: "85%",
            containLabel: true,
          },
          xAxis: [
          {
            type: 'category',
            splitLine: {
                lineStyle: {
                  color: "#f1f4f9",
                  type: "dashed",
                },
            },
            axisTick: {
              show: false,
            },
            axisLine: {

              lineStyle: {
                color: '#c1c1c2'
              }
            },
            axisLabel: {
              show: true,
              borderType: 'dashed',
              textStyle: {
                color: "#333",
              },
              interval: 0,
              rotate: 30
            },
          },
          {
            type: 'category',
            splitLine: {
              show: false,
                lineStyle: {
                  color: "#f1f4f9",
                  type: "dashed",
                },
            },
            axisTick: {
              show: false,
            },
            axisLine: {
              show: false,
              lineStyle: {
                color: '#c1c1c2'
              }
            },
            axisLabel: {
              show: false,
            },
          }
        ],
          yAxis: [
            {

              type: "value",
              splitLine: {
                show: true,
                lineStyle: {
                  color: "#e0e6f1",
                  type: "dashed",
                },
              },
            },

          ],
          series: [

            {
              xAxisIndex: 1,
              name: "支持方向资产数量统计",
              type: "bar",
              barWidth: "8%",
              label: {
                normal: {
                  show: true,
                  position: "top",
                  textStyle: {
                    color: "#2a314b",
                    fontSize: 12,
                  },
                },
              },
              itemStyle: {
                color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
                    {
                        offset: 0,
                        color: '#00ff9c1a',
                    },
                    {
                        offset: 1,
                        color: '#1EC4C7',
                    },
                ]),
              },
              data: [],
            },
            {
            type: "pictorialBar",
              barWidth: '8',
              barHeight: 2,
              symbol:
                "image://data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEYAAAAKCAYAAAAJtCiTAAAAAXNSR0IArs4c6QAAAchJREFUSEvtVstKw0AUPTePJrhz7dKNS/9AQVQSaje1KKi4VfwYEcSViP6WYF3VZesDtDXGK3cmk0ebaOOu0Gwmua8zc3KHeyjY2uPNpT5iJhAzQEie9MUY1MrM8PwGGg0HzBLDqV/edFbRLpbRKEIURaAMIFfX1MgwGQzf9+C6gpNVzuMpHOUyfsZo+ImvKM6do7D9iQ+p7S94cB0H38ywCegPHdDZXpsvN3qIvyxY5VyUFvsdrtxLNCVAkq4JqfmQcPI/HEGzidF99UEnnV0+X+vhowYxGexkZ+hjlNvrHrPYfQY1XyVvyzD/h6ObzyGg++qBTjttvlh/qkVMzX84M+GaGMbjmwc6bjb5OuzjPaKpr9LMnLTmRoUY1wLuBw7oIAj5dud5TkwyRhQxfRt0GIR805wToyZu2jE26CgI+a41J6ZAjHTM/nbIV8FLyVWqmjh/XVyTN75WT6vfJtlfaEV/+ZTKYqr2pu0MgmMxHgY2aGW1xcuLMb6TGSdOCSIj3pT24ERIkRJbmQbMCaxUg4lNhGKySnSlrEiSTLxWa/oczGDSolOtqS+LEbvEqQyjeYyN9F5lH+N0me5IcZTy0bEWgGFM+AExPMSy0h9Y8AAAAABJRU5ErkJggg==",
              symbolSize: [8, 2],
              symbolOffset: [0, -5],
              itemStyle: {
                normal: {
                  color: "rgba(234, 171, 113, 1)"
                }
              },
              data: [],
              z: 12
            },
          ],
      },
      maxValue: [],
    }
  },
  watch: {
    status: {
      immediate: true,
      handler: function(val) {
        let data = {}
        if(val == '1') {
          data = {
            xdata: this.data.count.xdata,
            ydata: this.data.count.ydata
          }
        }else {
          data = {
            xdata: this.data.amount.xdata,
            ydata: this.data.amount.ydata
          }
        }
        this.option.xAxis[0].data = data.xdata
        this.option.series[0].data = data.ydata
        if(val == '1') {
          this.option.series[0].label.normal.formatter = (prams)=> {
            return prams.value + '个'
          }
          this.option.series[0].itemStyle.color = new echarts.graphic.LinearGradient(0, 0, 0, 1, [              {                  offset: 0,                  color: '#00ff9c1a',              },              {                  offset: 1,                  color: '#1EC4C7',              },          ])
          this.option.yAxis[0].name='单位:个'
          this.option.series[1].symbol = 'image://data:image/webp;base64,UklGRiYCAABXRUJQVlA4WAoAAAAgAAAAFwAABwAASUNDUMgBAAAAAAHIAAAAAAQwAABtbnRyUkdCIFhZWiAH4AABAAEAAAAAAABhY3NwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAA9tYAAQAAAADTLQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlkZXNjAAAA8AAAACRyWFlaAAABFAAAABRnWFlaAAABKAAAABRiWFlaAAABPAAAABR3dHB0AAABUAAAABRyVFJDAAABZAAAAChnVFJDAAABZAAAAChiVFJDAAABZAAAAChjcHJ0AAABjAAAADxtbHVjAAAAAAAAAAEAAAAMZW5VUwAAAAgAAAAcAHMAUgBHAEJYWVogAAAAAAAAb6IAADj1AAADkFhZWiAAAAAAAABimQAAt4UAABjaWFlaIAAAAAAAACSgAAAPhAAAts9YWVogAAAAAAAA9tYAAQAAAADTLXBhcmEAAAAAAAQAAAACZmYAAPKnAAANWQAAE9AAAApbAAAAAAAAAABtbHVjAAAAAAAAAAEAAAAMZW5VUwAAACAAAAAcAEcAbwBvAGcAbABlACAASQBuAGMALgAgADIAMAAxADZWUDggOAAAAPACAJ0BKhgACAA+bSqRRaQioZgEAEAGxKALUWgACdcAAP5vH+rsTz1fl/9uz/9dn/67P+eFUcAA'

        }else {
          this.option.series[0].label.normal.formatter = (prams)=> {
            return prams.value + '万元'
          }
          this.option.series[0].itemStyle.color = new echarts.graphic.LinearGradient(0, 0, 0, 1, [              {                  offset: 0,                  color: '#FFEDDC',              },              {                  offset: 1,                  color: '#FFD857',              },          ])
          this.option.yAxis[0].name='单位:万元'

          this.option.series[1].symbol = 'image://data:image/webp;base64,UklGRioCAABXRUJQVlA4WAoAAAAgAAAAFwAABwAASUNDUMgBAAAAAAHIAAAAAAQwAABtbnRyUkdCIFhZWiAH4AABAAEAAAAAAABhY3NwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAA9tYAAQAAAADTLQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlkZXNjAAAA8AAAACRyWFlaAAABFAAAABRnWFlaAAABKAAAABRiWFlaAAABPAAAABR3dHB0AAABUAAAABRyVFJDAAABZAAAAChnVFJDAAABZAAAAChiVFJDAAABZAAAAChjcHJ0AAABjAAAADxtbHVjAAAAAAAAAAEAAAAMZW5VUwAAAAgAAAAcAHMAUgBHAEJYWVogAAAAAAAAb6IAADj1AAADkFhZWiAAAAAAAABimQAAt4UAABjaWFlaIAAAAAAAACSgAAAPhAAAts9YWVogAAAAAAAA9tYAAQAAAADTLXBhcmEAAAAAAAQAAAACZmYAAPKnAAANWQAAE9AAAApbAAAAAAAAAABtbHVjAAAAAAAAAAEAAAAMZW5VUwAAACAAAAAcAEcAbwBvAGcAbABlACAASQBuAGMALgAgADIAMAAxADZWUDggPAAAABADAJ0BKhgACAA+bSqRRaQioZgEAEAGxKAHYA/AABCKAAD+8Az///3nz9vN+3m/59v//jduNL+ew64AAA=='

        }


        this.option.series[1].data = this.getSymbolData(data.ydata)
        if(this.myChart) {
          this.myChart.setOption(this.option, {notMerge: true});
          this.$forceUpdate()
        }else {
          this.$nextTick(()=> {
            this.init()
          })
        }
      }
    }

  },
  methods: {

    getSymbolData(datas){
        let arr = [];
        for (var i = 0; i < datas.length; i++) {
          arr.push({
            value: datas[i],
            symbolPosition: "end"
          });
        }
        return arr;
    },

    init() {
      var chartDom = this.$refs['echart-dom02']
      this.myChart = echarts.init(chartDom);

      this.option && this.myChart.setOption(this.option);
    }
  }
}
</script>

<style scoped lang="scss">
.echart01 {
  height: 100%;
  width: 100%;
}
</style>