用echarts实现圆形进度条

基于vue2的,不过基本能看懂

 this.topThree.push({
                    name: item.typeName,
                value: item.count,
                percent: Math.round((item.count / this.topThreeSum) * 100),
              });
              this.$nextTick(() => {
                this.initAlarmProgress("alarm-progress" + index, index, {
                  name: item.typeName,
                  value: item.count,
                  sum: this.topThreeSum,
                  percent: isNaN(
                    Math.round((item.count / this.topThreeSum) * 100)
                  )
                    ? 0
                    : Math.round((item.count / this.topThreeSum) * 100),
                  strokeColor:
                    index == 0 ? "#147AD6" : index == 1 ? "#5CE5D7" : "#4E68E9",
                });
              });
 initAlarmProgress(id, index, data) {
      const dashbordOne = document.getElementById(id);
      if (dashbordOne) {
        this.myChartProgress[index] = echarts.init(dashbordOne);
        let option;
        option = this.initOneAlarmProgress(data);
        this.myChartProgress[index].setOption(option);
      }
    }
//核心关键代码
initOneAlarmProgress(data) {
      let option = {
        grid: {
          top: "0",
          left: "0",
          right: "0",
          bottom: "0",
          containLabel: true,
        },
        series: [
          {
            name: "Pressure",
            type: "gauge",
            detail: {
              // formatter: "{value}",
              formatter: (params) => {
                return Math.round((params / 100) * this.topThreeSum);
              },
              offsetCenter: ["0", "5%"],
              textStyle: {
                fontSize: 24,
                fontWeight: "bold",
                color: "#fff",
              },
            },
            startAngle: 90,
            endAngle: -360,
            pointer: {
              show: false,
            },
            progress: {
              show: true,
              overlap: false,
              roundCap: true,
              clip: false,
              itemStyle: {
                borderWidth: 2,
                borderColor: data.strokeColor,
                color: data.strokeColor,
              },
            },
            axisLine: {
              lineStyle: {
                width: 12,
              },
            },
            splitLine: {
              show: false,
              distance: 0,
              length: 10,
            },
            axisTick: {
              show: false,
            },
            //刻度
            axisLabel: {
              show: false,
              distance: 50,
            },
            data: [
              {
                value: data.percent,
              },
            ],
          },
        ],
      };
      return option;
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值