如何在vue3实现一个简单的仪表盘

以下是一个在 Vue 3 中带有数据且指针能动态转动的仪表盘示例:

<template>

  <div class="dashboard">

    <svg width="200" height="200">

      <circle cx="100" cy="100" r="90" stroke="gray" stroke-width="4" fill="none" />

      <line

        :x1="100"

        :y1="100"

        :x2="pointerX"

        :y2="pointerY"

        stroke="red"

        stroke-width="4"

      />

    </svg>

    <p>当前数值:{{currentValue}}</p>

  </div>

</template>

<script setup>

import { ref, onMounted } from 'vue';

 

const currentValue = ref(0);

const maxValue = 100;

const radius = 90;

const centerX = 100;

const centerY = 100;

let intervalId;

 

const updatePointer = (value) => {

  const angle = ((value / maxValue) * 2 * Math.PI);

  const pointerX = centerX + Math.sin(angle) * radius;

  const pointerY = centerY - Math.cos(angle) * radius;

  return { pointerX, pointerY };

};

 

onMounted(() => {

  intervalId = setInterval(() => {

    currentValue.value++;

    if (currentValue.value > maxValue) {

      currentValue.value = 0;

    }

    const { pointerX, pointerY } = updatePointer(currentValue.value);

    pointerX.value = pointerX;

    pointerY.value = pointerY;

  }, 100);

});

</script>

 

<style>

.dashboard {

  display: flex;

  justify-content: center;

  align-items: center;

}

</style>

在这个例子中,设置了一个从 0 到 100 的数值,通过定时器不断增加这个数值,然后根据数值计算指针的位置,使指针动态转动。你可以根据实际需求调整最大值、转动速度等参数。

当然也可以用echart来实现

使用 Echarts 可以实现仪表盘。以下是一个使用 Vue 3 和 Echarts 实现仪表盘的示例:

<template>

  <div id="dashboard" style="width: 400px;height:400px;"></div>

</template>

<script setup>

import * as echarts from 'echarts';

const initDashboard = () => {

  const dashboard = echarts.init(document.getElementById('dashboard'));

  const option = {

    series: [

      {

        type: 'gauge',

        startAngle: 180,

        endAngle: 0,

        min: 0,

        max: 100,

        splitNumber: 10,

        axisLine: {

          lineStyle: {

            width: 10,

          },

        },

        pointer: {

          width: 5,

        },

        axisTick: {

          distance: -15,

          length: 2,

          lineStyle: {

            color: 'auto',

          },

        },

        splitLine: {

          distance: -25,

          length: 5,

          lineStyle: {

            color: 'auto',

          },

        },

        title: {

          offsetCenter: [0, '-40%'],

          fontSize: 15,

        },

        detail: {

          offsetCenter: [0, '-25%'],

          fontSize: 15,

          formatter: '{value}%',

        },

        data: [

          {

            value: 50, // 初始值,可以根据实际情况调整

            name: '仪表盘',

          },

        ],

      },

    ],

  };

  dashboard.setOption(option);

};

initDashboard();

</script>

 在上述代码中,使用 Echarts 创建了一个仪表盘图表,你可以通过修改  data  中的  value  值来更新仪表盘的显示数据。同时,你可以根据实际需求调整仪表盘的各种参数,如最大值、最小值、颜色等。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值