文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

怎么用vue-cli3+echarts实现渐变色仪表盘组件封装

2023-06-29 16:59

关注

本篇内容主要讲解“怎么用vue-cli3+echarts实现渐变色仪表盘组件封装”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用vue-cli3+echarts实现渐变色仪表盘组件封装”吧!

效果预览

怎么用vue-cli3+echarts实现渐变色仪表盘组件封装

思路

使用两个仪表盘叠加,起始角度一样,底部仪表盘结束角度固定不变
2、通过props传入数据
3、计算在上层的仪表盘的结束角度并赋值

代码

<template>  <div class="gauge">    <div class="gauge__bottom" ref="bottomGauge"></div>    <div class="gauge__top" ref="topGauge"></div>    <div class="gauge__label">数据占比</div>    <div class="gauge__title">{{ this.gaugeData.gaugeTitle }}</div>  </div></template><script>import echarts from "echarts";export default {  name: "gauge",  props: ["gaugeData"],//传入的数据  data() {    return {      bottomOption: {        series: [          {            name: "",            type: "gauge",            startAngle: "225",            endAngle: "-45",            data: [{ value: 100, name: "" }],            splitNumber: 10,            detail: {              show: false,            },            splitLine: {              show: false,            },            pointer: {              show: false,            },            axisTick: {              show: false,            },            axisLabel: { show: false },            axisLine: {              lineStyle: {                width: 10,                color: [                  [                    1,                    new echarts.graphic.LinearGradient(0, 0, 1, 0, [                      {                        offset: 0,                        // 起始颜色                        color: "#707089",                      },                      {                        offset: 1,                        // 结束颜色                        color: "#707089",                      },                    ]),                  ],                ],              },            },          },        ],      },      topOption: {        series: [          {            name: "业务指标",            type: "gauge",            startAngle: "225",            endAngle: "",            detail: {              formatter: "{value}%",              color: "#01F9FF",              fontSize: 18,              fontFamily: "ZhenyanGB-Regular",              offsetCenter: [0, 0],            },            data: [{ value: "", name: "" }],            splitNumber: 10,            splitLine: {              show: false,            },            pointer: {              show: false,            },            axisTick: {              show: false,            },            axisLabel: { show: false },            axisLine: {              lineStyle: {                width: 10,                color: "",              },            },          },        ],      },    };  },  mounted() {    this.getTopGauge();    this.getBottomGauge();  },  methods: {    getTopGauge() {      const chart = this.$refs.topGauge;      if (chart) {        const myChart = this.$echarts.init(chart, null, { renderer: "svg" });        this.$once("hook:beforeDestroy", function () {          echarts.dispose(myChart);        });        this.topOption.series[0].data[0].value = this.gaugeData.gaugePercent;        this.topOption.series[0].axisLine.lineStyle.color = this.gaugeData.guageColor;        let tmp = 225 - 270 * (this.gaugeData.gaugePercent / 100);        this.topOption.series[0].endAngle = tmp;        const option = this.topOption;        myChart.setOption(option);      }    },    getBottomGauge() {      const chart = this.$refs.bottomGauge;      if (chart) {        const myChart = this.$echarts.init(chart, null, { renderer: "svg" });        this.$once("hook:beforeDestroy", function () {          echarts.dispose(myChart);        });        const option = this.bottomOption;        myChart.setOption(option);      }    },  },};</script><style lang="less">.gauge {  width: 150px;  height: 165px;  position: relative;  &__top {    position: absolute;    top: 0;    left: 0;    width: 100%;    height: 150px;  }  &__bottom {    position: absolute;    top: 0;    left: 0;    width: 100%;    height: 150px;  }  &__label {    position: absolute;    height: 21px;    width: 64px;    background: #0547c9;    border: 1px solid #1e92ff;    border-radius: 11.5px;    border-radius: 11.5px;    bottom: 35px;    left: 50%;    transform: translate(-50%, 0);    font-family: PingFangSC-Regular;    font-size: 8px;    color: #ffffff;    text-align: center;    line-height: 21px;  }  &__title {    font-family: PingFangSC-Medium;    font-size: 14px;    color: #52f9cb;    text-align: center;    position: absolute;    bottom: 5px;    left: 50%;    transform: translate(-50%, 0);  }}</style>

到此,相信大家对“怎么用vue-cli3+echarts实现渐变色仪表盘组件封装”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯