74 lines
1.4 KiB
Vue
74 lines
1.4 KiB
Vue
![]() |
<template>
|
||
|
<view class="charts-box">
|
||
|
<qiun-data-charts
|
||
|
type="ring"
|
||
|
:opts="opts"
|
||
|
:canvas2d="true"
|
||
|
:chartData="chartData"
|
||
|
/>
|
||
|
</view>
|
||
|
</template>
|
||
|
|
||
|
<script lang="ts" setup>
|
||
|
import { reactive, ref, watch } from 'vue';
|
||
|
|
||
|
const props = defineProps<{
|
||
|
title?:string,
|
||
|
val?:number,
|
||
|
radius?:number,
|
||
|
position?:string,
|
||
|
chartData?:''
|
||
|
}>()
|
||
|
|
||
|
const chartData = ref({})
|
||
|
const opts = reactive({
|
||
|
rotate: false,
|
||
|
rotateLock: false,
|
||
|
color: ["#1890FF","#91CB74","#FAC858","#EE6666","#73C0DE","#3CA272","#FC8452","#9A60B4","#ea7ccc"],
|
||
|
padding: [5,5,5,5],
|
||
|
dataLabel: true,
|
||
|
enableScroll: false,
|
||
|
legend: {
|
||
|
show: true,
|
||
|
position: props.position,
|
||
|
lineHeight: 25
|
||
|
},
|
||
|
title: {
|
||
|
name: props.title,
|
||
|
fontSize: 18,
|
||
|
color: "#666666"
|
||
|
},
|
||
|
subtitle: {
|
||
|
name: props.val,
|
||
|
fontSize: 25,
|
||
|
color: "#7cb5ec"
|
||
|
},
|
||
|
extra: {
|
||
|
ring: {
|
||
|
customRadius: props.radius,
|
||
|
ringWidth: 20,
|
||
|
activeOpacity: 0.5,
|
||
|
activeRadius: 10,
|
||
|
offsetAngle: 90,
|
||
|
labelWidth: 15,
|
||
|
border: true,
|
||
|
borderWidth: 3,
|
||
|
borderColor: "#FFFFFF"
|
||
|
}
|
||
|
}
|
||
|
})
|
||
|
watch(
|
||
|
() => props.chartData,
|
||
|
(val) => {
|
||
|
chartData.value = val
|
||
|
}
|
||
|
)
|
||
|
</script>
|
||
|
|
||
|
<style lang="scss" scoped>
|
||
|
/* 请根据实际需求修改父元素尺寸,组件自动识别宽高 */
|
||
|
.charts-box {
|
||
|
width: 100%;
|
||
|
height: 300px;
|
||
|
}
|
||
|
</style>
|