You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

310 lines
8.5 KiB

7 months ago
<!-- @format -->
<script>
import { defineComponent } from 'vue';
import BaseBar from './BaseGauge.vue';
export default defineComponent({
name: 'SimpleGauge',
extends: BaseBar,
props: {
datas: {
type: Array,
required: true,
},
min: {
type: Number,
required: true,
},
max: {
type: Number,
required: true,
},
progress: {
type: Number,
required: true,
},
label: {
type: String,
default: '',
},
color: {
type: String,
default: '#73FBFD',
},
textColor: {
type: String,
default: '#C0FAFF',
},
},
data() {
return {};
},
computed: {},
created() {},
mounted() {
let optionData = this.optionHandle();
this.setOption(optionData);
this.renderChart();
},
methods: {
optionHandle() {
let _this = this;
let option = {
series: [
{
radius: '80%',
type: 'gauge',
detail: { show: false },
axisLine: {
lineStyle: {
color: [[1, _this.color]],
width: 2,
},
},
axisLabel: {
show: false,
},
splitLine: {
show: false,
},
axisTick: {
show: false,
},
pointer: {
show: false,
},
},
{
type: 'gauge',
min: _this.min,
max: _this.max,
radius: '75%',
splitNumber: 12,
itemStyle: {
color: _this.color,
},
center: ['50%', '50%'],
progress: {
show: true,
width: _this.progress,
itemStyle: {
color: _this.color,
opacity: 0.7,
},
},
axisLine: {
show: false,
},
pointer: {
icon: 'path://M1.6861, 33.5189L1.33874, 1.07101L2.2249, 1.06152L2.57226, 33.5094L1.6861, 33.5189Z,M0.649407, 20.0229L0.760354, 0.860351L3.41895, 0.875744L3.308, 20.0382L0.649407, 20.0229Z',
// keepAspect:true,
// icon:'path://M7.15528, 44.1242C8.9665, 44.1242, 10.4348, 42.656, 10.4348, 40.8447C10.4348, 39.0335, 8.9665, 37.5652, 7.15528, 37.5652C5.34406, 37.5652, 3.87578, 39.0335, 3.87578, 40.8447C3.87578, 42.656, 5.34406, 44.1242, 7.15528, 44.1242ZM7.15528, 48C11.107, 48, 14.3106, 44.7965, 14.3106, 40.8447C14.3106, 36.893, 11.107, 33.6895, 7.15528, 33.6895C3.20353, 33.6895, 0, 36.893, 0, 40.8447C0, 44.7965, 3.20353, 48, 7.15528, 48Z,M6.70801, 0H7.60242V33.9876H6.70801V0Z,M5.81348 0H8.49671V19.2298H5.81348V0Z',
// icon:'path://M7.15528 44.1242C8.9665 44.1242 10.4348 42.656 10.4348 40.8447C10.4348 39.0335 8.9665 37.5652 7.15528 37.5652C5.34406 37.5652 3.87578 39.0335 3.87578 40.8447C3.87578 42.656 5.34406 44.1242 7.15528 44.1242ZM7.15528 48C11.107 48 14.3106 44.7965 14.3106 40.8447C14.3106 36.893 11.107 33.6895 7.15528 33.6895C3.20353 33.6895 0 36.893 0 40.8447C0 44.7965 3.20353 48 7.15528 48Z,M6.70801 0H7.60242V33.9876H6.70801V0Z,M5.81348 0H8.49671V19.2298H5.81348V0Z',
length: '75%',
},
// anchor:{
// show: true,
// size:6,
// icon:'circle',
// itemStyle:{
// color:'#fff'
// }
// },
axisTick: {
show: false,
},
splitLine: {
show: false,
},
axisLabel: {
show: false,
},
detail: {
color: _this.textColor,
fontSize: 26,
fontWeight: 400,
offsetCenter: [0, '70%'],
formatter: function (value) {
// '{80|' + value.toFixed(0) + '}{unit|%}';
return `${value}{unit|${_this.label}}`;
},
rich: {
unit: {
fontSize: 9,
color: _this.textColor,
padding: [0, 0, -15, 3],
},
},
},
data: _this.datas,
},
{
radius: '58%',
type: 'gauge',
detail: { show: false },
axisLine: {
// 坐标轴线
lineStyle: {
// 属性lineStyle控制线条样式
color: [[1, _this.color]],
width: 2,
opacity: 0.2,
},
},
axisLabel: {
show: false,
},
splitLine: {
show: false,
},
axisTick: {
show: false,
},
pointer: {
show: false,
},
},
{
radius: '58%',
type: 'gauge',
detail: { show: false },
axisLine: {
lineStyle: {
color: [[1, _this.color]],
width: 16,
opacity: 0.2,
},
},
axisLabel: {
show: false,
},
splitLine: {
show: false,
},
axisTick: {
show: false,
},
pointer: {
show: false,
},
},
{
//内圆1
type: 'pie',
radius: '25%',
center: ['50%', '50%'],
emphasis: {
disabled: true,
},
animation: false,
itemStyle: {
color: '#6DB9C6',
opacity: 0.2,
label: {
show: false,
},
labelLine: {
show: false,
},
},
label: {
show: false,
},
tooltip: {
show: false,
},
data: [100],
},
{
//内圆1
type: 'pie',
radius: '20%',
emphasis: {
disabled: true,
},
animation: false,
center: ['50%', '50%'],
itemStyle: {
color: '#6DB9C6',
opacity: 0.2,
label: {
show: false,
},
labelLine: {
show: false,
},
},
label: {
show: false,
},
tooltip: {
show: false,
},
data: [100],
},
{
//内圆1
type: 'pie',
radius: ['8%', '4%'],
emphasis: {
disabled: true,
},
animation: false,
center: ['50%', '50%'],
itemStyle: {
color: '#6DB9C6',
opacity: 1,
label: {
show: false,
},
labelLine: {
show: false,
},
},
label: {
show: false,
},
tooltip: {
show: false,
},
data: [100],
},
{
//内圆1
type: 'pie',
radius: '4%',
emphasis: {
disabled: true,
},
animation: false,
center: ['50%', '50%'],
itemStyle: {
color: '#274348',
opacity: 1,
label: {
show: false,
},
labelLine: {
show: false,
},
},
label: {
show: false,
},
tooltip: {
show: false,
},
data: [100],
},
],
};
return option;
},
},
});
</script>