Newer
Older
shipFront / src / views / device / components / guage1.vue
[wangxitong] on 15 Oct 2021 3 KB first commit

<!--suppress ALL -->
<template>
  <Echart
    ref="chart"
    :options="option"
    class="chart-container"
  />
</template>

<script>
  import Echart from '@/common/echart/index'
  export default {
    name: 'Guage1',
    components: { Echart },
    props: {
      rate: {
        type: Number,
        default: 2
      },
      max: {
        type: Number,
        default: 2
      },
      title: {
        type: String,
        default: ''
      }
    },
    data() {
      return {
        option: {
          series: [
            {
              type: 'gauge',
              startAngle: 180,
              endAngle: 0,
              min: 0,
              max: this.max,
              splitNumber: 4,
              axisLine: {
                lineStyle: {
                  width: 10,
                  color: [
                    [1, '#00b7bd']
                  ]
                }
              },
              itemStyle: {
                color: '#00b7bd',
              },
              pointer: {
                icon: 'path://M2090.36389,615.30999 L2090.36389,615.30999 C2091.48372,615.30999 2092.40383,616.194028 2092.44859,617.312956 L2096.90698,728.755929 C2097.05155,732.369577 2094.2393,735.416212 2090.62566,735.56078 C2090.53845,735.564269 2090.45117,735.566014 2090.36389,735.566014 L2090.36389,735.566014 C2086.74736,735.566014 2083.81557,732.63423 2083.81557,729.017692 C2083.81557,728.930412 2083.81732,728.84314 2083.82081,728.755929 L2088.2792,617.312956 C2088.32396,616.194028 2089.24407,615.30999 2090.36389,615.30999 Z',
                length: '70%',
                width: 8,
                offsetCenter: [0, '0%']
              },
              axisTick: {
                distance: -10,
                length: 4,
                lineStyle: {
                  color: '#ffffffaa',
                  width: 2
                }
              },
              splitLine: {
                distance: -10,
                length: 8,
                lineStyle: {
                  color: '#ffffffaa',
                  width: 3
                }
              },
              axisLabel: {
                color: '#ffffffee',
                distance: 10,
                fontSize: 10
              },
              detail: {
                valueAnimation: true,
                formatter: '{value} V\n'+this.title,
                lineHeight: 15,
                height: 15,
                color: 'auto',
                fontSize: 15,
                color: '#fff',
                offsetCenter: [0, '40%']
              },
              data: [
                {
                  value: 70
                }
              ]
            }
          ]
        },
      }
    },
    watch: {
      rate(newVal) {
        this.option.series[0].data[0].value = newVal
          this.refreshChart()
        }
    },
    mounted() {
      this.refreshChart()
    },
    methods: {
      refreshChart() {
        this.option.series[0].data[0].value = this.rate
      }
    }
  }
</script>

<style rel="stylesheet/scss" lang="scss" scoped>
  .chart-container{
    width: 100%;
    height:100%;
  }
</style>